李 超 張紹陽 莊 瑞
(昆明船舶設(shè)備試驗(yàn)中心 昆明 650051)
在水下武器試驗(yàn)中,經(jīng)常需要測試平臺發(fā)射一定頻率的信號來檢測產(chǎn)品的相關(guān)響應(yīng)特性。以往試驗(yàn)中由于測試平臺與發(fā)射端一般都存在一定的距離,往往都要專門在發(fā)射端配備一名試驗(yàn)人員來負(fù)責(zé)與測試平臺檢測人員交流溝通并通過人工修改信號源與功放等設(shè)備參數(shù)的方式來完成信號發(fā)射任務(wù)。這種方法操作繁雜、耗費(fèi)人力的同時(shí)由于試驗(yàn)環(huán)境不確定性干擾因素的存在可能影響檢測人員與發(fā)射人員間正常通信進(jìn)而影響發(fā)射結(jié)果的準(zhǔn)確性與實(shí)時(shí)性。為此,本文基于STM32開發(fā)板設(shè)計(jì)實(shí)現(xiàn)了一個(gè)測試平臺發(fā)射模塊,該發(fā)射模塊使得上位機(jī)可以通過LwIP(Light Weight IP)即輕型IP協(xié)議通信網(wǎng)絡(luò)[1]來控制開發(fā)板發(fā)射300Hz、500Hz和800Hz三種頻率方波來更好地完成產(chǎn)品調(diào)試檢測任務(wù)。
本文中,開發(fā)平臺為位于測試平臺上的STM32F407VGT6開發(fā)板。某工程試驗(yàn)任務(wù)要求測試試驗(yàn)中發(fā)射300Hz、500Hz和800Hz三種不同頻率的方波,且每個(gè)頻率方波持續(xù)發(fā)射10s,然后間隔5s無信號輸出后再發(fā)射下一個(gè)頻率方波,來檢測產(chǎn)品對這三種頻率信號的響應(yīng)。
在嵌入式開發(fā)中LwIP通信協(xié)議以其開源、代碼量小及移植簡捷等特點(diǎn)[2],特別適合應(yīng)用于小型嵌入式設(shè)備間網(wǎng)絡(luò)通信中,故本文開發(fā)中采用LwIP通信協(xié)議來實(shí)現(xiàn)上位機(jī)與STM32開發(fā)板間通信。定時(shí)器PWM(Pulse Width Modulation)即脈寬調(diào)制模式輸出具有占用系統(tǒng)資源少、輸出波形好且操作簡便等優(yōu)點(diǎn)[3],因此,本文采用設(shè)定定時(shí)器PWM模式參數(shù)的方式來輸出特定頻率方波。
上位機(jī)通過LwIP通信網(wǎng)絡(luò)控制STM32開發(fā)板發(fā)射特定頻率方波的系統(tǒng)結(jié)構(gòu)圖如圖1所示[4]。上位機(jī)網(wǎng)絡(luò)調(diào)試助手軟件通過LwIP通信網(wǎng)絡(luò)向STM32開發(fā)板發(fā)送發(fā)射控制指令[5],STM32開發(fā)板收到發(fā)射指令后,通過設(shè)定定時(shí)器PWM模式相關(guān)參數(shù)的方式來分別輸出三種頻率方波完成發(fā)射任務(wù)。
圖1 發(fā)射模塊結(jié)構(gòu)圖
由于LwIP網(wǎng)絡(luò)協(xié)議的便捷及應(yīng)用廣泛性性,在STM32開發(fā)板庫函數(shù)中已集成了LwIP網(wǎng)絡(luò)協(xié)議[6],因此,在程序開發(fā)中無需再進(jìn)行移植操作,只需加上相應(yīng)頭文件直接調(diào)用相關(guān)庫函數(shù)即可。本文開發(fā)中,由于上位機(jī)與開發(fā)板間通信距離短,且為了保障開發(fā)板能實(shí)時(shí)響應(yīng)上位機(jī)控制指令等因素,本文采用傳輸速率較高的UDP通信協(xié)議方式來實(shí)現(xiàn)通信[7]。上位機(jī)通過網(wǎng)絡(luò)調(diào)試助手與開發(fā)板間綁定IP地址并連接后即可進(jìn)行實(shí)時(shí)通信[8~9]。
本文中,采用STM32F407VGT6開發(fā)板定時(shí)器1的PWM模式來輸出方波且選擇PA8管腳作為PWM輸出管腳[10]。發(fā)射模塊的程序設(shè)計(jì)如圖2所示,在程序模塊中注冊回調(diào)函數(shù)來實(shí)時(shí)接收上位機(jī)發(fā)來的信息,當(dāng)開發(fā)板收到上位機(jī)發(fā)來的“cs”(Control Shooting)字符命令時(shí),通過設(shè)置全局變量的值來使能發(fā)射模塊進(jìn)而運(yùn)行發(fā)射模塊程序。
圖2 發(fā)射模塊程序設(shè)計(jì)框圖
在發(fā)射模塊程序中,首先通過設(shè)置定時(shí)器1為PWM輸出模式并設(shè)置占空比為百分之五十使其輸出方波[11],然后定時(shí)器1的PWM模式持續(xù)輸出300Hz方波10s后關(guān)閉PWM輸出使PA8管腳5s內(nèi)無信號輸出,同理依次分別持續(xù)輸出500Hz和800Hz方波其間均保持5s間隔內(nèi)輸出端無信號輸出,800Hz方波輸出完成后即跳出發(fā)射模塊程序,等待下次收到上位機(jī)“cs”字符命令再次調(diào)動發(fā)射模塊程序,依次發(fā)射三種頻率方波即可實(shí)現(xiàn)本文發(fā)射300Hz、500Hz及800Hz三種頻率方波各10s間隔無信號5s的目標(biāo)。
PWM模式輸出三種頻率方波則可通過改變定時(shí)器1的PWM模式中的分頻系數(shù)Prescaler和重裝載值TimerPeriod兩個(gè)參數(shù)變量來實(shí)現(xiàn)[12]。STM32F407VGT6開發(fā)板定時(shí)器1的時(shí)鐘頻率為144MHz,則計(jì)數(shù)頻率為144M/(Prescaler+1),當(dāng)設(shè)置分頻系數(shù)Prescaler為479時(shí),則計(jì)數(shù)頻率為144M/480=300K,所以PWM方波輸出頻率為300kHz/(TimerPeriod+1),因此設(shè)置TimerPeriod為999即可輸出頻率為300Hz的PWM方波。同理通過設(shè)置分頻系數(shù)Prescaler為287和重裝載值Timer-Period為999則可以輸出頻率為500Hz的PWM方波;設(shè)置分頻系數(shù)Prescaler為179和重裝載值TimerPeriod為999則可以輸出頻率為800Hz的PWM 方波[13]。
如圖3所示為上位機(jī)通過網(wǎng)絡(luò)調(diào)試助手向STM32開發(fā)板發(fā)送“cs”發(fā)射指令。因?yàn)樽址眂”對應(yīng)的十六進(jìn)制ASCII碼為0X63,“s”對應(yīng)的十六進(jìn)制ASCII碼為0X73,所以圖3中發(fā)送的”cs”字符自動轉(zhuǎn)化為十六進(jìn)制0X6373傳輸。
圖3 上位機(jī)網(wǎng)絡(luò)調(diào)試助手發(fā)送“cs”發(fā)射指令
當(dāng)開發(fā)板通過LwIP網(wǎng)絡(luò)接收到上位機(jī)發(fā)射控制指令后便開啟發(fā)射模塊相繼發(fā)射300Hz、500Hz和800Hz方波,通過示波器觀察到PA8管腳輸出的PWM方波如圖4、圖5、圖6及圖7所示。
圖4 發(fā)射300Hz方波
圖5 間隔5s無信號輸出
圖6 發(fā)射500Hz方波
圖7 發(fā)射800Hz方波
由圖4~圖7示波器觀察到的波形圖可知,發(fā)射模塊發(fā)射的方波頻率準(zhǔn)、波形正,且通過用手機(jī)計(jì)時(shí)軟件計(jì)時(shí)的方式驗(yàn)證了該發(fā)射模塊可以很好地實(shí)現(xiàn)分別持續(xù)發(fā)射300Hz、500Hz和800Hz方波10s且中間間隔5s無輸出信號的功能。
本文基于STM32開發(fā)板設(shè)計(jì)并實(shí)現(xiàn)了測試平臺發(fā)射模塊,該模塊使得試驗(yàn)人員可以在上位機(jī)端直接控制STM32開發(fā)板發(fā)射300Hz、500Hz和800Hz三種頻率方波。通過示波器觀察PA8輸出管腳波形及手機(jī)計(jì)時(shí)檢驗(yàn)結(jié)果可知,該發(fā)射模塊較好地實(shí)現(xiàn)了上位機(jī)控制開發(fā)板發(fā)射特定頻率方波的功能,實(shí)現(xiàn)了STM32開發(fā)板定時(shí)器PWM輸出模式及LwIP嵌入式網(wǎng)絡(luò)在工程實(shí)踐中的應(yīng)用。此外該技術(shù)具有較高的靈活度和可控性,在嵌入式實(shí)時(shí)控制應(yīng)用中具有重要的實(shí)用價(jià)值。