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