CH341A轉(zhuǎn)IIC使用時(shí),能不能隨便調(diào)節(jié)IIC的CLK速率,驅(qū)動(dòng)里只提供了四個(gè),最低20kHz,能不能改得再低一點(diǎn)?
該芯片暫時(shí)不支持隨便調(diào)節(jié)CLK速度,只支持20KHz/100KHz/400KHz/750KHz這四種速度。
CH341的I2C、UIO等接口,都是類似BASIC語言的解釋命令碼流并執(zhí)行的方案。
即上位機(jī)發(fā)出一串由命令碼組成數(shù)據(jù)流,由CH341分析解釋并執(zhí)行,包括讀/寫/延時(shí)等。
CH341的I2C速度有4檔,如果仍然不滿足要求,可按如下方法做(參考CH341EVT中EXAM)
自行產(chǎn)生I2C包,每32字節(jié)為一個(gè)小包,連成一個(gè)大包,不大于4096字節(jié),一次發(fā)出;
每小包的第一個(gè)字節(jié)為mCH341A_CMD_I2C_STREAM;
然后是命令碼,命令碼包括mCH341A_CMD_I2C_STM_STA啟始位、mCH341A_CMD_I2C_STM_STO停止位、
mCH341A_CMD_I2C_STM_OUT輸出n個(gè)字節(jié)、mCH341A_CMD_I2C_STM_IN輸入n個(gè)字節(jié)、以及
mCH341A_CMD_I2C_STM_US延時(shí)n個(gè)微秒等;
將上述命令碼任意組合,產(chǎn)生小包,超出后從下一個(gè)小包的第二字節(jié)繼續(xù);
最后一個(gè)小包,如不滿32字節(jié)則添加mCH341A_CMD_I2C_STM_END提前結(jié)束;
以上方法可參考CH341DLL的源程序。
例如,在100KHz速度下每輸出4個(gè)字節(jié),插入40uS的延時(shí),那么速度下降到50KHz;
CH341可以獲取對(duì)方對(duì)應(yīng),但是每輸出一字節(jié)就獲取一個(gè)應(yīng)答,即兩個(gè)USB傳輸,有可能兩者間隔要1mS而導(dǎo)致總體速度下降。
除了I2C,UIO通用輸入輸出方式已用于CH341的ATMEL-MCU下載線,中間也可任意加入延時(shí) ?
[轉(zhuǎn)載]? ? ? ? ? ? ??