ob体育竞彩 _欧宝体育在线链接 學習網站
當前位置: ob体育竞彩 > 現場總線> 正文

CAN總線行車記錄儀設計和實現探討

時間:2017-10-05 18:01 來源:ob体育竞彩

CAN總線(CAN.bus)是一種串行多主站控製器局域網總線,其主要原理是把車輛上相關控製器都聯係起來,實現發動機控製器,變速箱控製器,ABS控製器,車身控製器,儀表及其它控製器的通信。CAN—bus係統除了使整車線束更少、更井井有條,整車重量更輕外,更大的好處是做到了全車信息即時共享。
本文探討基於CAN總線的行車記錄儀設計和實現,詳細闡述了係統的整體結構、硬件電路設計、軟件設計流程。所開發的行車記錄儀用於在車輛行駛過程中實時采集汽車CAN總線數據信息,並將數據存儲在u盤中,以u盤為載體傳輸給PC機,可運用PC機上的軟件對數據進行分析。克服了以往現場數據采集係統必須有一台計算機的模式,可實時了解汽車運行期間各種數據信息變化,同步記錄行駛狀況,在車輛長時間測試或行駛以後,記錄的數據用於分析車輛行駛性能以及各部件的運行情況,方便了標定和設計工作的進行。
1 係統整體結構設計
由於CAN串行通訊總線的良好特性,被廣泛地應用於現場數據采集係統、汽車製造業和航空工業等領域。本文所設計的基於CAN總線數據記錄儀是應用在奇瑞汽車A5車型上的,對整車CAN網絡上的節點數據進行采集和存儲。A5是第一款應用CAN bus總線係統的自主品牌國產轎車,其CAN—bus主要應用在傳動部,在車身部、ITS部和信息部等也有少量的應用。對A5這款首次使用CAN技術的車型進行實時數據采集,可了解汽車運行期問各種數據信息變化,對A5乃至後續所有車款的研發來說,都有著非常重要的意義。
CAN總線行車記錄儀的整體結構框圖如圖1所示。
CAN總線行車記錄儀工作時應掛接到汽車CAN總線上成為一個CAN節點,以便采集CAN數據信息。由圖1所示,該係統不僅采集車內的CAN總線消息,還可根據需要實時采集模擬信號量。液晶屏用來顯示采集的各路信號值,具有掉電保護功能,重新通電後,即可恢複顯示原有數據。采集到的數據除了用液晶屏實時顯示給用戶外,還可通過USB接口芯片CH375將之存儲到u盤中,供實驗員拿回實驗室分析使用,如要實現存儲功能,按下存儲開關即可。

