CH341A转IIC使用时,能不能随便调节IIC的CLK速率,驱动里只提供了四个,最低20kHz,能不能改得再低一点?
该芯片暂时不支持随便调节CLK速度,只支持20KHz/100KHz/400KHz/750KHz这四种速度。
CH341的I2C、UIO等接口,都是类似BASIC语言的解释命令码流并执行的方案。
即上位机发出一串由命令码组成数据流,由CH341分析解释并执行,包括读/写/延时等。
CH341的I2C速度有4档,如果仍然不满足要求,可按如下方法做(参考CH341EVT中EXAM)
自行产生I2C包,每32字节为一个小包,连成一个大包,不大于4096字节,一次发出;
每小包的第一个字节为mCH341A_CMD_I2C_STREAM;
然后是命令码,命令码包括mCH341A_CMD_I2C_STM_STA启始位、mCH341A_CMD_I2C_STM_STO停止位、
mCH341A_CMD_I2C_STM_OUT输出n个字节、mCH341A_CMD_I2C_STM_IN输入n个字节、以及
mCH341A_CMD_I2C_STM_US延时n个微秒等;
将上述命令码任意组合,产生小包,超出后从下一个小包的第二字节继续;
最后一个小包,如不满32字节则添加mCH341A_CMD_I2C_STM_END提前结束;
以上方法可参考CH341DLL的源程序。
例如,在100KHz速度下每输出4个字节,插入40uS的延时,那么速度下降到50KHz;
CH341可以获取对方对应,但是每输出一字节就获取一个应答,即两个USB传输,有可能两者间隔要1mS而导致总体速度下降。
除了I2C,UIO通用输入输出方式已用于CH341的ATMEL-MCU下载线,中间也可任意加入延时
[转载]