C8051F系列单片机USB通信USBXpress函数翻译an169rev1_6
>>>>>C8051F340 USB开发指南<<<<<<
USBXPRESS?编程指南
相关设备
本应用笔记适用于下列设备:
,,,,C8051F320C8051F321CP2101CP2102CP2103
1。简介
Silicon Laboratories的USBXpress则?开发工具包提供了一个完整的主机和设备的软件解决方案Silicon Laboratories的C8051F32x和CP210x设备的通用串行总线(USB)接口。没有USB
协议
离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载
或主机设备驱动程序的专业知识是必需的。相反,一个简单的,高层次的应用程序接口(API),用于提供完整的USB连接主机的软件和设备的固件。
USBXpress则开发工具包包括Windows设备驱动程序,Windows设备驱动程序安装和 卸载程序,主机接口函数库(主机API)在一个Windows动态链接库的形式提供 (DLL)和设备的固件接口函数库(仅C8051F32x器件)。包括设备驱动程序和 安装文件支持微软的Windows98SE/2000/XP。
第1页
>>>>>C8051F340 USB开发指南<<<<<<
2。主机API函数
主机API是Windows动态链接库(DLL)的形式提供。主机接口DLL 通过所提供的设备驱动程序和操作系统的USB协议栈与USB设备通信。 “ 下面是一个列表的主机API函数可用:
()返回连接的设备数量SI_GetNumDevices -
()返回设备描述符SI_GetProductString -
()打开一个设备,并返回一个句柄SI_Open -
()取消挂起的和关闭设备SI_Close -IO
()从设备中读取一个数据块SI_Read -
()写入一个数据块设备SI_Write -
()刷新设备的发送和接收缓冲区SI_FlushBuffers -
()设置读写块超时SI_SetTimeouts -
()获取读写块超时SI_GetTimeouts -
()返回设备的接收队列中的字节数SI_CheckRXQueue -
()设置指定的波特率SI_SetBaudRate -CP210x
()设置指定的波特率分频值SI_SetBaudDivisor - CP210x
()设置设备线控制SI_SetLineControl -CP210x
()设置设备流量控制SI_SetFlowControl - CP210x
()获取设备调制解调器状态SI_GetModemStatus -CP210x
()获取从设备的端口锁存值SI_ReadLatch -CP2103
()设置一个器件的端口锁存值SI_WriteLatch -CP2103
()获取器件型号SI_GetPartNumber -CP210x
()允许低级命令发送到设备驱动程序SI_DeviceIOControl -
在一般情况下,用户启动的目标USB设备(S)调用SI_GetNumDevices的通信。这个调用将返回目标设备的数量。调用时,这个数字是用作范围SI_GetProductString建立一个设备序列号或产品描述字符串列表。
访问设备,它必须首先通过调用打开SI_Open使用从调用确定一个指数SI_GetNumDevices。 SI_Open函数将返回一个处理的是在所有后续的设备访问。数据I / O使用的SI_Write和SI_Read功能。当I / O操作完成后,SI_Close调用设备被关闭。
附加功能提供刷新发送和接收缓冲区(SI_FlushBuffers),设置接收和传输超时(SI_SetTimeouts),检查接收缓冲区的状态(SI_CheckRXQueue)和杂项设备控制(SI_DeviceIOControl)。
对于CP210x设备,功能都可以设置波特率(SI_SetBaudRate);设置波特率除数(SI_SetBaudDivisior);调整,如字长,停止位,奇偶校验(SI_SetLineControl)线控制设置;设置硬件握手,软件握手和调制解调器控制信号(SI_SetFlowControl);并获得调制解调器状态(SI_GetModemStatus)。 CP2103设备提供的附加功能(SI_ReadLatch),并设置
(SI_WriteLatch)设备上可用的额外的GPIO管脚的值。为了区分CP210x设备,功能(SI_GetPartNumber)已经提供了返回部分号码。
这些功能都在下面的章节中详细介绍。类型定义和常量定义在“附录D -定义,从C + +头文件SiUSB.h”。
第2页
>>>>>C8051F340 USB开发指南<<<<<<
2.1. SI_GetNumDevices
描述:该函数返回连接到主机的设备的数量。
支持的设备:C8051F320/ 1,CP2101/2/3
函数原型: SI_STATUS SI_GetNumDevices (LPDWORD NumDevices)
VB6.0:
Public Declare Function SI_GetNumDevices Lib "SiUSBXp.dll" (ByRef lpwdNumDevices As Long) As Integer
参数:1。NumDevices-DWORD变量将包含设备的数量的地址在返回连接。
返回数: SI_STATUS = SI_SUCCESS or
SI_DEVICE_NOT_FOUND or
SI_INVALID_PARAMETER
2.2. SI_GetProductString
说明
关于失联党员情况说明岗位说明总经理岗位说明书会计岗位说明书行政主管岗位说明书
:这个函数返回一个空终止的序列号(S / N)字符串或产品的描述字符串
在DeviceNum通过索引指定的设备。第一个设备指数为0,最后一台设备是由SI_GetNumDevices返回的值 - 1。
支持设备:C8051F320/1,CP2101/2/3
函数原型:
SI_STATUS SI_GetProductString (DWORD DeviceNum, LPVOID DeviceString,DWORD Options)
VB6.0:
Public Declare Function SI_GetProductString Lib "SiUSBXp.dll" (ByVal dwDeviceNum As Long, ByRef
lpvDeviceString As Byte, ByVal dwFlags As Long) As Integer 参数: 1。 DeviceNum-指数的设备产品描述字符串或序号字符串是所需的。
2。 DeviceString-SI_DEVICE_STRING类型的变量将包含一个NULL终止
在返回的设备描述符或序列号字符串
3。Options-DWORD包含标志,以确定是否DeviceString包含一个序列号,
产品说明,供应商ID,产品ID字符串。请参见“附录D-定义从C+
头文件SiUSB.h“为标志。
返回值: SI_STATUS = SI_SUCCESS or
SI_DEVICE_NOT_FOUND or
SI_INVALID_PARAMETER
2.3. SI_Open
描述:打开一个设备(使用设备号由SI_GetNumDevices返回),并返回一个句柄这将被用于后续访问。 适合设备: C8051F320/1, CP2101/2/3
函数原型:
SI_STATUS SI_Open (DWORD DeviceNum, HANDLE *Handle) VB6.0:
Public Declare Function SI_Open Lib "SiUSBXp.dll" (ByVal dwDevice As Long, ByRef cyHandle As Long) As
Integer
第3页
>>>>>C8051F340 USB开发指南<<<<<<
参数:
1。DeviceNum设备的索引。0为第一个,1为第二个,等等
2。Handle 一个设备句柄将被存储的变量。这种处理将使用设备的所有后续访问。 返回值: SI_STATUS = SI_SUCCESS or
SI_DEVICE_NOT_FOUND or
SI_INVALID_PARAMETER
2.4. SI_Close
描述:关闭打开的设备,使用所SI_Open提供的处理,并设置手柄INVALID_HANDLE_VALUE。 适合设备: C8051F320/1, CP2101/2/3
函数原型:
SI_STATUS SI_Close (HANDLE& Handle) VB6.0:
Public Declare Function SI_Close Lib "SiUSBXp.dll" (ByRef cyHandle As Long) As Integer
参数:1。Handle,Handle设备关闭SI_Open(按引用传递)返回。
返回值:SI_STATUS= SI_SUCCESS or
SI_INVALID_HANDLE
2.5. SI_Read
说明:
读取指定的字节数到指定缓冲区和检索的字节数读取。鉴于有效的输入参数,这个函数是阻塞,直到指定的字节数成为可用或发生超时(见“2.8。SI_SetTimeouts”)。
注意:如果超时设置为零,这个功能不会阻止,将立即返回当前设备驱动程序的缓冲区的字节数。这可能是小于所要求的字节数(零字节如果没有可用数据),所以一定要检查读的大小在这种情况下返回值。 函数原型:
SI_STATUS SI_Read (HANDLE Handle, LPVOID Buffer, DWORD NumBytesToRead,
DWORD *NumBytesReturned)
VB6.0:
Public Declare Function SI_Read Lib "SiUSBXp.dll" (ByVal cyHandle As Long, ByRef lpBuffer As Byte,
ByVal dwBytesToRead As Long, ByRef lpdwBytesReturned As Long) As Integer
参数:1。 Handle- Handle设备读取SI_Open返回。
2。Buffer---字符缓冲区读取数据填充的缓冲区地址。
3。 NumBytesToRead--字节数从设备读入缓冲区(0-64 KB)。
4。 NumBytesReturned--地址将包含的字节数,其实一个DWORD读入缓冲区的回报。 返回值:SI_STATUS= SI_SUCCESS或
SI_INVALID_REQUEST_LENGTH或
SI_INVALID_PARAMETER或
SI_RX_QUEUE_NOT_READY或
SI_INVALID_HANDLE或
SI_READ_TIMED_OUT
第4页
>>>>>C8051F340 USB开发指南<<<<<<
2.6. SI_Write
说明:从指定的缓冲区写入指定的字节数的设备。鉴于有效的参数,这个函数是阻塞,直到写成功,失败,或发生超时。写成功时,该设备已接受的所有数据。如果写入失败或发生超时,SI_WRITE_ERROR是返回。
函数原型:
SI_STATUS SI_Write (HANDLE Handle, LPVOID Buffer, DWORD NumBytesToWrite,
DWORD *NumBytesWritten)
VB6.0:
Public Declare Function SI_Write Lib "SiUSBXp.dll" (ByVal cyHandle As Long, ByRef lpBuffer As Byte, ByVal
dwBytesToWrite As Long, ByRef lpdwBytesWritten As Long) As Integer
参数:1。Handle,Handle SI_Open返回的设备地址。
2。Buffer地址字符缓冲区的数据被发送到设备。
3。NumBytesToWrite字节数写入设备(0-4096字节)。
4。NumBytesWritten—一个DWORD将包含实际写入设备的字节数的地址。
返回值: SI_STATUS = SI_SUCCESS or
SI_WRITE_ERROR or
SI_INVALID_REQUEST_LENGTH or
SI_INVALID_PARAMETER or
SI_INVALID_HANDLE
2.7 SI_FlushBuffers
说明:在“F32x设备,这个函数刷新接收USBXpress则设备驱动程序的缓冲区和设备的发送缓冲区。 注:参数2和3都没有效果,任何价值都。通过与'F32x器件一起使用时。此功能在CP210x设备,按照参数2和3。如果参数2(FlushTransmit)是非零,CP210x设备的UART发送缓冲区被刷新。如果参数3(FlushReceive)是非零,CP210x设备的UART接收缓冲区被刷新。如果参数2和3都是非零,那么无论是CP210x设备UART发送缓冲器和UART 接收缓冲区被刷新。
函数原型:
SI_STATUS SI_FlushBuffers (HANDLE Handle, BYTE FlushTransmit, BYTE FlushReceive)
参数:1。Handle—SI_Open返回设备的句柄。
2。 FlushTransmit,设置为一个非零值,刷新CP210x UART发送缓冲器。
3。 FlushReceive设置为一个非零值,刷新接收缓冲器。、
返回值: SI_STATUS = SI_SUCCESS or
SI_INVALID_HANDLE
2.8. SI_SetTimeouts
描述:设置读写超时。
适合设备: C8051F320/1, CP2101/2/3
原型:
SI_STATUS SI_SetTimeouts (DWORD ReadTimeout, DWORD WriteTimeout)
VB6.0:
Public Declare Function SI_SetTimeouts Lib "SiUSBXp.dll" (ByVal dwReadTimeout As Long, ByVal
dwWriteTimeout As Long) As Integer
第5页
>>>>>C8051F340 USB开发指南<<<<<< 参数:
1。 ReadTimeout SI_Read操作超时(以毫秒为单位)。
2。 WriteTimeout SI_Write操作超时(以毫秒为单位)。
返回值: SI_STATUS = SI_SUCCESS
2.9。SI_GetTimeouts
描述:返回当前的读写超时。
函数原型:
SI_STATUS SI_GetTimeouts (LPDWORD ReadTimeout, LPDWORD WriteTimeout)
VB6.0:
Public Declare Function SI_GetTimeouts Lib "SiUSBXp.dll" (ByRef lpdwReadTimeout As Long, ByRef
lpdwWriteTimeout As Long) As Integer 参数:
1。 ReadTimeout SI_Read操作超时(以毫秒为单位)。
2。 WriteTimeout SI_Write操作超时(以毫秒为单位)。
返回值: SI_STATUS = SI_SUCCESS or
SI_INVALID_PARAMETER
2.10。SI_CheckRXQueue
描述:返回接收队列和一个状态值,表示如果出现溢出的字节数(SI_QUEUE_OVERRUN)发生,如果RX队列就绪(SI_QUEUE_READY)阅读。溢出条件的指示后,建议数据传输停止使用SI_FlushBuffers命令的所有缓冲区刷新。
函数原型:
SI_STATUS SI_CheckRXQueue (HANDLE Handle, LPDWORD NumBytesInQueue, LPDWORD QueueStatus)
参数:1。手柄SI_Open返回设备的句柄。
2。 NumBytesInQueue一个DWORD变量的地址,其中包含的字节数目前在返回队列。
3。 QueueStatus一个DWORD变量的地址,其中包含的SI_RX_EMPTY(也SI_RX_NO_OVERRUN),SI_RX_OVERRUN,或SI_RX_READY标志。
返回值: SI_STATUS = SI_SUCCESS or
SI_DEVICE_IO_FAILED or
SI_INVALID_HANDLE or
SI_INVALID_PARAMETER
2.11。SI_SetBaudRate
描述:设置波特率。所支持的波特率列表,请参阅器件数据手册设备。
支持的设备:CP2101/2/3
函数原型:
SI_STATUS SI SetBaudRate (HANDLE Handle, DWORD dwBaudRate)
参数:1。 HandleSI_Open返回设备的句柄。
2。 dwBaudRate一个DWORD值指定的波特率设置。
返回值: SI_STATUS = SI_SUCCESS or
SI_INVALID_BAUDRATE or
SI_INVALID_HANDLE
第6页
>>>>>C8051F340 USB开发指南<<<<<< 2.12。SI_SetBaudDivisor 说明:设置波特率,直接通过使用特定的分频值。此功能是使用过时;SI_SetBaudRate代替。 支持设备: CP2101/2/3
函数原型:
SI_STATUS SI_SetBaudDivisor (HANDLE Handle, WORD wBaudDivisor)
参数:
1。手柄SI_Open返回设备的句柄。
2。 wBaudDivisor字值,指定设置的波特率除数。
返回值:
SI_STATUS = SI_SUCCESS or
SI_INVALID_HANDLE
第7页