CH341 I2C通信问题

先调用CH341OpenDevice(0),返回true,然后调用CH341SetStream(0,2)也返回true,再调用CH341ReadI2C(0,0xD0,0x30,data),但是输出波形上的设备地址0?设备是OK的,我验证过!

另外你们I2C通信接口是需要自己根据命令封装start,stop,out,in吗,还是直接调用CH341ReadI2C/CH341WriteI2C/CH341StreamI2C?

如果是直接使用接口CH341ReadI2C/CH341WriteI2C/CH341StreamI2C进行I2C通信,那使用

BOOL WINAPI CH341StreamI2C(ULONG iIndex,  ULONG iWriteLength,PVOIDiWriteBuffer,ULONG iReadLength, PVOID oReadBuffer );

进行多字节通行时,是把设备地址,访问地址和输入一起写入iWriteBuffer还是需要额外发送设备地址和访问地址,而这个接口只发送数据啊?


您好,对于单字节读写,可直接使用如下API函数,iDevice对应上图Address Byte,iAddr对应Command Byte。相应时序如I2C信号的开始,结束等由芯片自动完成,无需额外控制。

image.png

CH341DLL可进行连续多字节读写,接口说明如下所示,设备和寄存器地址均填充在iWriteBuffer中即可。image.png



发现通过CH341StreamI2C去多字节读取数据时,第一次是正确的,第二次就读回的数据就异常了,I2C端口抓取的波形就异常了,请问这是什么问题?


发现通过CH341StreamI2C去多字节读取数据时,第一次是正确的,第二次就读回的数据就异常了,I2C端口抓取的波形就异常了,请问这是什么问题?



接口并不区分是第几次调用,每次操作应该结果是等同的。建议检查填充的buffer内容是否发生了变化,可以printf打印看下其内容。


请问一下CH341T的I2C master是否支持stretch功能?

我发现在slave把时钟拉住的时候,就会出现异常,如图所示。

icon_jpg.gif微信图片_20210425160409.jpg

icon_jpg.gif微信图片_202104251604091.jpg



怎么还没有回复啊?请帮忙确认一下ch341t的i2c master是否可以被slave把时钟拉住,也就是stretch功能,谢谢了!


您好,不支持该功能,请知悉。


请问你们有支持I2C stretch功能的芯片吗?如果有介绍一款,最好是现成的板子,谢谢!


您好,暂无支持I2C stretch功能的接口芯片。您可以考虑使用我司具备USB设备功能的MCU来实现,我们提供相关USB实现的例程。/products/category/5.html 


我用CH341WriteI2C/CH341StreamI2C有时候正确,有时候会返回False。

请问若返回False的话隐含着可能是什么问题?

请问若返回False的话隐含着可能是什么问题?


您好,若如上API返回False的可能原因有:

1、USB数据通信失败;(此时建议打开“设备管理器”,并刷新,查看设备是否掉线)

2、设备返回NACK;


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