請問CH341讀取數(shù)據(jù)返回data_reg顯示字符串中的字符無效,并且實(shí)際數(shù)據(jù)data_temp元素全都為0xffff,是否因?yàn)槲覍SB處理有誤?
您好,可以先使用官方demo操作I2C,看結(jié)果是否相同。正常使用I2C,打開設(shè)備后,執(zhí)行SetStream函數(shù),然后再調(diào)用I2C傳輸函數(shù)即可。芯片只負(fù)責(zé)USB和I2C的數(shù)據(jù)的雙向透傳,并不會判斷操作的是什么外設(shè),如果有條件可以直接用邏輯分析儀等抓取I2C波形,方便定位原因。
請問可以提供一下官方demo嗎?
我是按照您說的“打開設(shè)備后,執(zhí)行SetStream函數(shù),然后再調(diào)用I2C傳輸函數(shù)即可”書寫代碼的,如下:
其中,MMC5603_Enable()以及MMC5603_GetData()調(diào)用了I2C_MultiRead_Reg()如下:
您好,官方Demo可從如下鏈接下載:http://www.findthetime.net/downloads/CH341EVT_ZIP.html,路徑:CH341PAR/VC。I2C演示界面:兩線接口、EEPROM配置、EEPROM讀寫。
1、首先確認(rèn)設(shè)備管理器有沒有識別出設(shè)備,I2C模式下會顯示在“外部接口”下,名稱:“USB-EPP/I2C CH341”;
2、代碼中每一步操作增加返回值判斷,如打開設(shè)備,和設(shè)置等函數(shù),這樣較容易判斷硬件是否處于正常工作的狀態(tài)。
您好
1、我采用EEPROM測試USB讀取正常
2、我設(shè)置返回值判斷,運(yùn)行顯示167行測量返回值正常,但是讀取數(shù)據(jù)pro_id仍然錯誤(=0xFF,正常應(yīng)當(dāng)?shù)扔?x10)因此在171行return 0,如圖:
請問可能由于什么問題導(dǎo)致?
采用EEPROM測試USB讀取正常是指,可以成功和上述器件通訊還是其他EEPROM器件。默認(rèn)StreamI2C函數(shù)僅指示USB是否可成功傳輸,只要USB可成功通訊,無論設(shè)備是否ACK都會返回True。直接用我們demo是否可以通訊。
1、是指能夠使用貴司demo以及24XX型號EEPROM進(jìn)行讀寫。
2、現(xiàn)在,我嘗試使用示波器抓取波形讀取傳感器器件(不是上文24XX型號EEPROM),但是古怪的就是:
我把示波器表筆插入數(shù)據(jù)讀取完全正常,如圖:
一旦去掉就仍然出現(xiàn)返回0xFF問題
您好,如上所示,接示波器表筆會有寄生電容,相當(dāng)于改善了信號傳輸。大概率是如上飛線測試信號傳輸不太穩(wěn)定,可嘗試盡量縮短線材或結(jié)合示波器信號改進(jìn)后看下。