圖1 係統整體結構
2 係統硬件設計
根據係統的整體結構,硬件電路主要有如下幾個大模塊:主控製器模塊、液晶模塊、CAN驅動器模塊、電源模塊、CH375接口電路模塊。
2.1 主控製器模塊
係統CPU采用Freescale公司的MC9S12XD 係列單片機。它是控製和通信部分的核心,不僅負責係統初始化設置及報文接收,而且實現有關的數據判斷處理和顯示。片內集成了構成單片機控製係統和數據采集係統所需的幾乎全部模擬和數字外設及其它功能部件,其主要特點如下:
(1)MC9S12XD係列帶有獨特的XGATE協處理器,本係統中CAN信號的接收是由中斷程序完成的,而中斷處理程序交給XGATE來處理,這樣將減輕CPU負荷,提高係統的反應速度。
(2)帶有l6個模數轉換通道,給采集模擬信號提供了硬件支持,並可編程選擇精確到10位精度。
(3)帶有5個MSCAN模塊,內部集成有CAN控製器,對CAN 模塊的配置實質上轉化為了對單片機相應寄存器的配置,使用方便靈活。
(4)背景調試模式BDM 的支持,使得芯片的調試極為方便,加快了產品開發周期。
(5)豐富的中斷源,為係統在非操作係統支持下運行提供了充分的保障。
2.2 液晶顯示模塊
係統采用的是WYM19264液晶,分3屏顯示,每屏可顯示容量為64x64的點陣。該液晶外部接口采用20腳針式插座,與單片機的連接電路也比較簡單,其中片選信號CS1、CS2分別與單片機的PH6、PH5相連,控製信號RS、R/W、EN分別與PK4、PJ1、PJ0相連,8條數據線(DBO~DB7)則連接PB端口的8個引腳(PB0-PB7),實行並口傳輸。
2.3 CAN驅動器模塊
CAN驅動器接口芯片選用PAC82C250,它是CAN協議控製器和物理總線的接口,主要是為汽車中高速通訊(高達1Mbps)應用而設計的。此器件對總線提供差分發送能力,對CAN控製器提供差動接收能力,具有抗汽車環境中的瞬間幹擾而保護總線功能。其管腳8(Rs)允許選擇不同的工作模式:高速、待機、斜率控製,本係統中將管腳8接地,選用其高速模式。而RX、TX則與單片機CAN模塊引腳相連,本係統中選用的是CAN0模塊,即分別與RXCAN0、TXCAN0連接。
2.4 電源模塊
記錄儀電源取自12V車載蓄電池電源,該電源除供係統工作外,還擔負點火、照明、信號等設備的供電,電源波動大,幹擾嚴重,由於汽車在行駛過程中,可能遇到路麵狀況比較惡劣的情況,會出現記錄儀電源接口由於劇烈震動所造成的鬆動或接觸不良,因此電源模塊必須精心設計才能滿足需求。
電源模塊電路簡圖如圖2所示,其中U1是由電池提供的6V備份電源,U2(主電源)是車載12V電源,該電源模塊被分成2路,經7805穩壓後的+5v電壓單獨給液晶供電,經4275轉換後的VCC給整個單片機及輔助電路供電。係統正常工作時,D1處於截止狀態,備份電池不起作用,一旦失去主電源供給,則D1迅速導通,備份電源自動啟動為係統供電。

