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