USB2XXX系列转换芯片用户手册V0.1C USBIO TECH. 2009.04.30 目录 USB2XXX系列转换芯片用户手册 ........................................................................................................... 1 1、 驱动安装 ........................................................................................................................................ 3 2、 Demo软件使用说明 ............................................................................................................... 7 3、 上位机WindowsAPI使用说明 ...................................................................................... 19 4、 使用过程中的注意事项 ......................................................................................................... 20 5、 常见问题问答 ............................................................................................................................ 21 1、驱动安装1、1、下载驱动文件从USBIO公司网站的“在线下载”栏里下载最新的驱动程序。连接地址是:。对于USB2ISP、USB2I2C或USB2SPI,选择相应的“开发大礼包”下载。解压缩到本地机器的硬盘里,待用。USB2I2C和USB2SPI是USB2ISP的功能简化版本,可以看作是USB2ISP的子集。USB2I2C实现USB转换I2C接口;USB2SPI实现USB转换SPI接口;USB2ISP实现USB转换SPI和I2C接口,同时还提供EPP或MEM并口,也可以当成是GPIO口来使用,具体请参考USB2ISP的数据手册。USB2I2C(SOP28封装)、USB2SPI和USB2ISP管脚完全兼容,所以USB2I2C和USB2SPI的相关设计也可以参考USB2ISP的数据手册。本手册以USB2ISP_DEV开发板为例,说明USB2XXX系列转换芯片的功能。1、2、插入USB2ISP_DEV开发板将USB2ISP_DEV开发板插入到电脑主板USB接口。当USB2ISP_DEV开发板向外部供电时,最好插入PC机背部的主板USB口。1、3、Windows提示发现新硬件插入USB2ISP_DEV开发板后Windows提示发现新硬件。1、4、提示安装驱动选择【从列表或指定位置安装(高级)】选项,然后单击【下一步】按钮。1、5、指定驱动文件的路径此处需要指定驱动文件的路径。驱动文件就是从网站上下载解压缩后的文件。1、6、复制文件接下来是系统复制驱动的过程。首次安装可能还会提示“没有通过Windows徽标测试”,选择【仍然继续】按钮。1、7、安装成功可以通过我的【电脑】→【属性】→【硬件设备管理器】来查看新安装的的设备。也可以打开USB2ISP_DEMO_VBCN.exe,此时状态来显示至此,驱动安装完成,可以进一步的测试工作了。2、DEMO软件使用说明USB2I2C是USB转换I2C总线(兼容TWI和SMbus总线)专用芯片;USB2SPI是USB转换SPI总线专用芯片;USB2ISP芯片是USB2I2C和USB2SPI的合集,除了实现I2C和SPI总线外,还实现了EPP并口和MEM并口。下面以USB2ISP说明USB2ISP_DEMO软件的使用,涉及到I2C和SPI方面的内容完全适用于USB2I2C和USB2SPI。2、1、I2C总线功能说明I2C接口选项卡,调用的是USB2ISP驱动USBIOX.DLL文件中的USBIO_StreamI2CAPI,关于USBIO_StreamI2C的详细说明见USBIOX.H文件。为方便说明摘录在下面:USBIO_StreamI2C( // 处理I2C数据流 ULONG iIndex, // 指定USB2ISP设备序号 ULONG iWriteLength, // 准备写出的数据字节数 PVOID iWriteBuffer, // 指向一个缓冲区,放置准备写出的数据, //第1个节通常是I2C设备地址及读写方向位 ULONG iReadLength, // 准备读取的数据字节数 PVOID oReadBuffer ); // 指向一个缓冲区,返回后是读入的数据 USBIO_SetStream( // 设置串口流模式 ULONG iIndex, // 指定USB2ISP设备序号 ULONG iMode ); // 指定模式,见下的说明 iMOde说明:位1‐位0: I2C接口速度/SCL频率, 00=低速/20KHz,01=标准/100KHz(默认值),10=快速/400KHz,11=高速/750KHz。位2: SPI的I/O引脚数, 0=单入单出(SCK时钟/MOSI出/MISO入)(默认值),1=双入双出(SCK时钟/MOSI出MSOSI2出/MISO入MISO2入),位7: SPI字节中的位顺序, 0=低位在前, 1=高位在前。 其它保留,必须为0。 下面以调用USBIO_StreamI2C读写AT24C02EEPROM为例,说明如何使用USBIO_StreamI2C实现各类灵活的I2C操作。2.1.1、用USBIO_StreamI2C实现向AT24C02的00存储单元写数据。如下图所示。时序参考:2.1.2、用USBIO_StreamI2C实现从AT24C02的00存储单元读取数据。如下图所示。时序参考:2、2、EEROM读写说明读写I2C接口的EEROM还可以通过调用专用API来实现:USBIO_ReadEEPROM( // 从EEPROM中读取数据块 ULONG iIndex, // 指定USB2ISP设备序号 EEPROM_TYPE iEepromID, // 指定EEPROM型号 ULONG iAddr, // 指定数据单元的地址 ULONG iLength, // 准备读取的数据字节数 PUCHAR oBuffer ); // 指向一个缓冲区,返回后是读入的数据 USBIO_WriteEEPROM( // 向EEPROM中写入数据块 ULONG iIndex, // 指定USB2ISP设备序号 EEPROM_TYPE iEepromID, // 指定EEPROM型号 ULONG iAddr, // 指定数据单元的地址 ULONG iLength, // 准备写出的数据字节数 PUCHAR iBuffer ); // 指向一个缓冲区,放置准备写出的数据 下面以读写AT24C02为例说明:2.2.1、向AT24C02的06存储单元写入2个0数据。时序参考:2.2.1、从AT24C02中地址00处读取30个数据。时序参考:2、3、SPI总线功能说明USBIO_StreamSPI4 ( // 处理SPI数据流,支持SPI Mode0/1 ULONG iIndex, // 指定USB2ISP设备序号 ULONG iChipSelect, // 片选控制, 位7为0则忽略片选控制, 位7为1则参数有效: //位1位0为00/01/10分别选择D0/D1/D2引脚作为低电平 //有效片选 ULONG iLength, // 准备传输的数据字节数 PVOID ioBuffer ); // 指向一个缓冲区,放置准备从MOSI写出的数据, //返回后是从MISO读入的数据 USBIO_SetStream( // 设置串口流模式 ULONG iIndex, // 指定USB2ISP设备序号 ULONG iMode ); // 指定模式,见下的说明 iMOde说明:位1‐位0: I2C接口速度/SCL频率, 00=低速/20KHz,01=标准/100KHz(默认值),10=快速/400KHz,11=高速/750KHz。位2: SPI的I/O引脚数, 0=单入单出(SCK时钟/MOSI出/MISO入)(默认值),1=双入双出(SCK时钟/MOSI出MSOSI2出/MISO入MISO2入),位7: SPI字节中的位顺序, 0=低位在前, 1=高位在前。 其它保留,必须为0。 下面举例说明USBIO_StreamSPI4的使用方法。A、用USBIO_StreamSPI4读写X5045读X5045的状态寄存器,命令码为:05(Hex),00(Hex,实际上这个字节可以任意填充,只是为了产生必要的SCK时钟)。读X5045的状态寄存器的返回数据。B、用USBIO_StreamSPI4读写AD7888下图是AD7888的读写时序,具体操作请参考AD7888的数据手册。USB2ISP调用USBIO_StreamSPI4读AD7888的数据。2、4、EPP并口操作说明USBIO_EppReadData( // EPP方式读数据: WR#=1, DS#=0, AS#=1, D0‐D7=input ULONG iIndex, // 指定USB2ISP设备序号 PVOID oBuffer, // 指向一个足够大的缓冲区,用于保存读取的数据 PULONG ioLength ); // 指向长度单元,输入时为准备读取的长度, //返回后为实际读取的长度 USBIO_EppReadAddr( // EPP方式读地址: WR#=1, DS#=1, AS#=0, D0‐D7=input ULONG iIndex, // 指定USB2ISP设备序号 PVOID oBuffer, // 指向一个足够大的缓冲区,用于保存读取的地址数据 PULONG ioLength ); // 指向长度单元,输入时为准备读取的长度, //返回后为实际读取的长度 USBIO_EppWriteData( // EPP方式写数据: WR#=0, DS#=0, AS#=1, D0‐D7=output ULONG iIndex, // 指定USB2ISP设备序号 PVOID iBuffer, // 指向一个缓冲区,放置准备写出的数据 PULONG ioLength ); // 指向长度单元,输入时为准备写出的长度, //返回后为实际写出的长度 USBIO_EppWriteAddr( // EPP方式写地址: WR#=0, DS#=1, AS#=0, D0‐D7=output ULONG iIndex,