通過不斷的研究驗(yàn)證, labview和C#都已成功讀取到ads1256反饋的電壓值, 期間概率性反饋值不對,也解決了(數(shù)據(jù)換算方面).
但始終有個奇怪的疑問, SPI4讀取ads1256的3個字節(jié)電壓數(shù)據(jù)(24bitADC), 收到的確不是3個字節(jié), 在它前面會多出2個未知數(shù)據(jù).
如圖所示, 真正有用的是有效數(shù)據(jù)是2-4位,但不影響應(yīng)用.
通過不斷的研究驗(yàn)證, labview和C#都已成功讀取到ads1256反饋的電壓值, 期間概率性反饋值不對,也解決了(數(shù)據(jù)換算方面).
但始終有個奇怪的疑問, SPI4讀取ads1256的3個字節(jié)電壓數(shù)據(jù)(24bitADC), 收到的確不是3個字節(jié), 在它前面會多出2個未知數(shù)據(jù).
如圖所示, 真正有用的是有效數(shù)據(jù)是2-4位,但不影響應(yīng)用.
您好,請問您調(diào)用的API函數(shù),數(shù)據(jù)長度指定是多少?返回讀取長度是不應(yīng)該超過指定的iLength數(shù)據(jù)長度的。
CH341StreamSPI4 函數(shù)說明
iLength:需要xfer傳輸?shù)淖止?jié)長度
ioBuffer:需要xfer傳輸?shù)木彌_區(qū),由于SPI是exchange交換傳輸,因此該緩沖區(qū)內(nèi)容會先經(jīng)過MOSI信號線對外輸出,然后該API成功返回后,其內(nèi)容是從MISO信號線上采集的數(shù)據(jù)。
也看參考下該博客看下:https://blog.csdn.net/WCH_TechGroup/article/details/130928825?
該博客先前參考過.
CH341StreamSPI4? 以下參數(shù)都試過
實(shí)驗(yàn)A: iLength= 3 時,? 讀取的ioBuffer數(shù)據(jù)會不完整( 2個未知+1個ADC)? ---缺失ADC后兩個字節(jié).
實(shí)驗(yàn)B:?iLength= 5 ,? 讀取的數(shù)據(jù)剛好到有效數(shù)據(jù)的末尾(2個未知+3個ADC字節(jié))
實(shí)驗(yàn)C:?iLength= 8 ,? 讀取的數(shù)據(jù)(2個未知+3個ADC+1個未知+2個FF)?
實(shí)驗(yàn)A:?ioBuffer大小=3個字節(jié)數(shù)組時 ,? 數(shù)組[0]=0x01(讀取ADC指令, 長度=1)-- 讀取的數(shù)據(jù)=1個未知
實(shí)驗(yàn)B:?ioBuffer = byte[5]? ?,? [0]=0x01(讀取ADC指令, 長度=1)-- 讀取的數(shù)據(jù)=2個未知+3個ADC
實(shí)驗(yàn)C:?ioBuffer = byte[8]? ?,? [0]=0x01(讀取ADC指令, 長度=1) --(2個未知+3個ADC+1個未知+2個FF)?
您好,看起來這個和ads模塊硬件特性有關(guān),應(yīng)用程序讀到的數(shù)據(jù)是真實(shí)模塊返回的數(shù)據(jù)。你也可以用示波器或邏輯分析儀查看SPI數(shù)據(jù)。