基于SAE J1939協(xié)議的車輛信息采集與診斷模塊
2.2 軟件設(shè)計
系統(tǒng)的軟件設(shè)計采用Keil RealView MDK-ARM環(huán)境編寫,通過J-Link調(diào)試仿真器與STM32 F103C8T6的JTAG接口連接,實現(xiàn)在線仿真調(diào)試。
ST公司為STM32系列微控制器開發(fā)了專門的固件庫和接口函數(shù),大大簡化了軟件開發(fā)的過程。系統(tǒng)上電后首先對微控制器的RCC(重啟和時鐘控制)模塊以及NVIC(嵌套向量中斷控制器)模塊進行初始化,并使能CAN中斷,設(shè)置CAN屏蔽碼和驗收碼。CAN模塊的初始化過程是這樣的:a.根據(jù)CAN節(jié)點相關(guān)信息初始化一個CAN_InitTypeDef型結(jié)構(gòu),并調(diào)用CAN_Init函數(shù)對CAN接口進行初始化;b.創(chuàng)建CAN_FilterInitTypeDef結(jié)構(gòu)體,調(diào)用CAN_FilterInit函數(shù)對CAN過濾器進行初始化;c.調(diào)用CAN_ITConfig函數(shù)對CAN中斷源進行使能設(shè)置。系統(tǒng)初始化完成后,等待CAN總線接收中斷的產(chǎn)生,并判斷總線數(shù)據(jù)是否滿足屏蔽條件,將29位標識符報文與驗收碼、屏蔽碼值逐位比較,屏蔽碼用于定位相關(guān)位(0為相關(guān),1為不相關(guān))。僅當標識符中的相關(guān)位與驗收碼相應(yīng)位相同時,系統(tǒng)才接收報文;如滿足屏蔽條件則從寄存器讀取數(shù)據(jù)并存入緩沖區(qū),并通過CAN Receive函數(shù)讀取相應(yīng)數(shù)據(jù),再根據(jù)SAE J1939協(xié)議判斷計算車輛工況及故障代碼等信息,處理后通過USB或串行口發(fā)送到車載多媒體設(shè)備和虛擬儀表進行顯示。例如:接收的數(shù)據(jù)為0C FEF2 00 xx xx xx 0D 15 xx xx xx (xx為任意數(shù)據(jù)),若驗收碼為Ox00000000,屏蔽碼為OxlFFFFFFF,則接收該報文。根據(jù)SAE J1939-71協(xié)議,此報文為PGN65266,來自發(fā)動機ECU;可以得知第4、5字節(jié)為平均油耗,并遵循低位在前高位在后的傳輸方式,計算出車輛平均油耗=原始數(shù)×分辨率+偏移量=5389×1/5 12+O=10.5km/L。同理可計算其他車輛工況數(shù)據(jù)。圖3為CAN總線數(shù)據(jù)接收程序流程圖。本文引用地址:http://butianyuan.cn/article/195288.htm
3 結(jié)語
本文介紹了基于CAN總線和SAE J1939協(xié)議的車輛信息采集與診斷模塊的設(shè)計開發(fā)過程,利用STM32F103C8T6微控制器和CAN隔離收發(fā)器CTM825lT等器件實現(xiàn)了車輛信息的實時采集,最大限度地利用了器件本身的接口功能并降低了外圍電路的成本。本模塊工作穩(wěn)定、性能可靠,軟件各部分功能運行完好,并可與影音娛樂產(chǎn)品和虛擬儀表產(chǎn)品相互結(jié)合,有一定的實用價值。隨著汽車電子化程度的不斷提高,CAN總線和SALE J1939協(xié)議必將得到更為廣泛的應(yīng)用。
評論