《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 模擬設(shè)計(jì) > 業(yè)界動(dòng)態(tài) > CAN總線行車記錄儀設(shè)計(jì)

CAN總線行車記錄儀設(shè)計(jì)

2017-05-31

  CAN總線(CAN.bus)是一種串行多主站控制器局域網(wǎng)總線,,其主要原理是把車輛上相關(guān)控制器都聯(lián)系起來,,實(shí)現(xiàn)發(fā)動(dòng)機(jī)控制器,,變速箱控制器,ABS控制器,,車身控制器,儀表及其它控制器的通信,。CAN—bus系統(tǒng)除了使整車線束更少,、更井井有條,整車重量更輕外,,更大的好處是做到了全車信息即時(shí)共享,。

  本文探討基于CAN總線的行車記錄儀設(shè)計(jì)和實(shí)現(xiàn),詳細(xì)闡述了系統(tǒng)的整體結(jié)構(gòu),、硬件電路設(shè)計(jì),、軟件設(shè)計(jì)流程。所開發(fā)的行車記錄儀用于在車輛行駛過程中實(shí)時(shí)采集汽車CAN總線數(shù)據(jù)信息,并將數(shù)據(jù)存儲(chǔ)在u盤中,,以u盤為載體傳輸給PC機(jī),,可運(yùn)用PC機(jī)上的軟件對數(shù)據(jù)進(jìn)行分析??朔艘酝F(xiàn)場數(shù)據(jù)采集系統(tǒng)必須有一臺(tái)計(jì)算機(jī)的模式,,可實(shí)時(shí)了解汽車運(yùn)行期間各種數(shù)據(jù)信息變化,同步記錄行駛狀況,,在車輛長時(shí)間測試或行駛以后,,記錄的數(shù)據(jù)用于分析車輛行駛性能以及各部件的運(yùn)行情況,方便了標(biāo)定和設(shè)計(jì)工作的進(jìn)行,。

  1 系統(tǒng)整體結(jié)構(gòu)設(shè)計(jì)

  由于CAN串行通訊總線的良好特性,,被廣泛地應(yīng)用于現(xiàn)場數(shù)據(jù)采集系統(tǒng)、汽車制造業(yè)和航空工業(yè)等領(lǐng)域,。本文所設(shè)計(jì)的基于CAN總線數(shù)據(jù)記錄儀是應(yīng)用在奇瑞汽車A5車型上的,,對整車CAN網(wǎng)絡(luò)上的節(jié)點(diǎn)數(shù)據(jù)進(jìn)行采集和存儲(chǔ)。A5是第一款應(yīng)用CAN bus總線系統(tǒng)的自主品牌國產(chǎn)轎車,,其CAN—bus主要應(yīng)用在傳動(dòng)部,,在車身部、ITS部和信息部等也有少量的應(yīng)用,。對A5這款首次使用CAN技術(shù)的車型進(jìn)行實(shí)時(shí)數(shù)據(jù)采集,,可了解汽車運(yùn)行期問各種數(shù)據(jù)信息變化,對A5乃至后續(xù)所有車款的研發(fā)來說,,都有著非常重要的意義,。

  CAN總線行車記錄儀的整體結(jié)構(gòu)框圖如圖1所示。

  CAN總線行車記錄儀工作時(shí)應(yīng)掛接到汽車CAN總線上成為一個(gè)CAN節(jié)點(diǎn),,以便采集CAN數(shù)據(jù)信息,。由圖1所示,該系統(tǒng)不僅采集車內(nèi)的CAN總線消息,,還可根據(jù)需要實(shí)時(shí)采集模擬信號量,。液晶屏用來顯示采集的各路信號值,具有掉電保護(hù)功能,,重新通電后,,即可恢復(fù)顯示原有數(shù)據(jù)。采集到的數(shù)據(jù)除了用液晶屏實(shí)時(shí)顯示給用戶外,,還可通過USB接口芯片CH375 將之存儲(chǔ)到u盤中,,供實(shí)驗(yàn)員拿回實(shí)驗(yàn)室分析使用,如要實(shí)現(xiàn)存儲(chǔ)功能,,按下存儲(chǔ)開關(guān)即可,。

