USBXPRESS 程序开发指南
相关设备:
这个程序文档适用于以下设备:
C8051F32x,C8051F34x, C8051F38x, C8051T32x, C8051T62x, CP2101, CP2102, CP2103, CP2104,CP2105
1. 简介
The Silicon Laboratories的USBXpress® 为C8051F32x, C8051F34x, C8051F38x, C8051T32x, 和 C8051T62x USB 微控制器和CP210x通信提了一个完整的主机和设备的软件解决方案.任何USB协议或主机设备驱动程序
需要的专业知识。相反,一个简单的,高层次的应用程序接口(API)为主机软件
和设备固件是用来提供完整的USB连接。
USBXpress 开发工具包包含Windows 设备驱动、Windows 设备驱动安装程序、主机接口、动态链接库、设备固件。
2. 主机API函数
主机函数在动态链接库里提供。主机接口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_SetBreak() - 设置CP210x设备的指定状态
SI_ReadLatch() - 获取CP210x设备的端口的锁存值
SI_WriteLatch() -设置CP210x设备的端口的锁存值
SI_GetPartNumber() - 获取CP210x设备的型号
SI_DeviceIOControl() -允许低级命令发送到设备驱动程序
SI_GetDLLVersion() - 取得当前正在使用的DLL版本
SI_GetDriverVersion() - 取得USBXpress驱动程序的版本
通常,用户使用SI_GetNumDevices()函数开起设备进行通信。主个调用将返回目标设备的数量。这个数字用在SI_GetProductString()函数上,用来返回一个设备的字符串形式的序列号。
要成功访问设备,必须通过SI_GetProductString()返回的数据做为参数传递给SI_Open()函数来找开设备。SI_Open()函数返回设备的句柄,为函数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/4/5附加功能函数取得设备端口(SI_ReadLatch) 设置端口(SI_WriteLatch)设备上额外的可用GPIO馆脚值,通过SI_GetPartNumber()返回的号码区分设备。
这些函数的功能将在下章详细介绍。类型与常量定义在”附录C++头文件SiUSBXp.h”中。
2.1 SI_GetNumDevices
描述:这个函数返回设备的链接数
支持设备: C8051F320/1/6/7,C8051F340/1/2/3/4/5/6/7/8/9/A/B/C/D,
C8051F380/1/2/3/4/5/6/7, C8051T320/1/2/3/6/7, C8051T620/1/2/3,CP2101/2/3/4/5
原型:SI_STATUS SI_GetNumDevices(LPDWORDNumDevices)
参数:1。NumDevices:一个DWORD类型的变量,返回的是存放设备数变量的地址
返回值: SI_STATUS=SI_SUCCESSor SI_DEVICE_NOT_FOUND or SI_INVALID_PARAMETER
2.2 SI_GetProductString
描述:这个函数返回一个不为空的序列号字符串或产品描述字符串,使用SI_GetNumDevices函数返回的数据。通过参数DeviceNum指定设备。第一个设备指数为0,
最后一台设备是由SI_GetNumDevices返回的值 - 1。
支持设备:C8051F320/1/6/7, C8051F340/1/2/3/4/5/6/7/8/9/A/B/C/D,
C8051F380/1/2/3/4/5/6/7,C8051T320/1/2/3/6/7, C8051T620/1/2/3, CP2101/2/3/4/5
原型:SI_STATUS SI_GetProductString(DWORD DeviceNum,LPVOID DeviceString,DWORDOption)
参数:1 DeviceNum:设备唯一序列号或描述字符串
2 DeviceString:SI_DEVICE_STRING类型,返回一个设备描述符或字符串或一个代表终止的NULL。
3 Options:DWORD类型的标志,以确定是否在DeviceString中包含一个序列号。产品说明,供应商ID,产品ID字符串。请参见“附录D-定义从C++
头文件SiUSBXp.h“中的标志。
返回值:SI_STATUS = SI_SUCCESS or
SI_DEVICE_NOT_FOUND or
SI_INVALID_PARAMETER
2.3 SI_Open
描述:为以后访问打开一个设备(使用SI_GetNumDevices函数返回的设备号)并返回一个设备句柄。
支持的设备:C8051F320/1/6/7,C8051F340/1/2/3/4/5/6/7/8/9/A/B/C/D,
C8051F380/1/2/3/4/5/6/7, C8051T320/1/2/3/6/7, C8051T620/1/2/3,CP2101/2/3/4/5
原型:SI_STATUS SI_Open (DWORDDeviceNum, HANDLE *Handle)
参数:1 DeviceNum:设备的索引,从0开始
2 Handle:一个存放设备句柄的指针变量,为后来的访问提供的句柄
返回值:SI_STATUS = SI_SUCCESSor
SI_DEVICE_NOT_FOUND or
SI_INVALID_PARAMETER or
SI_GLOBAL_DATA_ERROR
2.4 SI_Close
描述:关闭一个通过SI_Open函数打开的设备句柄。设置句柄的值为INVALID_HANDLE_VALUE;
支持的设备:C8051F320/1/6/7,C8051F340/1/2/3/4/5/6/7/8/9/A/B/C/D,
C8051F380/1/2/3/4/5/6/7,C8051T320/1/2/3/6/7, C8051T620/1/2/3, CP2101/2/3/4/5
原型:SI_STATUS SI_Close (HANDLEHandle)
参数:1 Handle:SI_Open函数返回的句柄
返回值:SI_STATUS = SI_SUCCESSor
SI_INVALID_HANDLE or
SI_SYSTEM_ERROR_CODE or
SI_GLOBAL_DATA_ERROR
2.5 SI_Read
描述:从缓冲区中读取可用的字节并检索读取的字节数(可以小于要求的字节数)。如果OVERLAPPED的对象为NULL,则同步返回(这个是默认的情况)但不会阻止系统执行。如果OVERLAPPED对象初始化成功则立即返回。如果读取完成则状态将变成SI_SUCCESS,如果I/O发生问题则返回STATUS_IO_PENDING。如果返回的状态为STATUS_IO_PENDING,则OVERLAPPED对象可能使用WaitForSingleObject()函数等待,检索数据或取消使用GetOverlappendResult()和Cancello()函数(微软MSDN上有记载)。这个功能允许多个读取同时发生。如果调用SI_Read函数数有任何可用数据,它都会返回,以便检查NumBytesReturned,以确定返回请求的数据。为了确保SI_Read()函数返回的字节数据正确,请使用SI_CheckRxQueue()函数进行检查。
支持设备:C8051F320/1/6/7,C8051F340/1/2/3/4/5/6/7/8/9/A/B/C/D,
C8051F380/1/2/3/4/5/6/7,C8051T320/1/2/3/6/7, C8051T620/1/2/3, CP2101/2/3/4/5
原型:SI_STATUS SI_Read (HANDLE Handle, LPVOID Buffer, DWORDNumBytesToRead,DWORD *NumBytesReturned, OVERLAPPED* o = NULL)
参数:1 Handle:SI_Open函数返回的设备句柄。
2 Buffer:存放读取数据的字符字节数组的地址。
3 NumBytesToRead:读取设备的数据缓冲区字节数(0-64KB)
4 NumBytesReturned:DWORD类型的变量地址,存放的是读入缓冲区的字节数
5 (Optional):可用于异步读取的OVERLAPPED对象的地址
返回值:SI_STATUS = SI_SUCCESSor
SI_READ_ERROR or
SI_INVALID_PARAMETER or
SI_INVALID_HANDLE or
SI_SI_READ_TIMED_OUT or
SI_IO_PENDING or
SI_SYSTEM_ERROR_CODE or
SI_INVALID_REQUEST_LENGTH or
SI_DEVICE_IO_FAILED
2.6 SI_Write
描述:往设备的缓冲区写入特定的字节数。如果异步对象OVERLAPPED设为NULL则这个函数同步写(默认设置) 但不会阻止系统的执行。就象SI_Read()中描述的初始化OVERLAPPED对象一样。
支持设备:C8051F320/1/6/7,C8051F340/1/2/3/4/5/6/7/8/9/A/B/C/D,
C8051F380/1/2/3/4/5/6/7, C8051T320/1/2/3/6/7,C8051T620/1/2/3, CP2101/2/3/4/5
原型:SI_STATUS SI_Write (HANDLEHandle, LPVOID Buffer, DWORD NumBytesToWrite,DWORD *NumBytesWritten, OVERLAPPED*o = NULL)
参数:1 Handle:SI_Open函数返回的句柄。
2 Buffer:要发送到设备的字节数组的地址。
3 NumBytesToWrite:写到设备中的字节数(0-4096 bytes)
4 NumBytesWritten:实际写入到设备中的字节数组的地址(DWORD类型)
5 (Optional):异步写的OVERLAPPED对象的地址。
返回值:SI_STATUS = SI_SUCCESSor
SI_WRITE_ERROR or
SI_INVALID_REQUEST_LENGTH or
SI_INVALID_PARAMETER or
SI_INVALID_HANDLE or
SI_WRITE_TIMED_OUT or
SI_IO_PENDING or
SI_SYSTEM_ERROR_CODE or
SI_DEVICE_IO_FAILED
2.7 SI_FlushBuffers
描述:在’F32x/F34x’设备上,这个函数刷新USBXpress设备的接收缓冲区与设备的发送缓冲区。注:使用’F32x/F34x’时参数2与3不起作用。
在CP210x设备上,参数2与3起作用。如果参数2 为非零值,CP210x设备的UART发送缓冲区被刷新;如果参数3为非零值,CP210x设备的UART接收缓冲区被刷新。如果参数2和3都为非零值,则CP210x设备的UART接收与发送缓冲区都被刷新。
支持设备:C8051F320/1/6/7,C8051F340/1/2/3/4/5/6/7/8/9/A/B/C/D,
C8051F380/1/2/3/4/5/6/7, C8051T320/1/2/3/6/7, C8051T620/1/2/3,CP2101/2/3/4/5
原型:SI_STATUS SI_FlushBuffers(HANDLE Handle, BYTE FlushTransmit,
BYTE FlushReceive)
参数:1 Handle:SI_Open函数返回的设备名柄。
2 FlushTransmit:为非零值刷新CP210xUART的发送缓冲区。
3 FlushReceive:为非零值刷新设备的接收缓冲区。
返回值:SI_STATUS = SI_SUCCESS or
SI_INVALID_HANDLE or
SI_SYSTEM_ERROR_CODE
2.8 SI_SetTimeouts
描述:设置读取与写入的超时时间。超时间被用在SI_Read与SI_Write函数数中,当函数被同步调用时。(异步函数OVERLAPPED被设为NULL的情况)。默认的超时时间是INFINITE(0xFFFFFFFE),但它可以被设置成0x0与0xFFFFFFFF之间的任意毫秒数。
支持的设备:C8051F320/1/6/7, C8051F340/1/2/3/4/5/6/7/8/9/A/B/C/D,
C8051F380/1/2/3/4/5/6/7, C8051T320/1/2/3/6/7,C8051T620/1/2/3, CP2101/2/3/4/5
原型:SI_STATUS SI_SetTimeouts (DWORDReadTimeout, DWORD WriteTimeout)
参数:1 ReadTimeout:SI_Read函数的超时时间(毫秒数)
2 WriteTimeout:SI_Write函数的超时时间(毫秒数)
返回值:SI_STATUS = SI_SUCCESSor
SI_DEVICE_IO_FAILED
2.9 SI_GetTimeouts
描述:返回当前读取与写入的超时时间。如果值为0xFFFFFFFF(INFINITE) 则代表无限等待,否则超时时间为指定的毫秒数。
支持设备:C8051F320/1/6/7,C8051F340/1/2/3/4/5/6/7/8/9/A/B/C/D,
C8051F380/1/2/3/4/5/6/7, C8051T320/1/2/3/6/7, C8051T620/1/2/3,CP2101/2/3/4/5
原型:SI_STATUS SI_GetTimeouts (LPDWORD ReadTimeout, LPDWORD WriteTimeout)
1ReadTimeout:SI_Read函数超时时间(毫秒数)
2WriteTimeOut:SI_Write函数超时时间(毫秒数)
返回值:SI_STATUS = SI_SUCCESSor
SI_INVALID_PARAMETER or
SI_DEVICE_IO_FAILED
2.10 SI_CheckRXQueue
描述:返回接收队列中的字节数和状态值,标明如果RX队列就绪(SI_QUEUE_READY)是否发生溢出(SI_QUEUE_OVERRUN) 。如果发生溢出,建议数据传输停止,使用SI_FlushBuffers命令刷新所有缓冲区。
支持设备:C8051F320/1/6/7,C8051F340/1/2/3/4/5/6/7/8/9/A/B/C/D,
C8051F380/1/2/3/4/5/6/7,C8051T320/1/2/3/6/7, C8051T620/1/2/3, CP2101/2/3/4/5
原型:SI_STATUS SI_CheckRXQueue(HANDLE Handle, LPDWORD NumBytesInQueue,
LPDWORD QueueStatus)
参数:1 Handle:SI_Open返回的函数句柄。
2 NumBytesInQueue:DWORD类型的地址,是目前在返回的接收队列中包含的字节数
3 QueueStatus:DWORD类型的地址,是SI_RX_EMPTY(SI_RX_NO_OVERRUN),SI_RX_OVERRUN,SI_RX_READY标志。
返回值:SI_STATUS = SI_SUCCESSor
SI_DEVICE_IO_FAILED or
SI_INVALID_HANDLE or
SI_INVALID_PARAMETER
2.11 SI_SetBaudRate
描述:设置波特率。所支持的波特率列表请参阅设备数据手册。
支持的设备:CP2101/2/3/4/5
原型:SI_STATUS SI_SetBaudRate (HANDLE Handle, DWORD dwBaudRate)
参数:1 Handle:SI_Open返回的设备句柄
2dwBaudRate:DWORD类型的值,指定的波特率的值
返回值:SI_STATUS = SI_SUCCESSor
SI_INVALID_BAUDRATE or
SI_INVALID_HANDLE or
SI_INVALID_PARAMETER or
SI_DEVICE_IO_FAILED
2.12 SI_SetBaudDivisor
描述:使用特定的分频值直接设置波特率
支持的设备:CP2101/2/3/4/5
原型:SI_STATUS SI_SetBaudDivisor (HANDLE Handle, WORD wBaudDivisor)
参数:1 Handle:SI_Open返回的设备句柄。
2wBaudDivisor:指定设置的波特率除数值。
返回值:SI_STATUS = SI_SUCCESSor
SI_INVALID_HANDLE or
SI_INVALID_PARAMETER or
SI_DEVICE_IO_FAILED
2.13 SI_SetLineControl
描述:调整生产线控制设置:字长停止校验位等。请参考设备数据手册,进行有效的设置。
支持的设备:CP2101/2/3/4/5
原型:SI_STATUS SI_SetLineControl (HANDLE Handle, WORD wLineControl)
参数:1 Hanle:SI_Open返回的句柄。
2wLineControl:Word类型变量,所需的生产线控制设置。可能输入的值如下:
Bits 0-3 Numberof Stop bits
0: 1 stopbit;
1: 1.5stop bits;
2: 2 stopbits;
Bits 4-7 Parity
0: None
1: Odd
2: Even
3: Mark
4: Space
Bits 8-15 Numberof bits per word
5,6,7,or 8
返回值:SI_STATUS = SI_SUCCESSor
SI_DEVICE_IO_FAILED or
SI_INVALID_HANDLE or
SI_INVALID_PARAMETER
2.14 SI_SetFlowControl
描述:调整以下的流量控制设置:设置硬件握手,设置软件握手,调制解调器控制信号。可以查看’SiUSBXp.h文件中的头定义’ 对引角进行定义。
支持设备:CP2101/2/3/4/5
原型:SI_STATUS SI_SetFlowControl(HANDLE Handle, BYTE bCTS_MaskCode,
BYTE bRTS_MaskCode, BYTE bDTR_MaskCode, BYTE bDSRMaskCode,
BYTE bDCD_MaskCode, BYTE bFlowXonXoff)
参数:1 Handle:SI_Open返回的设备句柄。
2bCTS_MaskCode:CTS引脚必须为如下值:SI_STATUS_INPUT 或者SI_HANDSHAKE_LINE
3 bRTS_MaskCode:RTS引脚的必须为如下值:
SI_HELD_ACTIVE SI_HELD_INACTIVE SI_FIRMWARE_CONTROLLED SI_TRANSMIT_ACTIVE_SIGNAL
4bDTR_MaskCode:DTR引脚的必须为下列值:
SI_HELD_INACTIVE SI_HELD_ACTIVE SI_FIRMWARE_CONTROLLED
5bDSR_MaskCode:DSR引脚必须为如下值:
SI_STATUS_INPUT SI_HANDSHAKE_LINE
6bDCD_MaskCode:DCD引脚必须为如下值:
SI_STATUS_INPUT SI_HANDSHAKE_LINE
7bFlowXonXoff:值为0设置软件流控制为关闭状态,如果为非零值,使用指定的值。
返回值:SI_STATUS = SI_SUCCESSor
SI_DEVICE_IO_FAILED or
SI_INVALID_HANDLE or
SI_INVALID_PARAMETER
2.15 SI_GetModemStatus
描述:从设备获取调制解调器的状态。包括调制解调器的引脚状态。
支持设备:CP2101/2/3/4/5
原型:SI_STATUS SI_GetModemStatus (HANDLE Handle, PBYTE ModemStatus)
参数:1 Handle:SI_Open返回的设备句柄。
2lpbModemStatus:一个字节变量的地址,包含RS-232调制解调器控制线的状态。
Bit 0: DTR 状态
Bit 1: RTS 状态
Bit 4: CTS 状态
Bit 5: DSR 状态
Bit 6: RI 状态
Bit 7: DCD状态
返回值:SI_STATUS = SI_SUCCESSor
SI_DEVICE_IO_FAILED or
SI_INVALID_HANDLE or
SI_INVALID_PARAMETER
2.16 SI_SetBreak
描述:给CP210x设备发送一个中断状态(发送或复位),注意,此功能不一定与排队的传输数据同步。
支持设备:CP2101/2/3/4/5
参数:1 Handle:SI_Open返回的设备句柄。
2 wBreakState:设置中断状态。值为0x0000复位;值为0x0001中断。
返回值:SI_STATUS = SI_SUCCESSor
SI_DEVICE_IO_FAILED or
SI_INVALID_HANDLE or
SI_INVALID_PARAMETER
2.17 SI_ReadLatch
描述:从设备获取当前端口的锁存值(至少是4位)
支持设备:CP2103/4/5
原型:SI_STATUS SI_ReadLatch (HANDLE Handle, LPBYTE Latch)
参数:1 Handle:SI_Open返回的句柄。
2 Latch:返回的端口锁存值(逻辑高:1 逻辑低:0)
返回值:SI_STATUS = SI_SUCCESS or
SI_DEVICE_NOT_FOUND or
SI_FUNCTION _NOT_SUPPORTED or
SI_GLOBAL_DATA_ERROR or
SI_INVALID_HANDLE or
SI_INVALID_PARAMETER or
SI_DEVICE_IO_FAILED
2.18 SI_WriteLatch
描述:设置设备的当前端口的锁存值(至少四位)
支持设备:CP2103/4/5
原型:SI_STATUS SI_WriteLatch (HANDLE Handle, BYTE Mask, BYTE Latch)
参数:1 Handle:SI_Open返回的设备句柄。
2 Mask:确定那些引脚改变(1:改变 0:没变)
3 Latch:写入引脚的值(1:逻辑高 0 逻辑低)
返回值:SI_STATUS = SI_SUCCESSor
SI_DEVICE_NOT_FOUND or
SI_FUNCTION _NOT_SUPPORTED or
SI_GLOBAL_DATA_ERROR or
SI_INVALID_HANDLE or
SI_INVALID_PARAMETER or
SI_DEVICE_IO_FAILED
2.19 SI_GetPartNumber
描述:根据所传入的句柄,检查CP210x设备的部分号数字。
支持设备:CP2101/2/3/4/5
原型:SI_STATUS SI_GetPartNumber (HANDLE Handle, LPBYTE PartNum)
参数:1 Handle:SI_Open返回的设备句柄。
2 Latch:返回的指针号码
返回值:SI_STATUS = SI_SUCCESSor
SI_INVALID_PARAMETER or
SI_INVALID_HANDLE or
SI_DEVICE_IO_FAILED
2.20 SI_DevicelOControl
描述:任何杂项设备的控制接口。第个输入输出操作需要单独调用SI_DeviceIOControl。不能同时进行输入输出操作。请参看MSDN里对函数DeviceloControl的介绍。
支持设备:C8051F320/1/6/7,C8051F340/1/2/3/4/5/6/7/8/9/A/B/C/D,
C8051F380/1/2/3/4/5/6/7, C8051T320/1/2/3/6/7,C8051T620/1/2/3
原型:SI_STATUS SI_DeviceIOControl(HANDLE Handle, DWORD IOControlCode,
LPVOID InBuffer, DWORD BytesToRead, LPVOIDOutBuffer,
DWORD BytesToWrite, LPDWORD BytesSucceded)
参数:1 Handle:SI_Open返回的设备句柄。
2IOControlCode:选择控制功能的代码
3 InBuffer:输入数据缓冲区的指针
4BytesToRead:读入InBuffer的字节数。
5 OutBuffer:输出缓冲区的指舛
6BytesToWrite:从OutBuffer写的字节数
7BytesSucceded:一个DWORD类开型的变量,包含读取的字节数的地址,一个输入操作或写入返回输出操作的字节数。
返回值:SI_STATUS = SI_SUCCESSor
SI_DEVICE_IO_FAILED or
SI_INVALID_HANDLE
2.21 SI_GetDLLVersion
描述:取得当前正在使用的DLL版本。返回的版本是两个DWORD值,HighVersion 和 LowVersion。与此对应的版本是A.B.C.D;A=(HighVersion>>16)&0xFFFF,B=HighVersion&
0xFFFF,C=(LowVersion>>16)&0xFFFF,D=LowVersion&0xFFFF
支持设备:C8051F320/1/6/7,C8051F340/1/2/3/4/5/6/7/8/9/A/B/C/D,
C8051F380/1/2/3/4/5/6/7, C8051T320/1/2/3/6/7,C8051T620/1/2/3, CP2101/2/3/4/5
原型:SI_STATUS SI_GetDLLVersion(DWORD* HighVersion,DWORD* LowVersion)
参数:1 HighVersion:一个DWORD变量包含高32位DLL的版本地址
2 LowVersion: 一个DWORD变量包含低32位DLL的版本地址
返回值:SI_STATUS = SI_SUCCESS or SI_SYSTEM_ERROR_CODE
2.22 SI_GetDriverVersion
描述:获取当前在Windows系统目录中驱动程序版本。该版本返回两个DWORD值,HighVersion与LowVersion。对应的版本值为A.B.C.D。A=(HighVersion>>16)&0xFFFF,B=HighVersion&0xFFFF,C=(LowVersion>>16)&0xFFFF,D=LowVersion&0xFFFF。
支持设备:C8051F320/1/6/7,C8051F340/1/2/3/4/5/6/7/8/9/A/B/C/D,
C8051F380/1/2/3/4/5/6/7, C8051T320/1/2/3/6/7,C8051T620/1/2/3, CP2101/2/3/4/5
原型:SI_STATUS SI_GetDriverVersion(DWORD* HighVersion,DWORD* LowVersion)
参数:1 HighVersion:一个DWORD变量包含高32位DLL的版本地址
2 LowVersion: 一个DWORD变量包含低32位DLL的版本地址
返回值:SI_STATUS = SI_SUCCESSor SI_SYSTEM_ERROR_CODE