新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于CAN總線的嵌入式設備狀態監測平臺設計

        基于CAN總線的嵌入式設備狀態監測平臺設計

        作者: 時間:2016-09-12 來源:網絡 收藏

        引言

        本文引用地址:http://www.104case.com/article/201609/304013.htm

        實驗室中關鍵設備的信息需要及時采集、反饋到主控室中,又因為設備類型多,促使設計者開發主節點、從節點的結構,總線通信的監測平臺。同時,平臺的用戶界面需具有二次開發能力。因此,本文設計了一種設備狀態監測平臺。

        本文設計的系統硬件基于STM32F103芯片,是基于ARM的Cortex—M3架構,其外設單元資源豐富,能夠達到系統需求的性能指標。配備了一塊4.3寸TFT顯示、觸摸屏,可直觀地顯示與操作,體現了與用戶的互動。

        1 硬件架構

        以STM32F103為主控芯片,主要包含了5個外圍電路模塊:實時時鐘、模數處理、數據存儲、數據傳輸和界面顯示。模數處理是A/D模塊加預處理電路,數據存儲采用一片2 MB SPI Flash,數據傳輸采用CAN接口和RS232接口,顯示屏是4.3寸。如圖1所示,為設備的硬件架構圖。

        基于CAN總線的嵌入式設備狀態監測平臺設計

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

        基于CAN總線的嵌入式設備狀態監測平臺設計

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

        基于CAN總線的嵌入式設備狀態監測平臺設計

        2 軟件設計

        2.1 整體架構

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

        基于CAN總線的嵌入式設備狀態監測平臺設計

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

        基于CAN總線的嵌入式設備狀態監測平臺設計

        劃分任務之后,先實現板級支持包,再對通信協議進行設計,然后繪制整個μCGUI的界面。

        2.2 板級支持包

        板級支持包是指在單板上實現全部基礎功能,例如時鐘管理、掉電備份、串口、CAN總線通信、A/D采樣以及顯示任務的fsmc接口、驅動優盤的SPI接口等。利用ST公司提供的標準化庫函數,調用庫函數進行初始化,配置模塊參數,在使用時根據需要調用函數或在中斷進行,完成后封裝成一個Lib庫文件使用。

        在系統中斷里設置:①CAN中斷,用于快速反映CAN口信息;②USART接收中斷,用于接收串口信息;③RTC中斷,用于實時時鐘中斷;④USB有兩個中斷,用于USB端口的收發設置。板級支持包的函數如圖5所示。

        全系統的參數如下:A/D總線模塊采樣率為1 kHz,最高為5 kHz,通道數8個,可以拓展到16通道。串口速率為115 200,數據位為8位,無校驗。CAN用CAN-1口,設置為500 kbps、250 kbps、100kbps、50 kbps的4檔速率,擴展ID形式。

        初始化單板需進行時鐘校正,存儲正確的時間。單板掉電之后用電池工作,存入備份寄存器,上電再取時間參數(即秒的數量),換算成對應的日期和時間。顯示模塊采用FSMC并行接口控制,實現在屏幕上畫出單個點、單條直線等基本繪圖功能,就能提供接口給μC總線GUI使用。

        2.3 CAN總線通信協議

        本設計采用CAN總線協議,用狀態機進行狀態轉換,在具體的指令驅動下實現從握手到傳輸數據的過程。圖6是CAN總線通信的狀態機。

        基于CAN總線的嵌入式設備狀態監測平臺設計

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

        基于CAN總線的嵌入式設備狀態監測平臺設計

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


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 广汉市| 三台县| 车险| 固阳县| 济南市| 上栗县| 连南| 葫芦岛市| 长顺县| 玛曲县| 故城县| 抚松县| 亳州市| 滁州市| 从江县| 建水县| 临湘市| 株洲县| 通许县| 广德县| 新安县| 淮北市| 怀仁县| 红桥区| 象州县| 邹平县| 大同市| 德保县| 泗水县| 广灵县| 万源市| 平顺县| 靖西县| 新竹市| 许昌市| 祥云县| 嘉义县| 肃宁县| 突泉县| 铜陵市| 乐清市|