vehicleinformationrecorde01.jpg

  圖1 系統(tǒng)整體結(jié)構(gòu)

  2 系統(tǒng)硬件設(shè)計(jì)

  根據(jù)系統(tǒng)的整體結(jié)構(gòu),,硬件電路主要有如下幾個(gè)大模塊:主控制器模塊、液晶模塊,、CAN驅(qū)動(dòng)器模塊,、電源模塊、CH375接口電路模塊,。

  2.1 主控制器模塊

  系統(tǒng)CPU采用Freescale公司的MC9S12XD 系列單片機(jī),。它是控制和通信部分的核心,不僅負(fù)責(zé)系統(tǒng)初始化設(shè)置及報(bào)文接收,,而且實(shí)現(xiàn)有關(guān)的數(shù)據(jù)判斷處理和顯示,。片內(nèi)集成了構(gòu)成單片機(jī)控制系統(tǒng)和數(shù)據(jù)采集系統(tǒng)所需的幾乎全部模擬和數(shù)字外設(shè)及其它功能部件,其主要特點(diǎn)如下:

  (1)MC9S12XD系列帶有獨(dú)特的XGATE協(xié)處理器,,本系統(tǒng)中CAN信號的接收是由中斷程序完成的,,而中斷處理程序交給XGATE來處理,這樣將減輕CPU負(fù)荷,,提高系統(tǒng)的反應(yīng)速度,。

  (2)帶有l(wèi)6個(gè)模數(shù)轉(zhuǎn)換通道,給采集模擬信號提供了硬件支持,,并可編程選擇精確到10位精度,。

  (3)帶有5個(gè)MSCAN模塊,內(nèi)部集成有CAN控制器,,對CAN 模塊的配置實(shí)質(zhì)上轉(zhuǎn)化為了對單片機(jī)相應(yīng)寄存器的配置,,使用方便靈活。

  (4)背景調(diào)試模式BDM 的支持,,使得芯片的調(diào)試極為方便,,加快了產(chǎn)品開發(fā)周期。

  (5)豐富的中斷源,,為系統(tǒng)在非操作系統(tǒng)支持下運(yùn)行提供了充分的保障。

  2.2 液晶顯示模塊

  系統(tǒng)采用的是WYM19264液晶,,分3屏顯示,,每屏可顯示容量為64x64的點(diǎn)陣。該液晶外部接口采用20腳針式插座,,與單片機(jī)的連接電路也比較簡單,,其中片選信號CS1、CS2分別與單片機(jī)的PH6,、PH5相連,,控制信號RS、R/W,、EN分別與PK4,、PJ1、PJ0相連,8條數(shù)據(jù)線(DBO~DB7)則連接PB端口的8個(gè)引腳(PB0-PB7),,實(shí)行并口傳輸,。

  2.3 CAN驅(qū)動(dòng)器模塊

  CAN驅(qū)動(dòng)器接口芯片選用PAC82C250,它是CAN協(xié)議控制器和物理總線的接口,, 主要是為汽車中高速通訊(高達(dá)1Mbps)應(yīng)用而設(shè)計(jì)的,。此器件對總線提供差分發(fā)送能力,對CAN控制器提供差動(dòng)接收能力,,具有抗汽車環(huán)境中的瞬間干擾而保護(hù)總線功能,。其管腳8(Rs)允許選擇不同的工作模式:高速、待機(jī),、斜率控制,,本系統(tǒng)中將管腳8接地,選用其高速模式,。而RX,、TX則與單片機(jī)CAN模塊引腳相連,本系統(tǒng)中選用的是CAN0模塊,,即分別與RXCAN0,、TXCAN0連接。

  2.4 電源模塊

  記錄儀電源取自12V車載蓄電池電源,,該電源除供系統(tǒng)工作外,,還擔(dān)負(fù)點(diǎn)火、照明,、信號等設(shè)備的供電,,電源波動(dòng)大,干擾嚴(yán)重,,由于汽車在行駛過程中,,可能遇到路面狀況比較惡劣的情況,會(huì)出現(xiàn)記錄儀電源接口由于劇烈震動(dòng)所造成的松動(dòng)或接觸不良,,因此電源模塊必須精心設(shè)計(jì)才能滿足需求,。

  電源模塊電路簡圖如圖2所示,其中U1是由電池提供的6V備份電源,,U2(主電源)是車載12V電源,,該電源模塊被分成2路,經(jīng)7805穩(wěn)壓后的+5v 電壓單獨(dú)給液晶供電,,經(jīng)4275轉(zhuǎn)換后的VCC給整個(gè)單片機(jī)及輔助電路供電,。系統(tǒng)正常工作時(shí),D1處于截止?fàn)顟B(tài),,備份電池不起作用,,一旦失去主電源供給,,則D1迅速導(dǎo)通,備份電源自動(dòng)啟動(dòng)為系統(tǒng)供電,。

