想通过labview驱动ch341控制I2C给电源模块写入命令,以输出不同电压,用网上下载的CH341-I2C驱动写入命令,但是写入的命令sda输出感觉不对,调用时顺序是:CH341_OpenDevice>CH341SetStream>CH341WriteI2c>CH341_CloseDevice求大神指导下哪里的问题,电源模块设备地址30h,寄存器地址23h,控制电源模块输出电压命令11h(10h关闭输出命令)下面俩图分别为正常的sda波形和我用labview写入11h命令控制sda输出的波形,明显数据少了很多
想通过labview驱动ch341控制I2C给电源模块写入命令,以输出不同电压,用网上下载的CH341-I2C驱动写入命令,但是写入的命令sda输出感觉不对,调用时顺序是:CH341_OpenDevice>CH341SetStream>CH341WriteI2c
您好:
使用流程是没有问题的。只是WriteI2C函数只能一次写入一个字节。连续写入多个字节可以使用函数:
BOOLWINAPICH341StreamI2C( // 处理I2C数据流,2线接口,时钟线为SCL引脚,数据线为SDA引脚(准双向I/O),速度约56K字节
ULONGiIndex, // 指定CH341设备序号
ULONGiWriteLength, // 准备写出的数据字节数
PVOIDiWriteBuffer, // 指向一个缓冲区,放置准备写出的数据,首字节通常是I2C设备地址及读写方向位
ULONGiReadLength, // 准备读取的数据字节数
PVOIDoReadBuffer ); // 指向一个缓冲区,返回后是读入的数据
参数定义见注释,有问题及时与我们联系。
万分感谢 确实是这样 换了函数之后立马可以了 谢谢谢谢
请问楼主能不能举个例子呢,对与上面那个函数的写入是如何传参的?比如往 A0 地址的00位写入09,这样应该怎样传参iWriteBuffer,可以告诉我一下吗?现在调试遇到问题,没有出现想要的结果。
如果是往某个地址写入数据,iWriteBuffer第一个字节填地址,后面填入要写入的内容就可以。
比如 往地址A0的00 和 01位分别填入 2 3,那意思是说需要写 iWriteBuffer A0 2 3, iWriteLength 3,这样?
如果有些位需要写入有些位不需要写入呢?
如果需要往A2 的78H位写入11H,7BH位写入EE,这样子应该怎么传参呢?
A2 7B 11 与 A2 7B EE
请问Labview 多字节IIC读取 CH341 怎么实现呢?
您好,关于CH341读取I2C多字节,请使用以下流程:USBIO_Opendevice--->USBIO_StreamI2C-->USBIO_CloseDevice。
StreamI2C函数和“WriteI2C及ReadI2C”,选用前者可读写多字节,后者读写单字节。