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