vehicleinformationrecorde02.jpg

  圖2 電源模塊

  電源模塊此種設(shè)計(jì)方案有2個(gè)原因,,如下所示:

  (1)備用電池的采用。記錄儀存儲(chǔ)采集數(shù)據(jù),,即將采集數(shù)據(jù)按順序?qū)戇M(jìn)為記錄文件所分配的簇中,,當(dāng)采集結(jié)束時(shí)實(shí)驗(yàn)員斷開存儲(chǔ)開關(guān)或者因掉電而采集被迫終止,單片機(jī)都需要做關(guān)閉記錄文件這一重要處理,。關(guān)閉文件就是將文件實(shí)際長度和采集數(shù)據(jù)記錄總數(shù)寫進(jìn)文件相關(guān)頭中,。假如不正確關(guān)閉文件,或者因?yàn)榈綦妬聿患瓣P(guān)閉文件,,Windows將無法找到文件的末尾,,PC機(jī)軟件也因找不到采集數(shù)據(jù)的末尾而無法打開文件,此時(shí),,所做的采集工作將因此失敗,。為了防止因掉電而無法關(guān)閉文件,本系統(tǒng)采用了備用電池,。

  (2)單片機(jī)和液晶單獨(dú)供電,。主電源正常工作時(shí),整個(gè)系統(tǒng)的電源由主電源供給,,一旦主電源掉電,,備用電池只給單片機(jī)供電,供單片機(jī)完成關(guān)閉文件處理,,而液晶因掉電而不工作,。因液晶的功耗較大而備份電池電力有限,此種分開2路的供電方式不但能提供關(guān)閉文件的電源需要,,而且還節(jié)約了電池電力,。

  當(dāng)然,備份電池不可能長時(shí)間使用,,只能用于系統(tǒng)緊急關(guān)閉文件處理,,為此設(shè)計(jì)了電源檢測信號,一旦檢測出主電源掉電,,既啟用蜂鳴器和發(fā)光二極管來提醒用戶電源供電不正常,需工作人員檢查記錄儀電源接頭,。

  2.5 CI-I375接口電路模塊

  本系統(tǒng)中的USB 接口芯片選用的南京沁恒電子公司的CH375,,該芯片支持主機(jī)方式和設(shè)備方式.它具有8位數(shù)據(jù)總線和讀、寫,、片選控制線以及中斷輸出,,可以方便地掛接到單片機(jī)的系統(tǒng)總線上,。還內(nèi)置了處理Mass—Storage海量存儲(chǔ)設(shè)備的專用通訊協(xié)議的固件,外部單片機(jī)可以直接以扇區(qū)為基本單位讀寫u盤,。

  讀選通信號RD#,、寫選通信號WR#、片選信號CS#均是輸入信號且低電平有效,,CS#是中斷請求輸出信號,,也是低電平有效。而A0信號用來區(qū)分命令和數(shù)據(jù),,當(dāng)A0=1時(shí)可以寫命令,,當(dāng)A0=0時(shí)可以讀寫數(shù)據(jù),8位雙向數(shù)據(jù)總線與單片機(jī)的PA端口(PA0-PA7)相連,,并口傳輸,。其硬件上支持自動(dòng)檢測USB設(shè)備連接功能,在主機(jī)方式下正常連接時(shí),,其ACT#腳輸出低電平,,因此使ACT# I腳外接上拉電阻并串聯(lián)一發(fā)光二極管,可用來標(biāo)示USB設(shè)備是否正常連接,。

  在布PCB時(shí),,盡量使7805芯片布在板子邊緣且散熱比較好的地方,并且遠(yuǎn)離液晶屏幕,。因?yàn)樵趯?shí)際過程中,,經(jīng)過測試,7805芯片產(chǎn)生大量的熱量,,如果長時(shí)間使用并且靠近液晶屏幕,,將會(huì)影響液晶的顯示效果。另外,,盡量使電源模塊的發(fā)光二極管靠近電源接口,,USB模塊的發(fā)光二極管靠近USB模塊,并且以顏色區(qū)分開,,方便用戶觀察,。

  3 系統(tǒng)軟件設(shè)計(jì)

  在軟件設(shè)計(jì)方面采用模塊化設(shè)計(jì)思想和中斷調(diào)用方案,系統(tǒng)上電后首先進(jìn)行初始化,,對CAN總線上的信息采用中斷方式接收,,由XGATE處理中斷程序,系統(tǒng)每接收一幀信息,,便產(chǎn)生一次中斷來觸發(fā)微處理器進(jìn)入中斷,,在中斷服務(wù)程序中讀取該幀數(shù)據(jù)并暫存在緩存里。此緩存是XGATE和CPU共享的,,由于通過CH375讀寫u盤的數(shù)據(jù)單位是一個(gè)扇區(qū),,所以本系統(tǒng)將緩存設(shè)置為一個(gè)扇區(qū)(512Byte),,當(dāng)緩存滿時(shí),由主程序?qū)?shù)據(jù)轉(zhuǎn)存到U盤中,。

  系統(tǒng)軟件部分主要功能模塊包括:主程序模塊,,初始化模塊,中斷處理模塊,。

  3.1 主程序設(shè)計(jì)

  主程序流程圖如圖3所示,。

  由流程圖3可看出,在整個(gè)程序運(yùn)行期間,,采用查詢的方式來檢測電源是否掉電,。由于車內(nèi)CAN 信號發(fā)包頻率均為幾十毫秒,如果液晶屏實(shí)時(shí)顯示數(shù)據(jù)的話,,屏幕刷新太快,,不易于觀察,因此本系統(tǒng)設(shè)置當(dāng)緩存接收滿時(shí),,刷新一次屏幕數(shù)據(jù),,這樣的刷新頻率足以滿足用戶的需要,無論存儲(chǔ)開關(guān)是否閉和,,液晶屏均提供顯示服務(wù),。記錄過程中突然掉電或者用戶斷開存儲(chǔ)開關(guān),都將導(dǎo)致當(dāng)前所記錄文件的關(guān)閉,,即修改文件指針和文件長度等與文件系統(tǒng)相關(guān)的處理,。

