基于CAN總線(xiàn)的嵌入式設備狀態(tài)監測平臺設計
引言
本文引用地址:http://dyxdggzs.com/article/201609/304013.htm實(shí)驗室中關(guān)鍵設備的信息需要及時(shí)采集、反饋到主控室中,又因為設備類(lèi)型多,促使設計者開(kāi)發(fā)主節點(diǎn)、從節點(diǎn)的結構,總線(xiàn)通信的監測平臺。同時(shí),平臺的用戶(hù)界面需具有二次開(kāi)發(fā)能力。因此,本文設計了一種設備狀態(tài)監測平臺。
本文設計的系統硬件基于STM32F103芯片,是基于A(yíng)RM的Cortex—M3架構,其外設單元資源豐富,能夠達到系統需求的性能指標。配備了一塊4.3寸TFT顯示、觸摸屏,可直觀(guān)地顯示與操作,體現了與用戶(hù)的互動(dòng)。
1 硬件架構
以STM32F103為主控芯片,主要包含了5個(gè)外圍電路模塊:實(shí)時(shí)時(shí)鐘、模數處理、數據存儲、數據傳輸和界面顯示。模數處理是A/D模塊加預處理電路,數據存儲采用一片2 MB SPI Flash,數據傳輸采用CAN接口和RS232接口,顯示屏是4.3寸。如圖1所示,為設備的硬件架構圖。

系統采用的STM32F103是ST公司推出的基于Cortex—M3內核的32位ARM芯片系列。本系統選用的STM32F103ZET6屬于該系列的高容量芯片,片內Flash容量為512 KB,片內SRAM容量為64 KB,主頻為72MHz。具備完整的FSMC總線(xiàn)、26位地址線(xiàn)和16位數據寬度。系統的顯示屏為翰彩4.3寸TFT液晶屏,分辨率為640×480,貼一塊電阻式觸摸屏。顯示屏驅動(dòng)模塊是SSD1963,采用了16位(5位紅色、6位綠色、5位藍色)64K接口模式,由FSMC數據接口連接控制。觸摸屏芯片為ADS7843,它輸入觸摸屏四路電壓,用SPI通信輸出觸摸點(diǎn)位置信息。圖2是LCD接口電路。

CAN總線(xiàn)協(xié)議的高可靠性使其在工業(yè)上得到廣泛應用。STM32F103的CAN總線(xiàn)單元支持協(xié)議2.0A和2.0B;選用的CAN收發(fā)器是TJA1050,在CAN協(xié)議控制器和物理總線(xiàn)之間起到接口作用,設計120 Ω的終端匹配電阻以適應不同的CAN總線(xiàn)網(wǎng)絡(luò )。CAN模塊的接口電路如圖3所示。

2 軟件設計
2.1 整體架構
嵌入式系統設計的第一步在于清晰地劃分任務(wù),設定優(yōu)先級,根據任務(wù)的執行情況調度系統資源。如圖4所示,μC/OS是系統的總調度,之上有6個(gè)主要的任務(wù),它們分別對應硬件架構中的模塊,運行整個(gè)程序。

每個(gè)任務(wù)分配不同的優(yōu)先級和啟動(dòng)方式,有周期性啟動(dòng)、信號量驅動(dòng)兩種方式。顯示功能由μCGUI驅動(dòng),FAT32文件由FatFs管理。任務(wù)劃分及資源如表1所列。

劃分任務(wù)之后,先實(shí)現板級支持包,再對通信協(xié)議進(jìn)行設計,然后繪制整個(gè)μCGUI的界面。
2.2 板級支持包
板級支持包是指在單板上實(shí)現全部基礎功能,例如時(shí)鐘管理、掉電備份、串口、CAN總線(xiàn)通信、A/D采樣以及顯示任務(wù)的fsmc接口、驅動(dòng)優(yōu)盤(pán)的SPI接口等。利用ST公司提供的標準化庫函數,調用庫函數進(jìn)行初始化,配置模塊參數,在使用時(shí)根據需要調用函數或在中斷進(jìn)行,完成后封裝成一個(gè)Lib庫文件使用。
在系統中斷里設置:①CAN中斷,用于快速反映CAN口信息;②USART接收中斷,用于接收串口信息;③RTC中斷,用于實(shí)時(shí)時(shí)鐘中斷;④USB有兩個(gè)中斷,用于USB端口的收發(fā)設置。板級支持包的函數如圖5所示。
全系統的參數如下:A/D總線(xiàn)模塊采樣率為1 kHz,最高為5 kHz,通道數8個(gè),可以拓展到16通道。串口速率為115 200,數據位為8位,無(wú)校驗。CAN用CAN-1口,設置為500 kbps、250 kbps、100kbps、50 kbps的4檔速率,擴展ID形式。
初始化單板需進(jìn)行時(shí)鐘校正,存儲正確的時(shí)間。單板掉電之后用電池工作,存入備份寄存器,上電再取時(shí)間參數(即秒的數量),換算成對應的日期和時(shí)間。顯示模塊采用FSMC并行接口控制,實(shí)現在屏幕上畫(huà)出單個(gè)點(diǎn)、單條直線(xiàn)等基本繪圖功能,就能提供接口給μC總線(xiàn)GUI使用。
2.3 CAN總線(xiàn)通信協(xié)議
本設計采用CAN總線(xiàn)協(xié)議,用狀態(tài)機進(jìn)行狀態(tài)轉換,在具體的指令驅動(dòng)下實(shí)現從握手到傳輸數據的過(guò)程。圖6是CAN總線(xiàn)通信的狀態(tài)機。

CAN總線(xiàn)通信指令是英文單詞縮寫(xiě)用ASCII碼表示的結果。在本設計中,有一個(gè)主節點(diǎn)和3個(gè)從節點(diǎn)。主節點(diǎn)和從節點(diǎn)對應的指令應答方式如圖7所示。初始化時(shí),主節點(diǎn)在發(fā)出“TEST”指令后,從節點(diǎn)回復“ALOK”,表示從節點(diǎn)收到指令,工作正常。1號和2號從節點(diǎn)負責測量溫度、濕度和壓力。主節點(diǎn)發(fā)送“NEED”指令,從節點(diǎn)1號和2號回復溫度、濕度數值給主節點(diǎn),格式是對應的“指令+數據”。主節點(diǎn)根據ID與指令,判斷數據正確性,及時(shí)顯示在屏幕上。

采樣時(shí),主節點(diǎn)在指令的驅動(dòng)下,切換不同狀態(tài)。主節點(diǎn)發(fā)送預備指令,確認從節點(diǎn)準備好之后,再發(fā)出采樣開(kāi)始的“SMPL”命令,從節點(diǎn)收到指令后,啟動(dòng)采樣,完成后回復“GOGO”指令。從節點(diǎn)在采樣結束后再回復,是為了減少采樣啟動(dòng)的延時(shí)。主節點(diǎn)進(jìn)入接收數據的狀態(tài),發(fā)送傳輸數據指令“DATA”,從節點(diǎn)先用“LENS”指令告訴主節點(diǎn),本次采樣長(cháng)度是多少,便于主節點(diǎn)在接收數據的時(shí)候統計,是否接收到了數量正確的數據。從節點(diǎn)開(kāi)始發(fā)送數據,最后發(fā)送“ENDD”指令,告訴主節點(diǎn)數據傳送結束。主節點(diǎn)的數據標識清空,回到初始狀態(tài)。這樣完成了一輪數據采樣、發(fā)送過(guò)程。
評論