CAN總線(xiàn)行車(chē)記錄儀設計
(2)單片機和液晶單獨供電。主電源正常工作時(shí),整個(gè)系統的電源由主電源供給,一旦主電源掉電,備用電池只給單片機供電,供單片機完成關(guān)閉文件處理,而液晶因掉電而不工作。因液晶的功耗較大而備份電池電力有限,此種分開(kāi)2路的供電方式不但能提供關(guān)閉文件的電源需要,而且還節約了電池電力。
當然,備份電池不可能長(cháng)時(shí)間使用,只能用于系統緊急關(guān)閉文件處理,為此設計了電源檢測信號,一旦檢測出主電源掉電,既啟用蜂鳴器和發(fā)光二極管來(lái)提醒用戶(hù)電源供電不正常,需工作人員檢查記錄儀電源接頭。
2.5 CI-I375接口電路模塊
本系統中的USB 接口芯片選用的南京沁恒電子公司的CH375,該芯片支持主機方式和設備方式.它具有8位數據總線(xiàn)和讀、寫(xiě)、片選控制線(xiàn)以及中斷輸出,可以方便地掛接到單片機的系統總線(xiàn)上。還內置了處理Mass—Storage海量存儲設備的專(zhuān)用通訊協(xié)議的固件,外部單片機可以直接以扇區為基本單位讀寫(xiě)u盤(pán)。
讀選通信號RD#、寫(xiě)選通信號WR#、片選信號CS#均是輸入信號且低電平有效,CS#是中斷請求輸出信號,也是低電平有效。而A0信號用來(lái)區分命令和數據,當A0=1時(shí)可以寫(xiě)命令,當A0=0時(shí)可以讀寫(xiě)數據,8位雙向數據總線(xiàn)與單片機的PA端口(PA0-PA7)相連,并口傳輸。其硬件上支持自動(dòng)檢測 USB設備連接功能,在主機方式下正常連接時(shí),其ACT#腳輸出低電平,因此使ACT# I腳外接上拉電阻并串聯(lián)一發(fā)光二極管,可用來(lái)標示USB設備是否正常連接。
在布PCB時(shí),盡量使7805芯片布在板子邊緣且散熱比較好的地方,并且遠離液晶屏幕。因為在實(shí)際過(guò)程中,經(jīng)過(guò)測試,7805芯片產(chǎn)生大量的熱量,如果長(cháng)時(shí)間使用并且靠近液晶屏幕,將會(huì )影響液晶的顯示效果。另外,盡量使電源模塊的發(fā)光二極管靠近電源接口,USB模塊的發(fā)光二極管靠近USB模塊,并且以顏色區分開(kāi),方便用戶(hù)觀(guān)察。
3 系統軟件設計
在軟件設計方面采用模塊化設計思想和中斷調用方案,系統上電后首先進(jìn)行初始化,對 CAN總線(xiàn)上的信息采用中斷方式接收,由XGATE處理中斷程序,系統每接收一幀信息,便產(chǎn)生一次中斷來(lái)觸發(fā)微處理器進(jìn)入中斷,在中斷服務(wù)程序中讀取該幀數據并暫存在緩存里。此緩存是XGATE和CPU共享的,由于通過(guò)CH375讀寫(xiě)u盤(pán)的數據單位是一個(gè)扇區,所以本系統將緩存設置為一個(gè)扇區 (512Byte),當緩存滿(mǎn)時(shí),由主程序將數據轉存到U盤(pán)中。
系統軟件部分主要功能模塊包括:主程序模塊,初始化模塊,中斷處理模塊。
3.1 主程序設計
主程序流程圖如圖3所示。
由流程圖3可看出,在整個(gè)程序運行期間,采用查詢(xún)的方式來(lái)檢測電源是否掉電。由于車(chē)內CAN 信號發(fā)包頻率均為幾十毫秒,如果液晶屏實(shí)時(shí)顯示數據的話(huà),屏幕刷新太快,不易于觀(guān)察,因此本系統設置當緩存接收滿(mǎn)時(shí),刷新一次屏幕數據,這樣的刷新頻率足以滿(mǎn)足用戶(hù)的需要,無(wú)論存儲開(kāi)關(guān)是否閉和,液晶屏均提供顯示服務(wù)。記錄過(guò)程中突然掉電或者用戶(hù)斷開(kāi)存儲開(kāi)關(guān),都將導致當前所記錄文件的關(guān)閉,即修改文件指針和文件長(cháng)度等與文件系統相關(guān)的處理。