vehicleinformationrecorde03.jpg

  圖3 主程序流程

  3.2 初始化模塊

  (1)CAN模塊的初始化

  對CAN控制器的初始化設(shè)計(jì)是重點(diǎn),必須對寫入的每個(gè)寄存器進(jìn)行仔細(xì)全面的考慮,,如果初始化沒成功,,系統(tǒng)將無法正常工作。本記錄儀實(shí)質(zhì)上是作為整個(gè)CAN 網(wǎng)絡(luò)的一個(gè)增加節(jié)點(diǎn)參與通信,,網(wǎng)絡(luò)內(nèi)的所有CAN節(jié)點(diǎn)必須同步,。要進(jìn)行CAN模塊的初始化,首先必須進(jìn)入初始化模式,,通過設(shè)置IN—ITRQ(CANCTLO)位發(fā)起請求,,并得到INITAK(CANCTL1)的回應(yīng)后,MSCAN進(jìn)入初始化模式,。在此模式下,,通常是對CAN一BTR0、CANBTR1,、CANIDAR,、CANIDMR等寄存器進(jìn)行配置。CANBTR0決定波特率預(yù)分頻和同步跳轉(zhuǎn)寬度的數(shù)值,CAN—BTR1決定周期的寬度,、采樣點(diǎn)的位置以及在每個(gè)采樣點(diǎn)進(jìn)行采樣的次數(shù),根據(jù)具體CAN總線通信速率設(shè)置適當(dāng)?shù)闹?。CANIDAR,、CANIDMR共同決定哪些ID幀需要接收,在本系統(tǒng)中,,CAN總線記錄儀的目的是接收CAN線數(shù)據(jù)全部報(bào)文,,因而設(shè)置CANIDMR為0xFFh,即所有位都不屏蔽,,所有的幀都接收,。將需要配置的寄存器設(shè)置好后,需退出初始化模式,,參與CAN總線通信,。

  (2)CH375的初始化

  主要是設(shè)置USB的工作模式,通過CH375提供的SETUSB MODE命令,,設(shè)置其工作模式代碼為06H,,即USB主機(jī)方式下,自動(dòng)檢測USB設(shè)備是否連接,,當(dāng)USB設(shè)備連接或者斷開時(shí)都會(huì)產(chǎn)生中斷通知外部單片機(jī),,并自動(dòng)定時(shí)產(chǎn)生USB幀周期開始包SOF發(fā)送給已經(jīng)連接的USB設(shè)備。通常情況下,,設(shè)置USB工作模式在20微秒時(shí)間內(nèi)完成,,完成后輸出操作狀態(tài)。通過讀PA端口得到操作狀態(tài),,查看是否設(shè)置成功,。如不成功,表明CH375出錯(cuò),,例如芯片型號錯(cuò)或者處于串口方式或者不支持,,則無法進(jìn)行u盤的讀寫。