圖2 電源模塊
電源模塊此種設計方案有2個原因,如下所示:
(1)備用電池的采用。記錄儀存儲采集數據,即將采集數據按順序寫進為記錄文件所分配的簇中,當采集結束時實驗員斷開存儲開關或者因掉電而采集被迫終止,單片機都需要做關閉記錄文件這一重要處理。關閉文件就是將文件實際長度和采集數據記錄總數寫進文件相關頭中。假如不正確關閉文件,或者因為掉電來不及關閉文件,Windows將無法找到文件的末尾,PC機軟件也因找不到采集數據的末尾而無法打開文件,此時,所做的采集工作將因此失敗。為了防止因掉電而無法關閉文件,本係統采用了備用電池。
(2)單片機和液晶單獨供電。主電源正常工作時,整個係統的電源由主電源供給,一旦主電源掉電,備用電池隻給單片機供電,供單片機完成關閉文件處理,而液晶因掉電而不工作。因液晶的功耗較大而備份電池電力有限,此種分開2路的供電方式不但能提供關閉文件的電源需要,而且還節約了電池電力。
當然,備份電池不可能長時間使用,隻能用於係統緊急關閉文件處理,為此設計了電源檢測信號,一旦檢測出主電源掉電,既啟用蜂鳴器和發光二極管來提醒用戶電源供電不正常,需工作人員檢查記錄儀電源接頭。
2.5 CI-I375接口電路模塊
本係統中的USB接口芯片選用的南京沁恒電子公司的CH375,該芯片支持主機方式和設備方式.它具有8位數據總線和讀、寫、片選控製線以及中斷輸出,可以方便地掛接到單片機的係統總線上。還內置了處理Mass—Storage海量存儲設備的專用通訊協議的固件,外部單片機可以直接以扇區為基本單位讀寫u盤。
讀選通信號RD#、寫選通信號WR#、片選信號CS#均是輸入信號且低電平有效,CS#是中斷請求輸出信號,也是低電平有效。而A0信號用來區分命令和數據,當A0=1時可以寫命令,當A0=0時可以讀寫數據,8位雙向數據總線與單片機的PA端口(PA0-PA7)相連,並口傳輸。其硬件上支持自動檢測USB設備連接功能,在主機方式下正常連接時,其ACT#腳輸出低電平,因此使ACT# I腳外接上拉電阻並串聯一發光二極管,可用來標示USB設備是否正常連接。
在布PCB時,盡量使7805芯片布在板子邊緣且散熱比較好的地方,並且遠離液晶屏幕。因為在實際過程中,經過測試,7805芯片產生大量的熱量,如果長時間使用並且靠近液晶屏幕,將會影響液晶的顯示效果。另外,盡量使電源模塊的發光二極管靠近電源接口,USB模塊的發光二極管靠近USB模塊,並且以顏色區分開,方便用戶觀察。
3 係統軟件設計
在軟件設計方麵采用模塊化設計思想和中斷調用方案,係統上電後首先進行初始化,對CAN總線上的信息采用中斷方式接收,由XGATE處理中斷程序,係統每接收一幀信息,便產生一次中斷來觸發微處理器進入中斷,在中斷服務程序中讀取該幀數據並暫存在緩存裏。此緩存是XGATE和CPU共享的,由於通過CH375讀寫u盤的數據單位是一個扇區,所以本係統將緩存設置為一個扇區(512Byte),當緩存滿時,由主程序將數據轉存到U盤中。
係統軟件部分主要功能模塊包括:主程序模塊,初始化模塊,中斷處理模塊。
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提供的SETUSBMODE命令,設置其工作模式代碼為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>5),其中ID號設置為int型變量。得到ID號後,將根據消息列表進行消息解碼,例如,假設取得的ID號是0xFA,這是來自發動機控製單元EMS(enginemanagementsystem)的消息幀,我們將從它的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
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的行車記錄儀,可大幅度降低係統複雜度,並降低成本。對於不同的車型,隻需軟件的少許修改而不需要更改硬件,使得記錄儀具有極高的靈活性和可移植性,從而廣泛應用於各種車型。

    看過《CAN總線行車記錄儀設計和實現探討》的人還看了以下文章
    關於CAN總線的一些事情 關於CAN總線的一些事情
    CAN總線是各種總線中使用比較廣泛的一種通信技術,它在單片機控製技術中和PLC控製技術中會常常使用這種通信技術。下麵我們來說說關於CAN總線的一些事情。 什麼叫CAN總線 CAN總線它是控製器局域網絡(Controller Area Network, CAN)的簡稱,是由德國博世(BOSC...
    iic總線為什麼需要上拉電阻 iic總線為什麼需要上拉電阻
    II總線是當今電子係統中應用最廣泛的芯片間通信標準,它是一種開漏通信標準,需要上拉電阻將總線電平拉到Vdd 在設計中需要增加上拉電阻,但關鍵是上拉電阻阻值取多少合適呢?通常芯片手冊中會有推薦的上拉阻值,所以在設計時按推薦的取值就可以了。下圖是一...
    組態王HTConvertTime函數年份上限2019怎麼解決 組態王HTConvertTime函數年份上限2019怎麼
    如下圖:組態王HTConvertTime使用2019年 相信用過組態王軟件的人都會知道,組態王HTConvertTime這個函數到了現在2020年已經不能用了,那以前做的項目怎麼辦能,接下來我來為大家介紹以下2種解決方案,如果適用,請采納。 方案1.致電組態王,要求組態王廠家發...
    電子開發中如何確定使用I2C總線還是SPI總線或者CAN總線 電子開發中如何確定使用I2C總線還是SPI總線
    電子項目開發中經常用到通訊功能,包括板子上芯片間的通訊和設備間的通訊。而常用的有線通訊方式無非就這幾種,如I2C、SPI、RS232、RS485接口、CAN、USB等。其中I2C也叫IIC,對於題目中提到的幾種通訊方式,I2C和SPI是芯片間的短距離通訊,無法長距離通訊。...
    can協議是什麼 can協議是什麼
    CAN總線是德國公司BOSCH公司為解決現代汽車中眾多控製和測試儀器之間的數據交換而開發的一種串行數據通信協議,即控製器局域網總線。 其是一種多主總線,通信介質可以是雙絞線、同軸電纜、光纖,通信速率可達1Mb/s,通信距離可達10Km。此協議的最大特點是廢...
    Baidu
    map