基于CAN總線的行車記錄儀設計
系統軟件部分主要功能模塊包括:主程序模塊,初始化模塊,中斷處理模塊。
3.1 主程序設計
主程序流程圖如圖3所示。
由流程圖3可看出,在整個程序運行期間,采用查詢的方式來檢測電源是否掉電。由于車內CAN 信號發包頻率均為幾十毫秒,如果液晶屏實時顯示數據的話,屏幕刷新太快,不易于觀察,因此本系統設置當緩存接收滿時,刷新一次屏幕數據,這樣的刷新頻率足以滿足用戶的需要,無論存儲開關是否閉和,液晶屏均提供顯示服務。記錄過程中突然掉電或者用戶斷開存儲開關,都將導致當前所記錄文件的關閉,即修改文件指針和文件長度等與文件系統相關的處理。
圖3 主程序流程
3.2 初始化模塊
(1)CAN模塊的初始化
對 CAN控制器的初始化設計是重點,必須對寫入的每個寄存器進行仔細全面的考慮,如果初始化沒成功,系統將無法正常工作。本記錄儀實質上是作為整個CAN 網絡的一個增加節點參與通信,網絡內的所有CAN節點必須同步。要進行CAN模塊的初始化,首先必須進入初始化模式,通過設置IN— ITRQ(CANCTLO)位發起請求,并得到INITAK(CANCTL1)的回應后,MSCAN進入初始化模式。在此模式下,通常是對CAN一 BTR0、CANBTR1、CANIDAR、CANIDMR等寄存器進行配置。CANBTR0決定波特率預分頻和同步跳轉寬度的數值,CAN—BTR1決定周期的寬度、采樣點的位置以及在每個采樣點進行采樣的次數,根據具體CAN總線通信速率設置適當的值。CANIDAR、CANIDMR共同決定哪些ID 幀需要接收,在本系統中,CAN總線記錄儀的目的是接收CAN線數據全部報文,因而設置CANIDMR為0xFFh,即所有位都不屏蔽,所有的幀都接收。將需要配置的寄存器設置好后,需退出初始化模式,參與CAN總線通信。
(2)CH375的初始化
主要是設置USB的工作模式,通過CH375提供的SETUSB MODE命令,設置其工作模式代碼為06H,即USB主機方式下,自動檢測USB設備是否連接,當USB設備連接或者斷開時都會產生中斷通知外部單片機,并自動定時產生USB幀周期開始包SOF發送給已經連接的USB設備。通常情況下,設置USB工作模式在20微秒時間內完成,完成后輸出操作狀態。通過讀 PA端口得到操作狀態,查看是否設置成功。如不成功,表明CH375出錯,例如芯片型號錯或者處于串口方式或者不支持,則無法進行u盤的讀寫。
3.3中斷處理模塊
中斷模塊即接受中斷,由于本系統設置所有的幀都被接收,因而必須在中斷處理函數里對接收到的幀進行判斷,并進行“解碼”。現就實例來詳細說明“解碼”的過程,如表1所示,列舉了A5車內2個重要的CAN消息,其ID均是采用標準格式 (11位),數據單元占64位(8字節)。中斷接收到數據幀后,首先取其ID號,對于標準幀格式來說,IDRO存放的是IDIO~ID3,IDR1的高3 位存放的是ID2~ID0,因此ID號=(IDR0《《3)l(IDRI》》5),其中ID號設置為int型變量。得到ID號后,將根據消息列表進行消息解碼,例如,假設取得的ID號是0xFA,這是來自發動機控制單元EMS(enginemanagement system)的消息幀,我們將從它的64位數據單元中取出所關心的數據,其中64位數據在結果寄存器DSR0-DSR7中的存放順序如表2所示。假設我們從此幀中取出如下3個數據:Engine speedRPM,M eanEfectiveTorque,DriveRequest。
表 3列出了它們在64位數據單元中的起始位和所占位數。在此對數據位數為16的Engine speed RPM 稍作解釋,由于選用的單片機采用的是Motorola大端模式,因此其最低位是DSR1中的第8位,而不是DSR0中的第0位,而我們的上層PC機數據分析軟件是Intel格式的,于是需要對多字節數據進行大小端轉換。下面給出函數語句示例:
Engine speed RPM DSR1;
Engine speed RPM =(Engine speed RPM《《8)IDSR0;
M eanEfectiveTorque=DSR2;
DriverRequest=DSR3;
對多字節數據需進行大小端轉換,而單字節數據則是直接拷貝。將采集的數據存儲在緩存里,然后結束本次中斷。
3.4 其它模塊
液晶模塊,對于需要固定顯示的部分,利用“預制畫面”以減少工作中通訊傳輸的負擔和重復性工作。讀寫u盤模塊,u盤中的數據都是以文件格式存儲的,單片機讀寫u盤則主要是根據FAT文件系統進行文件和目錄的各種操作,CH375提供了u盤文件級子程序庫,此庫支持FAT16和FAT32文件系統,用戶只需調用此庫的各種API函數就可實現數據塊的讀寫。A/D轉換模塊,對控制寄存器5(ATDCTL5)的配置要慎重,因為對此寄存器的寫操作將中斷當前模數轉換序列并且開始一個新的轉換序列,建議將此寄存器放在前4個控制寄存器之后配置。
4 結束語
本系統所開發的行車記錄儀已成功的運用于A5車的3萬公里、5萬公里等各種路試,準確記錄了行車過程中的重要數據,對于研究人員進行性能分析、故障分析、以及標定工作提供了重要的數據依據。在已具備CAN 總線的車輛上使用基于CAN的行車記錄儀,可大幅度降低系統復雜度,并降低成本。對于不同的車型,只需軟件的少許修改而不需要更改硬件,使得記錄儀具有極高的靈活性和可移植性,從而廣泛應用于各種車型。
評論