基于STM32的傳感器接口模塊的設(shè)計(jì)
2.2 電壓/數(shù)字IO接口模塊設(shè)計(jì)
電壓接口模塊與數(shù)字開關(guān)量接口模塊基本沿用電流接口模塊的設(shè)計(jì)。不同之處在于模擬輸入部分無(wú)需經(jīng)過(guò)電流一電壓轉(zhuǎn)換,直接經(jīng)運(yùn)放輸入ADC。數(shù)字量接口直接由MCU的IO端口引出。傳感器輸出的電壓直接輸入同向放大電路至AD轉(zhuǎn)換所需要的電平。此處運(yùn)放就相當(dāng)于一個(gè)電壓跟隨器,顯著特點(diǎn)就是,輸入阻抗高,而輸出阻抗低,可以提高驅(qū)動(dòng)能力。
2.3 接口模塊硬件實(shí)現(xiàn)
整個(gè)板子盡量使用緊湊布局。電源以及傳感器接口布置于左側(cè),使用螺絲接線端子引出。串口以及以太網(wǎng)口布局在右側(cè)。整個(gè)模擬與數(shù)字部分基本分開而設(shè),有效避免干擾。布局基本沒什么變化,左邊螺絲接線端子往外移了一些,主要是考慮到外殼封裝上后螺絲端子可能不夠外露的問題。
3 基于STM32的標(biāo)準(zhǔn)化接口模塊固件設(shè)計(jì)
標(biāo)準(zhǔn)化接口模塊的固件程序包括主程序、配置程序、ADC數(shù)據(jù)采樣程序、EEPROM讀寫程序、以太網(wǎng)網(wǎng)口驅(qū)動(dòng)程序、UDP協(xié)議棧的嵌入。
接口模塊中共用到三種通信總線。ADC以及以太網(wǎng)控制器與MCU間為SPI總線,EEPROM與MCU間為IIC總線,另外接口模塊提供UART串口對(duì)外通信。以外網(wǎng)嵌入U(xiǎn)DP協(xié)議。
3.1 AD數(shù)據(jù)采樣
AD數(shù)據(jù)采樣是整個(gè)系統(tǒng)接口模塊固件設(shè)計(jì)的核心工作,也是實(shí)現(xiàn)傳感器信息獲取的關(guān)鍵所在。該模塊負(fù)責(zé)將采集到的傳感器信息轉(zhuǎn)化為數(shù)字信號(hào)。
AD數(shù)據(jù)采樣主要完成如下的幾個(gè)功能:
(1)初始化。該工作主要完成對(duì)一些物理器件的引腳功能、工作模式等進(jìn)行預(yù)定義;
(2)AD轉(zhuǎn)換。通過(guò)軟件啟動(dòng)模數(shù)轉(zhuǎn)換芯片,完成模擬信號(hào)到數(shù)字信號(hào)的轉(zhuǎn)換;
(3)數(shù)據(jù)接收和發(fā)送。實(shí)時(shí)采集轉(zhuǎn)換后的信息,同時(shí)發(fā)送相應(yīng)的控制命令,以切換采集通道。
在數(shù)據(jù)采集過(guò)程中,我們可能需要切換不同通道,從而實(shí)現(xiàn)對(duì)多個(gè)傳感器信息的獲取。實(shí)際設(shè)計(jì)中,控制器會(huì)在采集本次通道轉(zhuǎn)換結(jié)果的同時(shí),發(fā)送下次采集通道的編號(hào)。詳細(xì)操作步驟如下:
(1)需采集的通道地址(Ch)通過(guò)SPI接口寫入ADS8344的相應(yīng)寄存器,應(yīng)用設(shè)定的波特率來(lái)設(shè)置接口傳輸速度;
(2)通過(guò)MCU設(shè)置GPIOB12(作為AD的CS信號(hào))為低來(lái)啟動(dòng)ADS8344進(jìn)行數(shù)據(jù)采樣和轉(zhuǎn)換,數(shù)據(jù)傳輸方式為SPI發(fā)送模式;
(3)當(dāng)數(shù)據(jù)發(fā)送完畢后,設(shè)置GPIOB12為高電平,ADS8344結(jié)束數(shù)據(jù)傳輸,進(jìn)入空閑模式并等待MCU的指令。此外,固件代碼中設(shè)置了對(duì)ADC進(jìn)行軟標(biāo)定的程序。這樣可以通過(guò)精密信號(hào)源對(duì)ADC進(jìn)行標(biāo)定,提高采樣精讀。標(biāo)定信息存儲(chǔ)于EEPROM中。功能實(shí)現(xiàn)代碼如下:
3.2 以太網(wǎng)口驅(qū)動(dòng)
同樣需要先進(jìn)行SPI接口和GPIO端口初始化,與之前ADC類似,只不過(guò)這里用SPI1口。GPIO初始化也不再多說(shuō)。以太網(wǎng)驅(qū)動(dòng)部分主要是數(shù)據(jù)包的發(fā)送/接收,緩沖區(qū)的讀寫,物理層的寫等函數(shù)。SPI口的發(fā)送/接收函數(shù)如下:
評(píng)論