2023年12月20日发(作者:)

USB2XXX系列转换芯片用户手册

V0.1C USBIO TECH.

目录 USB2XXX系列转换芯片用户手册 ........................................................................................................... 1 1、 驱动安装 ........................................................................................................................................ 3 2、 Demo软件使用说明 ............................................................................................................... 8 3、 上位机Windows API使用说明 ...................................................................................... 20 4、 使用过程中的注意事项 ......................................................................................................... 21 5、 常见问题问答 ............................................................................................................................ 22

1、 驱动安装

1、1、 下载驱动文件

从USBIO公司网站的“在线下载”栏里下载最新的驱动程序。连接地址是:/cn/。

对于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、 指定驱动文件的路径

此处需要指定驱动文件的路径。驱动文件就是从网站上下载解压缩后的文件。

注意:USB2ISP、USB2I2C或USB2SPI芯片2007年11月之前的产品选择DRIVER文件夹内的驱动文件安装。

USB2ISP、USB2I2C或USB2SPI芯片2007年11月以后的产品选择DRIVER_NEW0711文件夹内的驱动文件安装。

1、6、 复制文件

接下来是系统复制驱动的过程。首次安装可能还会提示“没有通过Windows徽标测试”,选择【仍然继续】按钮。

1、7、 安装成功

可以通过我的【电脑】→【属性】→【硬件设备管理器】来查看新安装的的设备。也可以打开USB2ISP_DEMO_,此时状态来显示

至此,驱动安装完成,可以进一步的测试工作了。

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驱动文件中的USBIO_StreamI2C API,关于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读写AT24C02 EEPROM为例,说明如何使用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, // 指定USB2ISP设备序号 PVOID iBuffer, // 指向一个缓冲区,放置准备写出的地址数据 PULONG ioLength ); // 指向长度单元,输入时为准备写出的长度, //返回后为实际写出的长度 USBIO_EppSetAddr( // EPP方式设置地址: WR#=0, DS#=1, AS#=0, D0‐D7=output ULONG iIndex, // 指定USB2ISP设备序号 UCHAR iAddr ); // 指定EPP地址 2、5、MEM并口操作说明

USBIO_MemReadAddr0( // MEM方式读地址0: WR#=1, DS#/RD#=0, AS#/ADDR=0, ULONG iIndex, // 指定USB2ISP设备序号 PVOID oBuffer, // 指向一个足够大的缓冲区,用于保存从地址0读取的数据 PULONG ioLength ); // 指向长度单元,输入时为准备读取的长度, // 返回后为实际读取的长度 USBIO_MemReadAddr1( // MEM方式读地址1: WR#=1, DS#/RD#=0, AS#/ADDR=1, ULONG iIndex, // 指定USB2ISP设备序号 PVOID oBuffer, // 指向一个足够大的缓冲区,用于保存从地址1读取的数据 PULONG ioLength ); // 指向长度单元,输入时为准备读取的长度, // 返回后为实际读取的长度

USBIO_MemWriteAddr0( // MEM方式写地址0: WR#=0, DS#/RD#=1, AS#/ADDR=0, ULONG iIndex, // 指定USB2ISP设备序号 PVOID iBuffer, // 指向一个缓冲区,放置准备向地址0写出的数据 PULONG ioLength ); // 指向长度单元,输入时为准备写出的长度, // 返回后为实际写出的长度 USBIO_MemWriteAddr1( // MEM方式写地址1: WR#=0, DS#/RD#=1, AS#/ADDR=1, ULONG iIndex, // 指定USB2ISP设备序号 PVOID iBuffer, // 指向一个缓冲区,放置准备向地址1写出的数据 PULONG ioLength ); // 指向长度单元,输入时为准备写出的长度, // 返回后为实际写出的长度 2、6、GPIO引脚说明

USB2ISP的D5-D0引脚可以当作是GPIO来使用。

USBIO_Set_D5_D0( // 设置USB2ISP的D5‐D0引脚的I/O方向 ULONG iIndex, // 指定USB2ISP设备序号 ULONG iSetDirOut, // 设置D5‐D0各引脚的I/O方向, //某位清0则对应引脚为输入,某位置1则对应引脚为输出, //并口方式下默认值为0x00全部输入 ULONG iSetDataOut ); // 设置D5‐D0各引脚的输出数据, //如果I/O方向为输出,那么某位清0时对应引脚输出低电平, //某位置1时对应引脚输出高电平 // 以上数据的位5‐位0分别对应USB2ISP的D5‐D0引脚 /* ***** 谨慎使用该API, 防止修改I/O方向使输入引脚变为输出引脚导致与其它输出引脚之间短路而损坏芯片 ***** */

3、 上位机WINDOWS API使用说明

上位机API使用说明详见USBIOX.H文件里的说明。

4、 使用过程中的注意事项

暂无说明

5、 常见问题问答

5.1、Q:USB2I2C,USB2SPI和USB2ISP有什么不同?

A:USB2I2C是USB转换I2C总线(兼容TWI和SMbus总线)专用芯片;USB2SPI是USB转换SPI总线专用芯片;USB2ISP芯片是USB2I2C和USB2SPI的合集,除了实现I2C和SPI总线外,还实现了EPP并口和MEM并口。

5.2、Q: USB2I2C,USB2SPI和USB2ISP需要自己写固件吗?

A:USB2I2C,USB2SPI和USB2ISP是专用芯片,不需要编写任何固件。上尉机软件调用动态连接库里的专用API即可。

5.3、Q:USB2I2C和USB2ISP转换的I2C接口都可以读写那些I2C器件?

A:USB2I2C和USB2ISP转换的I2C总线,是标准的I2C总线,任何符合I2C协议标准的器件都可以读写。

5.4、Q:USB2I2C和USB2ISP转换的I2C接口支持高速传输吗?

A:USB2I2C和USB2ISP转换的I2C接口的时钟频率支持:50KHz,100KHz,400KHz和750KHz。750KHz属于高速模式。

5.5、Q:USB2I2C和USB2ISP支持特殊协议的I2C接口器件吗?

A:请参考TEST目录下的EXAM_API.C文件。

5.6、Q:USB2I2C和USB2ISP支持10bit地址的I2C接口器件吗?

A:目前还不支持。

5.7、Q:USB2I2C和USB2ISP可以作为I2C从设备吗?

A:不支持。USB2I2C和USB2ISP只能作为I2C主设备。