基于嵌入式USB接口的數據采集系統的設計
3 系統測試
3.1 測試條件與結果
本測試的目的在于檢驗本文設計的數據采集系統能否在采集頻率較高的情況下準確地采集數據,并通過USB接口完整地進行數據傳輸。因此,測試將基于以下5個條件進行。其中一個通道的部分測試數據結果如圖3所示。本文引用地址:http://www.104case.com/article/149746.htm
1)測試信號為正弦波,峰峰值約為12 V,頻率為100Hz。
2)系統以1000Hz的采集頻率連續對8個通道進行采集。
3)單片機晶振頻率為12MHz。
4)采集系統的數據緩沖區設置為128字節。
5)采集數據記錄在SD卡中。
3.2 測試結果分析
由3.1的正弦波采集測試結果圖可以得出如下兩點結論:
1)采集的正弦波的峰峰值約為12 V,一個周期有10個數據點,根據采集頻率1000Hz可知采集到的正弦波的頻率為100Hz。
2)在30 ms的時候,正弦波發生畸變,可見采集數據在USB傳輸過程中發生丟失。
第一點結論說明了本采集系統能準確地進行數據采集,而對于第二點結論所表現出的不完整性分析如下。
1)設V1是有效數據的傳輸速度,V2是協議開銷的傳輸速度,N為采集數據的通道數目,M為每通道采集的字節數,H為采集頻率,K為緩沖區大小,U為傳輸的協議開銷字節數。USB數據幀的組成包括有效數據和協議開銷兩個部分,其中傳輸協議的開銷包括同步字段、包標識符、地址信息、端點信息和CRC校驗,所以數據采集系統要求的USB傳輸速度可根據公式(1)計算得到。本文設計的數據采集系統共有8個通道,每通道有2個字節的數據,采集頻率為1 000 Hz,根據公式(2)可得有效數據的傳輸速度約為16 kB/s。一個完整的數據幀的傳輸需要11個字節的協議開銷,本文設計的數據傳輸過程分為4個步驟:發送傳輸請求,發送接收控制命令,接收請求應答,開始接收數據,每個步驟均需傳輸一個完整的USB數據幀,因此進行一次傳輸的協議開銷為44個字節,根據公式(3)可計算出協議開銷的傳輸速度。以緩沖區的大小為橫坐標,數據采集系統要求的USB傳輸速度為縱坐標繪出圖4所示的關系圖,分析該圖可得:緩沖區越大,所要求的USB傳輸速度越少。測試中較少的128字節緩沖區使得在一次傳輸中有效數據過少,約5.5 kB/s的額外開銷傳輸速度約占總速度的25%,過高的額外傳輸開銷導致數據來不及傳輸,從而發生數據丟失的情況。
2)另外,由于應用程序要在SD卡這類低速設備上記錄數據,所以記錄數據的時候來不及獲取USB設備中的數據也會導致實際的傳輸速度變慢,導致新采集的數據溢出緩沖區并覆蓋來不及傳輸的舊數據,從而造成數據丟失。
因此有必要采取一定的方法來改善數據采集系統,以保證數據采集的完整性。下面將提出3個解決方法。
3.3 系統改善措施
1)增大晶振頻率到24MHz,加快單片機的處理速度。
2)在硬件上增加靜態RAM作為數據存儲的緩沖區,緩沖區的存在一方面可以保證新采集的數據不會覆蓋沒來得及傳輸的舊數據,另一方面可以讓USB設備在一次USB數據幀的傳輸中所含有的有效數據更多,從而減少在傳輸過程中的校驗、識別和握手等USB協議的額外開銷,加快傳輸速度。
3)在應用程序控制USB設備時將新建2條線程,一條進程用于向USB設備進行讀寫操作來進行數據采集,另一條進程用于向嵌入式系統的SD卡這類低速設備進行讀寫操作來記錄數據,利用操作系統分時復用的特性減少數據記錄過程對數據傳輸造成的延誤,從而加快USB設備的傳輸速度。
4 結束語
本文從硬件結構、固件程序和驅動程序3個方面對基于嵌入式USB接口的數據采集系統進行了設計。最后還通過實際采集正弦波信號對系統進行了測試,并提出了3個方法有效地提高了數據采集系統的傳輸速度。本系統能在擁有USB接口的嵌入式設備上方便地進行連接和安裝,是數據采集應用的一個重要部分。
評論