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