STM32F103x的USB多路數(shù)據(jù)采集系統(tǒng)設計
掃描二維碼
隨時隨地手機看文章
引 言
目前,在工業(yè)和許多其他場合依然使用基于PCI板卡、ISA板卡的數(shù)據(jù)采集系統(tǒng),價格昂貴、接插不方便。USB(Universal Serial Bus,通用串行總線)是計算機上的一種新型接口技術,它使得計算機和外部設備的連接十分方便。USB具有高效、快速、價格低廉、體積小和支持熱拔插等優(yōu)點,使其成為數(shù)據(jù)采集系統(tǒng)設計的新寵兒。然而當前的USB數(shù)據(jù)采集設備大多采用的是專門的USB接口芯片,而且根據(jù)不同的需求,需要外擴一定數(shù)量的A/D 轉換芯片,使得接口非常復雜,增加了系統(tǒng)的開發(fā)難度,進而對系統(tǒng)的穩(wěn)定性產生影響。本設計采用意法半導體公司開發(fā)的基于Cortex-M3內核的新型32 位微控制器STM32F103x作為主控芯片。該芯片內部集成了全速USB2.0設備接口模塊和16通道的12位高精度A/D轉換器,單芯片即可完成設計任務,避免了復雜的接口電路設計,有效地降低了系統(tǒng)接口的復雜度和系統(tǒng)開發(fā)的難度,在很大程度上提高了系統(tǒng)的穩(wěn)定性。
1 主控芯片STM32F103x
STM32F103x是意法半導體公司生產的基于ARMCortex-M3處理器核的微控制器。Cortex-M3是基于ARMv7-M體系結構的32位標準處理器,具有低功耗、少門數(shù)、短中斷延遲、低調試成本等眾多優(yōu)點。它是專門為在微控制器系統(tǒng)、汽車電控系統(tǒng)、工業(yè)控制系統(tǒng)和無線網(wǎng)絡等對功耗和成本敏感的嵌入式應用領域實現(xiàn)高系統(tǒng)性能而設計的,大大簡化了編程的復雜性,集高性能、低功耗、低成本于一體。STM32F103x微控制器采用了先進的 Cortex-M3內核結構,具有豐富的性能出眾的片上外設,包括16通道的12位A/D轉換器、7通道的DMA控制器、16位定時器、USART接口、 CAN接口(2.0B)和USB2.0全速接口(12 Mbps)等。
2 數(shù)據(jù)采集系統(tǒng)硬件設計
2.1 數(shù)據(jù)采集系統(tǒng)硬件結構
多路數(shù)據(jù)采集系統(tǒng)的硬件結構框圖如圖1所示,主要包含5個模塊:信號輸入接口模塊、信號調理模塊、數(shù)據(jù)采集及預處理模塊、USB2.0通信模塊和上位機模塊。其中的信號輸入接口模塊實現(xiàn)信號的隔離接入;信號調理模塊對輸入信號進行放大或衰減,以適應A/D轉換器的轉換量程;數(shù)據(jù)采集及預處理模塊和USB2.0通信模塊實際是由微控制器 STM32F103x獨自實現(xiàn)的。STM32F103x通過內部A/D轉換器對經過調理后的信號進行采集,然后進行數(shù)據(jù)的預處理,并將預處理后的數(shù)據(jù)通過 USB2.0全速接口傳送到上位機。上位機模塊主要是對獲取的數(shù)據(jù)進行存儲和分析處理。由于大量的工作都是在STM32F103x內部完成的,只需通過簡單的寄存器設置和程序設計即可完成數(shù)據(jù)的采集和傳輸過程,這在很大程度上優(yōu)化了系統(tǒng)的設計。
2.2 STM32F103x的ADC模塊
STM32F103x系列微控制器所帶的2個12位ADC是一種逐次逼近型模擬數(shù)字轉換器。它有16個外部通道,可測量16個外部信號源。各通道的A/D 轉換可以是單次、連續(xù)、掃描或不連續(xù)模式執(zhí)行,其轉換結果可以左對齊或右對齊方式存儲在16位數(shù)據(jù)存儲器中。ADC轉換頻率最高可達1 MHz,且每個通道的采樣間隔時間均可獨立編程設置。在通道轉換期間,ADC能產生DMA請求,使DMA來傳輸ADC轉換值,提高了數(shù)據(jù)傳輸?shù)男省?ADC模塊的結構示意圖如圖2所示。
2.3 STM32F103x的USB2.0全速設備接口模塊
USB接口模塊為上位機和由微控制器實現(xiàn)的功能設備之間提供了符合USB規(guī)范的通信連接。USB接口模塊通過和微控制器共享一塊專用的數(shù)據(jù)緩沖區(qū)實現(xiàn)上位機和系統(tǒng)存儲器之間的數(shù)據(jù)傳輸。這塊專用數(shù)據(jù)緩沖區(qū)的大小由所使用的端點數(shù)目和每個端點最大的數(shù)據(jù)分組大小來決定,每個端點最大可使用512字節(jié)緩沖區(qū),最多可用于16個單向或8個雙向端點。USB接口模塊根據(jù)UJSB
規(guī)范實現(xiàn)了令牌分組的檢測,數(shù)據(jù)發(fā)送/接收的處理和握手分組的處理。整個傳輸?shù)臄?shù)據(jù)格式由硬件自動生成,其中包括CRC的生成和校驗。USB2.0全速設備接口模塊的結構示意圖如圖3所示。
3 數(shù)據(jù)采集系統(tǒng)軟件設計
數(shù)據(jù)采集系統(tǒng)軟件設計主要包括設備固件程序設計和上位機應用程序設計兩部分。
3.1 設備固件程序
設備固件程序設計的兩個主要部分是ADC模塊的配置和USB模塊的配置與通信。
(1)ADC模塊的配置
意法半導體公司針對ARM的32位STM32F103x系列MCU提供了固件庫。該固件庫提供了包括ADC在內的各種功能模塊的軟件使用接口,使用該固件庫可以有效節(jié)省用戶產品的開發(fā)和調試時間。利用該庫,本設計中ADC的配置代碼如下:
ADC校準之后通過函數(shù)ADC_SoftwareStart-ConvCmd(ADC1,ENABLE)即可啟動A/D轉換。
(2)USB模塊的配置與通信
意法半導體公司還提供了針對STM32F系列的USB開發(fā)工具包。該工具包是一個完整的固件和軟件包,包括所有USB傳輸方式的范例,大大減少了開發(fā)人員的工作量。利用USB工具包主要完成對IJSB模塊的配置及與USB主機(即上位機)之間的通信。
USB規(guī)范定義了4種數(shù)據(jù)傳輸類型:控制傳輸、塊傳輸、中斷傳輸和同步傳輸。塊傳輸適用于傳輸大量的且對傳輸時間和傳輸速率均無要求的數(shù)據(jù);中斷傳輸適用于傳輸少量或中量的且對傳輸時間有要求的數(shù)據(jù);同步傳輸適用于傳輸大量的,速率恒定的且對傳輸時間有要求的數(shù)據(jù);控制傳輸適用于傳輸少量的且對傳輸時間和傳輸速率均無要求,但必須保證數(shù)據(jù)傳輸?shù)目煽啃浴?br /> 在本設計中,端點0為控制傳輸端點,實現(xiàn)USB設備上電后的配置過程;端點1為OUT中斷傳輸端點,用以接收上位機發(fā)送的命令,實現(xiàn)上位機對數(shù)據(jù)采集過程的控制;端點2為IN塊傳輸端點,將數(shù)據(jù)采集結果實時地傳送到上位機,供上位機進行數(shù)據(jù)分析和處理。利用意法半導體公司提供的USB開發(fā)工具包并參照范例,修改一些描述符(設備描述符、配置描述符、接口描述符和端點描述符等)和設備復位函數(shù),添加相應的端點傳輸中斷服務程序等,即可方便地實現(xiàn)本系統(tǒng)的 USB設備開發(fā)。端點2的配置代碼如下:
在設置端點2發(fā)送有效之后,USB模塊可自動完成端點2緩沖區(qū)的數(shù)據(jù)發(fā)送。
3.2 上位機應用程序
本設計采用一種使用NI-VISA和LabVIEW進行USB數(shù)據(jù)采集系統(tǒng)上位機程序開發(fā)的快速簡單而且有效的方法,從而避開傳統(tǒng)的Windows編程技術。通過在LabVIEW下調用NI-VISA子控件程序,可以方便地實現(xiàn)與USB設備的通信和應用程序界面的開發(fā)。
VISA(Virtual Instrument Software Architecture)是一個用來與各種儀器總線進行通信的高級應用編程接口(API),不受平臺、總線和環(huán)境的限制。在利用NI-VISA完成對 USB設備的驅動后,即可在LabVIEW開發(fā)環(huán)境中直接使用VISA面板對USB設備進行控制和通信。LabVIEW是當今國際上唯一的編譯型圖形化編程語言,能方便、快捷地進行應用程序開發(fā)。本系統(tǒng)利用Lab-VIEW設計的USB多路數(shù)據(jù)采集系統(tǒng)用戶界面如圖4所示。
本系統(tǒng)實現(xiàn)了對16路外部信號的實時采集。圖4中在實時波形顯示區(qū)域,可以實時地顯示4個通道的波形曲線。這4個通道通過選擇可以是16個通道中的任意一個通道。在實時數(shù)據(jù)顯示區(qū)域,能觀測到每一路數(shù)據(jù)采集的結果;在左側的控制及狀態(tài)顯示區(qū)域,可以實現(xiàn)設備選擇、采集過程的控制以及數(shù)據(jù)采集系統(tǒng)的工作狀態(tài)顯示。
結 語
本設計實現(xiàn)了基于STM32F103x的USB多路數(shù)據(jù)采集系統(tǒng),以STM32F103x微控制器為主控芯片實現(xiàn)了外部信號的調理、采集、預處理和USB 數(shù)據(jù)傳輸,以及上位機應用程序的開發(fā)。主控芯片STM32F103x內部集成了豐富的功能模塊,使系統(tǒng)無需外擴大量芯片而能實現(xiàn)數(shù)據(jù)采集功能,降低了開發(fā)的復雜度和成本,達到了提高系統(tǒng)穩(wěn)定性的目的。