圖3 主程序流程
3.2 初始化模塊
(1)CAN模塊的初始化
對 CAN控制器的初始化設計是重點(diǎn),必須對寫(xiě)入的每個(gè)寄存器進(jìn)行仔細全面的考慮,如果初始化沒(méi)成功,系統將無(wú)法正常工作。本記錄儀實(shí)質(zhì)上是作為整個(gè)CAN 網(wǎng)絡(luò )的一個(gè)增加節點(diǎn)參與通信,網(wǎng)絡(luò )內的所有CAN節點(diǎn)必須同步。要進(jìn)行CAN模塊的初始化,首先必須進(jìn)入初始化模式,通過(guò)設置IN— ITRQ(CANCTLO)位發(fā)起請求,并得到INITAK(CANCTL1)的回應后,MSCAN進(jìn)入初始化模式。在此模式下,通常是對CAN一 BTR0、CANBTR1、CANIDAR、CANIDMR等寄存器進(jìn)行配置。CANBTR0決定波特率預分頻和同步跳轉寬度的數值,CAN—BTR1決定周期的寬度、采樣點(diǎn)的位置以及在每個(gè)采樣點(diǎn)進(jìn)行采樣的次數,根據具體CAN總線(xiàn)通信速率設置適當的值。CANIDAR、CANIDMR共同決定哪些ID 幀需要接收,在本系統中,CAN總線(xiàn)記錄儀的目的是接收CAN線(xiàn)數據全部報文,因而設置CANIDMR為0xFFh,即所有位都不屏蔽,所有的幀都接收。將需要配置的寄存器設置好后,需退出初始化模式,參與CAN總線(xiàn)通信。
(2)CH375的初始化
主要是設置USB的工作模式,通過(guò)CH375提供的SETUSB MODE命令,設置其工作模式代碼為06H,即USB主機方式下,自動(dòng)檢測USB設備是否連接,當USB設備連接或者斷開(kāi)時(shí)都會(huì )產(chǎn)生中斷通知外部單片機,并自動(dòng)定時(shí)產(chǎn)生USB幀周期開(kāi)始包SOF發(fā)送給已經(jīng)連接的USB設備。通常情況下,設置USB工作模式在20微秒時(shí)間內完成,完成后輸出操作狀態(tài)。通過(guò)讀 PA端口得到操作狀態(tài),查看是否設置成功。如不成功,表明CH375出錯,例如芯片型號錯或者處于串口方式或者不支持,則無(wú)法進(jìn)行u盤(pán)的讀寫(xiě)。
3.3 中斷處理模塊
中斷模塊即接受中斷,由于本系統設置所有的幀都被接收,因而必須在中斷處理函數里對接收到的幀進(jìn)行判斷,并進(jìn)行“解碼”?,F就實(shí)例來(lái)詳細說(shuō)明“解碼”的過(guò)程,如表1所示,列舉了A5車(chē)內2個(gè)重要的CAN消息,其ID均是采用標準格式 (11位),數據單元占64位(8字節)。中斷接收到數據幀后,首先取其ID號,對于標準幀格式來(lái)說(shuō),IDRO存放的是IDIO~ID3,IDR1的高3 位存放的是ID2~ID0,因此ID號=(IDR03)l(IDRI>>5),其中ID號設置為int型變量。得到ID號后,將根據消息列表進(jìn)行消息解碼,例如,假設取得的ID號是0xFA,這是來(lái)自發(fā)動(dòng)機控制單元EMS(enginemanagement system)的消息幀,我們將從它的64位數據單元中取出所關(guān)心的數據,其中64位數據在結果寄存器DSR0-DSR7中的存放順序如表2所示。假設我們從此幀中取出如下3個(gè)數據:Engine speedRPM,M eanEfectiveTorque,DriveRequest。

評論