vehicleinformationrecorde04.jpgvehicleinformationrecorde05.jpg

  3.3 中斷處理模塊

  中斷模塊即接受中斷,,由于本系統(tǒng)設(shè)置所有的幀都被接收,,因而必須在中斷處理函數(shù)里對接收到的幀進(jìn)行判斷,并進(jìn)行“解碼”?,F(xiàn)就實(shí)例來詳細(xì)說明“解碼”的過程,,如表1所示,列舉了A5車內(nèi)2個(gè)重要的CAN消息,,其ID均是采用標(biāo)準(zhǔn)格式(11位),,數(shù)據(jù)單元占64位(8字節(jié))。中斷接收到數(shù)據(jù)幀后,,首先取其ID號,,對于標(biāo)準(zhǔn)幀格式來說,,IDRO存放的是IDIO~ID3,IDR1的高3位存放的是ID2~I(xiàn)D0,,因此ID號=(IDR0>5),,其中ID號設(shè)置為int型變量。得到ID號后,,將根據(jù)消息列表進(jìn)行消息解碼,,例如,假設(shè)取得的ID號是0xFA,,這是來自發(fā)動(dòng)機(jī)控制單元EMS(enginemanagement system)的消息幀,,我們將從它的64位數(shù)據(jù)單元中取出所關(guān)心的數(shù)據(jù),其中64位數(shù)據(jù)在結(jié)果寄存器DSR0-DSR7中的存放順序如表2所示,。假設(shè)我們從此幀中取出如下3個(gè)數(shù)據(jù):Engine speedRPM,,M eanEfectiveTorque,DriveRequest,。

vehicleinformationrecorde06.jpg

  表3列出了它們在64位數(shù)據(jù)單元中的起始位和所占位數(shù),。在此對數(shù)據(jù)位數(shù)為16的Engine speed RPM 稍作解釋,由于選用的單片機(jī)采用的是Motorola大端模式,,因此其最低位是DSR1中的第8位,,而不是DSR0中的第0位,而我們的上層PC機(jī)數(shù)據(jù)分析軟件是Intel格式的,,于是需要對多字節(jié)數(shù)據(jù)進(jìn)行大小端轉(zhuǎn)換,。下面給出函數(shù)語句示例:

  Engine speed RPM DSR1;

  Engine speed RPM =(Engine speed RPM<<8)IDSR0,;

  M eanEfectiveTorque=DSR2,;

  DriverRequest=DSR3;

  對多字節(jié)數(shù)據(jù)需進(jìn)行大小端轉(zhuǎn)換,,而單字節(jié)數(shù)據(jù)則是直接拷貝,。將采集的數(shù)據(jù)存儲(chǔ)在緩存里,然后結(jié)束本次中斷,。

  3.4 其它模塊

  液晶模塊,,對于需要固定顯示的部分,利用“預(yù)制畫面”以減少工作中通訊傳輸?shù)呢?fù)擔(dān)和重復(fù)性工作,。讀寫u盤模塊,,u盤中的數(shù)據(jù)都是以文件格式存儲(chǔ)的,單片機(jī)讀寫u盤則主要是根據(jù)FAT文件系統(tǒng)進(jìn)行文件和目錄的各種操作,,CH375提供了u盤文件級子程序庫,,此庫支持FAT16和FAT32文件系統(tǒng),用戶只需調(diào)用此庫的各種API函數(shù)就可實(shí)現(xiàn)數(shù)據(jù)塊的讀寫。A/D轉(zhuǎn)換模塊,,對控制寄存器5(ATDCTL5)的配置要慎重,,因?yàn)閷Υ思拇嫫鞯膶懖僮鲗⒅袛喈?dāng)前模數(shù)轉(zhuǎn)換序列并且開始一個(gè)新的轉(zhuǎn)換序列,建議將此寄存器放在前4個(gè)控制寄存器之后配置,。

  4 結(jié)束語

  本系統(tǒng)所開發(fā)的行車記錄儀已成功的運(yùn)用于A5車的3萬公里,、5萬公里等各種路試,準(zhǔn)確記錄了行車過程中的重要數(shù)據(jù),,對于研究人員進(jìn)行性能分析、故障分析,、以及標(biāo)定工作提供了重要的數(shù)據(jù)依據(jù),。在已具備CAN 總線的車輛上使用基于CAN的行車記錄儀,可大幅度降低系統(tǒng)復(fù)雜度,,并降低成本,。對于不同的車型,只需軟件的少許修改而不需要更改硬件,,使得記錄儀具有極高的靈活性和可移植性,,從而廣泛應(yīng)用于各種車型。


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章,、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容,、版權(quán)和其它問題,請及時(shí)通過電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118,;郵箱:[email protected],。