在windows下使用CH341A USB轉接模塊可以正確與設備交互,我之前使用CH341DLL庫,調用相關api
dev->id?=?device_number; dev->fd?=?CH341OpenDevice(dev->id); if?(dev->fd?==?INVALID_HANDLE_VALUE) { -----省略 auto?ret?=?CH341SetTimeout(dev->dev_id,?2000,?2000); ----- auto?ret?=?CH341SetStream(dev->id,?ULONG(rate)); ----?然后可以正常進行各種讀寫操作如 BOOL?result?=?CH341ReadI2C(iIndex,?iDevice,?iAddr,?&oByte);
近期我想將其遷移linux系統(tǒng),使用CH341PAR驅動,生成ch34x_pis字符設備,通過加載libch347.so進行操作
dev->fd?=?CH34xOpenDevice(pathname); ret?=?CH34xSetTimeout(dev->fd,?2000,?2000); ------省略 auto?ret?=?CH34xSetStream(dev->fd,?mode); if?(ret?==?false) { std::cout?<<?"I2CConfig?error:?Failed?to?set?stream?mode."?<<?std::endl; return?-1; }
我調用類似的api接口實現(xiàn)完全相同邏輯,可以正常調用開啟設備和讀取設備信息的api,但是在
CH34xSetStream
和其他讀取I2C數據的api會返回false
經驗有限,暫時排查不出問題
驅動已經加載,usart功能正常,kernel為6.10.x
熱門產品 :
CH32X035: 32位USB+USB PD單片機