STM32F103x的USB多路數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)
2.2 STM32F103x的ADC模塊
STM32F103x系列微控制器所帶的2個(gè)12位ADC是一種逐次逼近型模擬數(shù)字轉(zhuǎn)換器。它有16個(gè)外部通道,可測(cè)量16個(gè)外部信號(hào)源。各通道的A/D 轉(zhuǎn)換可以是單次、連續(xù)、掃描或不連續(xù)模式執(zhí)行,其轉(zhuǎn)換結(jié)果可以左對(duì)齊或右對(duì)齊方式存儲(chǔ)在16位數(shù)據(jù)存儲(chǔ)器中。ADC轉(zhuǎn)換頻率最高可達(dá)1 MHz,且每個(gè)通道的采樣間隔時(shí)間均可獨(dú)立編程設(shè)置。在通道轉(zhuǎn)換期間,ADC能產(chǎn)生DMA請(qǐng)求,使DMA來(lái)傳輸ADC轉(zhuǎn)換值,提高了數(shù)據(jù)傳輸?shù)男省?ADC模塊的結(jié)構(gòu)示意圖如圖2所示。
2.3 STM32F103x的USB2.0全速設(shè)備接口模塊
USB接口模塊為上位機(jī)和由微控制器實(shí)現(xiàn)的功能設(shè)備之間提供了符合USB規(guī)范的通信連接。USB接口模塊通過(guò)和微控制器共享一塊專(zhuān)用的數(shù)據(jù)緩沖區(qū)實(shí)現(xiàn)上位機(jī)和系統(tǒng)存儲(chǔ)器之間的數(shù)據(jù)傳輸。這塊專(zhuān)用數(shù)據(jù)緩沖區(qū)的大小由所使用的端點(diǎn)數(shù)目和每個(gè)端點(diǎn)最大的數(shù)據(jù)分組大小來(lái)決定,每個(gè)端點(diǎn)最大可使用512字節(jié)緩沖區(qū),最多可用于16個(gè)單向或8個(gè)雙向端點(diǎn)。USB接口模塊根據(jù)UJSB
規(guī)范實(shí)現(xiàn)了令牌分組的檢測(cè),數(shù)據(jù)發(fā)送/接收的處理和握手分組的處理。整個(gè)傳輸?shù)臄?shù)據(jù)格式由硬件自動(dòng)生成,其中包括CRC的生成和校驗(yàn)。USB2.0全速設(shè)備接口模塊的結(jié)構(gòu)示意圖如圖3所示。
3 數(shù)據(jù)采集系統(tǒng)軟件設(shè)計(jì)
數(shù)據(jù)采集系統(tǒng)軟件設(shè)計(jì)主要包括設(shè)備固件程序設(shè)計(jì)和上位機(jī)應(yīng)用程序設(shè)計(jì)兩部分。
3.1 設(shè)備固件程序
設(shè)備固件程序設(shè)計(jì)的兩個(gè)主要部分是ADC模塊的配置和USB模塊的配置與通信。
(1)ADC模塊的配置
意法半導(dǎo)體公司針對(duì)ARM的32位STM32F103x系列MCU提供了固件庫(kù)。該固件庫(kù)提供了包括ADC在內(nèi)的各種功能模塊的軟件使用接口,使用該固件庫(kù)可以有效節(jié)省用戶(hù)產(chǎn)品的開(kāi)發(fā)和調(diào)試時(shí)間。利用該庫(kù),本設(shè)計(jì)中ADC的配置代碼如下:
ADC校準(zhǔn)之后通過(guò)函數(shù)ADC_SoftwareStart-ConvCmd(ADC1,ENABLE)即可啟動(dòng)A/D轉(zhuǎn)換。
評(píng)論