请问CH341StreamI2C读取数据返回data_reg显示字符串中的字符无效,并且实际数据data_temp元素全都为0xffff

请问CH341读取数据返回data_reg显示字符串中的字符无效,并且实际数据data_temp元素全都为0xffff,是否因为我对USB处理有误?

0{ASNLY)85B[N%P64MZZ)6O.pngimage.png

您好,可以先使用官方demo操作I2C,看结果是否相同。正常使用I2C,打开设备后,执行SetStream函数,然后再调用I2C传输函数即可。芯片只负责USB和I2C的数据的双向透传,并不会判断操作的是什么外设,如果有条件可以直接用逻辑分析仪等抓取I2C波形,方便定位原因。


请问可以提供一下官方demo吗?

我是按照您说的“打开设备后,执行SetStream函数,然后再调用I2C传输函数即可”书写代码的,如下:
image.png其中,MMC5603_Enable()以及MMC5603_GetData()调用了I2C_MultiRead_Reg()如下:image.png


您好,官方Demo可从如下链接下载:https://www.wch.cn/downloads/CH341EVT_ZIP.html,路径:CH341PAR/VC。I2C演示界面:两线接口、EEPROM配置、EEPROM读写。

1、首先确认设备管理器有没有识别出设备,I2C模式下会显示在“外部接口”下,名称:“USB-EPP/I2C CH341”;

2、代码中每一步操作增加返回值判断,如打开设备,和设置等函数,这样较容易判断硬件是否处于正常工作的状态。


您好
1、我采用EEPROM测试USB读取正常
2、我设置返回值判断,运行显示167行测量返回值正常,但是读取数据pro_id仍然错误(=0xFF,正常应当等于0x10)因此在171行return 0,如图:

image.png

image.pngimage.png

请问可能由于什么问题导致?


采用EEPROM测试USB读取正常是指,可以成功和上述器件通讯还是其他EEPROM器件。默认StreamI2C函数仅指示USB是否可成功传输,只要USB可成功通讯,无论设备是否ACK都会返回True。直接用我们demo是否可以通讯。


1、是指能够使用贵司demo以及24XX型号EEPROM进行读写。

2、现在,我尝试使用示波器抓取波形读取传感器器件(不是上文24XX型号EEPROM),但是古怪的就是:

我把示波器表笔插入数据读取完全正常,如图:

3e0d04c4f4ca1bce8bc6229ad0b89e3.jpg

image.png

一旦去掉就仍然出现返回0xFF问题

image.png65612ab174b46ae9b78d2cc3e38aed1.jpg


您好,如上所示,接示波器表笔会有寄生电容,相当于改善了信号传输。大概率是如上飞线测试信号传输不太稳定,可尝试尽量缩短线材或结合示波器信号改进后看下。


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