CH341的I2C接口编程说明

您所在的位置:网站首页 ch341a不识别 CH341的I2C接口编程说明

CH341的I2C接口编程说明

2024-01-17 11:03| 来源: 网络整理| 查看: 265

 CH341的I2C接口特性:(CH347为CH341的升级版,支持更高速的I2C速度,支持ACK检测以及I2C时钟延展等功能)

1、支持I2C速度20K/100K/400K/750K;

2、默认不支持设备的ACK应答监测,即忽略ACK状态;强制支持需修改软件;

引脚序号功能说明24SCL23SDA

 Windows系统I2C通讯接口函数

HANDLE WINAPI CH341OpenDevice( // 打开CH341设备,返回句柄,出错则无效 ULONG iIndex ); // 指定CH341设备序号,0对应第一个设备 VOID WINAPI CH341CloseDevice( // 关闭CH341设备 ULONG iIndex ); // 指定CH341设备序号 BOOL WINAPI CH341SetStream( // 设置串口流模式 ULONG iIndex, // 指定CH341设备序号 ULONG iMode ); // 指定模式,见下行 // 位1-位0: I2C接口速度/SCL频率, 00=低速/20KHz,01=标准/100KHz(默认值),10=快速/400KHz,11=高速/750KHz // 位2: SPI的I/O数/IO引脚, 0=单入单出(D3时钟/D5出/D7入)(默认值),1=双入双出(D3时钟/D5出D4出/D7入D6入) // 位7: SPI字节中的位顺序, 0=低位在前, 1=高位在前 // 其它保留,必须为0 BOOL WINAPI CH341ReadI2C( // 从I2C接口读取一个字节数据 ULONG iIndex, // 指定CH341设备序号 UCHAR iDevice, // 低7位指定I2C设备地址 UCHAR iAddr, // 指定数据单元的地址 PUCHAR oByte ); // 指向一个字节单元,用于保存读取的字节数据 BOOL WINAPI CH341WriteI2C( // 向I2C接口写入一个字节数据 ULONG iIndex, // 指定CH341设备序号 UCHAR iDevice, // 低7位指定I2C设备地址 UCHAR iAddr, // 指定数据单元的地址 UCHAR iByte ); // 待写入的字节数据 BOOL WINAPI CH341StreamI2C( // 处理I2C数据流,2线接口,时钟线为SCL引脚,数据线为SDA引脚(准双向I/O),速度约56K字节 ULONG iIndex, // 指定CH341设备序号 ULONG iWriteLength, // 准备写出的数据字节数 PVOID iWriteBuffer, // 指向一个缓冲区,放置准备写出的数据,首字节通常是I2C设备地址及读写方向位 ULONG iReadLength, // 准备读取的数据字节数 PVOID oReadBuffer ); // 指向一个缓冲区,返回后是读入的数据 BOOL WINAPI CH341ReadEEPROM( // 从EEPROM中读取数据块,速度约56K字节 ULONG iIndex, // 指定CH341设备序号 EEPROM_TYPE iEepromID, // 指定EEPROM型号 ULONG iAddr, // 指定数据单元的地址 ULONG iLength, // 准备读取的数据字节数 PUCHAR oBuffer ); // 指向一个缓冲区,返回后是读入的数据 BOOL WINAPI CH341WriteEEPROM( // 向EEPROM中写入数据块 ULONG iIndex, // 指定CH341设备序号 EEPROM_TYPE iEepromID, // 指定EEPROM型号 ULONG iAddr, // 指定数据单元的地址 ULONG iLength, // 准备写出的数据字节数 PUCHAR iBuffer ); // 指向一个缓冲区,放置准备写出的数据

如上API接口函数,根据不同的业务场景可以选用不同的函数。

CH341ReadI2C: 适用于I2C设备地址固定7位,单次读取1个字节。

CH341WriteI2C: 适用于I2C设备地址固定7位,单次写入1个字节。

CH341StreamI2C: 适用于多字节的设备地址,或设备地址后紧跟寄存器地址,或连续的多字节读写。

CH341ReadIEEPROM,CH341WriteEEPROM: 适用于直接操作EEPROM存储器件。

操作流程:

CH341StreamI2C 函数说明

iWriteLength:I2C Write的字节长度

iWriteBuffer:I2C Write的缓冲区内容,该缓冲区内容会经过SDA信号线对外输出。首字节地址通常是设备地址及读写位。如设备地址是0x50,I2C写操作时首字节为:0x50



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3