CH341与Labview通讯IIC多字节读取

请问IIC多字节读取的调用方式是怎样的呢?

USBIO_Opendevice--->USBIO_ReadI2C-->USBIO_StreamI2C-->USBIO_CloseDevice这个时序对吗

您好,关于CH341读取I2C多字节,请使用以下流程:USBIO_Opendevice--->USBIO_StreamI2C-->USBIO_CloseDevice。

StreamI2C函数和“WriteI2C及ReadI2C”,选用前者可读写多字节,后者读写单字节。



好的,已经实现了,谢谢;另外我想问一下SPI的读写时序是怎样的呢?下面是SPI4读操作,但实现不了,请问是什么地方出现了问题呢

image.png


您好,SPI操作调用过程为:Opendevice--->USBIO_SetStream--->USBIO_StreamSPI4->USBIO_CloseDevice。


image.png

image.png

image.png请问我这样使用SPI对吗?顺序是按照您说的,但读取的都是FF,请指点一下,非常感谢



您好,按照上面你发的spi读写时序,如果读取spi数据,则数据为:1个字节ADDR地址+1个字节读取的数据。

其中ADDR地址数据最高位bit7为1时才表示读数据,为0表示写spi数据。

明确下你希望读取的地址,然后bit7置1,然后看读取的readbuffer[1]的返回的内容。


目前我的问题是buffer里面给的数值不同会出现FF或者其他值,而且奇怪的是最低位要给1回传值才不会是FF,我想知道我的buffer需要给多少位的值才行呢?我看提供的DLL的类型是UNLONG型,四个字节吗?我的寄存器地址只有一个字节应该怎么分配呢?望解答,谢谢 


您好,需要使用的API接口函数及参数定义如下:

image.png

iOBuffer是指针类型的。用法见注释部分,请问你的使用疑问是什么?


您好,我的疑问是IObuffer的输入数据是输入寄存器地址对吗?IObuffer我设置的是数组数据指针类型,现在的问题有两个:1、IObuffer的数据应该设置多少位的,u32还是u64呢?因为设置的这两个我看到都可以读出数据,而且数据还不一样

2、IObuffer的输入数据低位是1才能读出数据,如0x01,0x21,这就很奇怪,我以为是大小端的问题,但我将iMode设为0也没有变化。望解答,谢谢!

image.png


您好,IObuffer是指向用于spi输出和spi输入的缓冲区地址。该类型可以设置为字节数组,之前按你的协议。指向一个2字节的数组就可以了。其中API执行的时候是先发送IObuffer指向的缓冲区内容,然后保存读回来的数据内容。

关于SetStream函数,您这边使用高位在前的单入单出方式就可以了。示例:

UCHAR buffer[2];

buffer[0] = addr | 0x80;

USBIO_SteamSPI4(0, 0, 2, buffer);


请问怎么定义CH341StreamI2C读写单元的地址呢?


您好,可以参考该链接的接口函数说明:http://www.wch.cn/bbs/thread-85164-1.html 

对于StreamI2C函数,通常首字节代表设备地址及方向位,第二个字节代表单元地址。


只有登录才能回复,可以选择微信账号登录