(昆明船舶設(shè)備試驗中心 昆明 650051)
在嵌入式開發(fā)應(yīng)用中往往需要實現(xiàn)上位機(jī)與嵌入式設(shè)備間的實時信息交互。STM32H7芯片是目前ST公司推出的基于Cortex M7內(nèi)核最新和最先進(jìn)的芯片[1],該芯片具有運(yùn)算速率高、功耗低及開發(fā)便捷等優(yōu)點(diǎn)。STM32H7開發(fā)板采用目前最新最先進(jìn)的FDCAN通信技術(shù),F(xiàn)DCAN通信速率是傳統(tǒng)CAN通信的五倍多,傳輸速率和實時響應(yīng)性遠(yuǎn)超傳統(tǒng)CAN通信[2],STM32H7開發(fā)板400MHz的超高主頻及先進(jìn)的FDCAN技術(shù)相結(jié)合可以完美解決絕大部分工程實驗中的CAN通信需求[3]。某工程項目需要實現(xiàn)上位機(jī)實時控制信號采集系統(tǒng)采集數(shù)據(jù)并將相關(guān)數(shù)據(jù)上傳至上位機(jī)進(jìn)行數(shù)據(jù)分析與處理的功能,基于此,本文設(shè)計實現(xiàn)了基于STM32H7開發(fā)板的FDCAN通信系統(tǒng)。
上位機(jī)與信號采集系統(tǒng)間FDCAN通信系統(tǒng)框圖如圖1所示。從圖中可知,要實現(xiàn)上位機(jī)與信號采集系統(tǒng)間實時信息交互功能就要實現(xiàn)上位機(jī)與FPGA開發(fā)板間的通信[4~6]。本文基于此,采用一塊STM32H7開發(fā)板作為通信模塊來構(gòu)建FPGA開發(fā)板與上位機(jī)間的通信橋梁,實現(xiàn)了上位機(jī)與STM32H7開發(fā)板間的FDCAN通信及STM32H7開發(fā)板與FPGA開發(fā)板間的雙口RAM通信[7]。此外,根據(jù)項目需要STM32H7開發(fā)板還實現(xiàn)了每秒向上位機(jī)發(fā)送一幀特定格式數(shù)據(jù)幀以便上位機(jī)實時監(jiān)測信號采集系統(tǒng)的運(yùn)行狀態(tài)[8~11]。
圖1 上位機(jī)與信號采集系統(tǒng)間FDCAN通信系統(tǒng)框圖
本文使用的STM32H743ZI開發(fā)板如圖2所示,在調(diào)試實驗中采用PC-CAN總線接口卡連接上位機(jī)和開發(fā)板CANH與CANL管腳[12]。
圖2 STM32H7開發(fā)板
此外,如圖3所示本文采用STM32H743ZI開發(fā)板與FPGA通過一塊2M大小的雙口RAM硬件連接可共同讀寫訪問雙口RAM的方式來實現(xiàn)STM32H743ZI開發(fā)板與FPGA間的實時信息交互[13]。
本文設(shè)計實現(xiàn)的基于STM32H7的FDCAN通信系統(tǒng)工作流程如圖4所示。首先,上位機(jī)與STM32H7開發(fā)板建立CAN總線連接,并按照項目操作要求向STM32H7開發(fā)板發(fā)送指令,STM32H7開發(fā)板在接收到上位機(jī)指令后將指令寫入雙口RAM中指定的地址并通過CAN總線向上位機(jī)反饋執(zhí)行應(yīng)答,F(xiàn)PGA監(jiān)測到雙口RAM指定地址有數(shù)據(jù)寫入后就讀取并響應(yīng)該數(shù)據(jù)指令。當(dāng)FPGA收到的上位機(jī)指令是上傳采集數(shù)據(jù)時就將采集到的頻率、相位等數(shù)據(jù)寫入雙口RAM約定好的地址并給STM32H7開發(fā)板一個硬件中斷,STM32H7開發(fā)板響應(yīng)中斷到雙口RAM指定地址讀取相關(guān)數(shù)據(jù)并將其通過CAN總線上傳至上位機(jī)供上位機(jī)進(jìn)行數(shù)據(jù)分析與處理。這樣便實現(xiàn)了本文中上位機(jī)與信號采集系統(tǒng)間的實時通信系統(tǒng)。
圖3 STM32H7與FPGA共同訪問雙口RAM
圖4 基于STM32H7的FDCAN通信設(shè)計流程圖
由于本文應(yīng)用中CAN總線掛載的設(shè)備及工作模式較多,為了便于全網(wǎng)規(guī)劃和區(qū)分各個幀ID,在編程實現(xiàn)時,本文采用29位擴(kuò)展幀模式來辨別各個設(shè)備在不同狀態(tài)下發(fā)送的CAN通信指令;另外,由于本文中的FDCAN通信系統(tǒng)只需要接受4個特定幀ID的數(shù)據(jù),故本文在CAN總線濾波器設(shè)置時采用濾波器列表模式列出需要交互信息的4個幀ID,使得CAN總線可以硬件過濾掉不需要的數(shù)據(jù)以提高該通信系統(tǒng)的健壯性,并通過Switch語句識別接收指令進(jìn)而進(jìn)行相關(guān)操作的方式提高程序執(zhí)行效率從而提升了系統(tǒng)實時響應(yīng)能力。此外,根據(jù)項目要求,STM32H7開發(fā)板在接收到上位機(jī)檢測指令時還調(diào)用TIM3定時器每秒鐘產(chǎn)生中斷并通過CAN總線定時每秒鐘向上位機(jī)發(fā)送特定格式數(shù)據(jù)幀的方式實現(xiàn)了心跳幀功能。
如圖5所示為本文基于STM32H7開發(fā)板設(shè)計實現(xiàn)的FDCAN通信系統(tǒng)中上位機(jī)通過CAN總線向信號采集系統(tǒng)發(fā)送數(shù)據(jù)查詢指令及上傳相關(guān)數(shù)據(jù)的CAN調(diào)試助手試驗截圖。從圖中可以看出,該通信系統(tǒng)能迅速響應(yīng)數(shù)據(jù)查詢指令并及時上傳采集信息。
圖5 查詢數(shù)據(jù)調(diào)試截圖
如圖6所示為本文設(shè)計實現(xiàn)的FDCAN通信系統(tǒng)實現(xiàn)心跳幀功能的CAN調(diào)試助手試驗調(diào)試截圖。從圖中可以看出,該通信系統(tǒng)能及時作出實時響應(yīng)并成功完成心跳幀的功能。
圖6 心跳幀調(diào)試截圖
本文基于STM32H7開發(fā)板設(shè)計實現(xiàn)了上位機(jī)與某信號輻射與采集系統(tǒng)間的FDCAN通信系統(tǒng)。通過CAN調(diào)試助手結(jié)果可知,該FDCAN通信系統(tǒng)較好地完成了信號采集系統(tǒng)實時響應(yīng)上位機(jī)指令及上傳試驗數(shù)據(jù)等任務(wù),充分體現(xiàn)了STM32H7開發(fā)板超高主頻高性能、實時響應(yīng)性強(qiáng)、開發(fā)便捷及FDCAN通信技術(shù)傳輸速率快、可靠性強(qiáng)等特點(diǎn)。此外本文設(shè)計實現(xiàn)的FDCAN通信系統(tǒng)具有較高的靈活度和可控性,在嵌入式實時通信工程應(yīng)用中具有重要的實用價值。