《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 模擬設(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(píng)盤為載體傳輸給PC機(jī),,可運(yùn)用PC機(jī)上的軟件對(duì)數(shù)據(jù)進(jìn)行分析??朔艘酝F(xiàn)場(chǎng)數(shù)據(jù)采集系統(tǒng)必須有一臺(tái)計(jì)算機(jī)的模式,,可實(shí)時(shí)了解汽車運(yùn)行期間各種數(shù)據(jù)信息變化,同步記錄行駛狀況,,在車輛長(zhǎng)時(shí)間測(cè)試或行駛以后,,記錄的數(shù)據(jù)用于分析車輛行駛性能以及各部件的運(yùn)行情況,方便了標(biāo)定和設(shè)計(jì)工作的進(jìn)行,。

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

  由于CAN串行通訊總線的良好特性,,被廣泛地應(yīng)用于現(xiàn)場(chǎng)數(shù)據(jù)采集系統(tǒng),、汽車制造業(yè)和航空工業(yè)等領(lǐng)域。本文所設(shè)計(jì)的基于CAN總線數(shù)據(jù)記錄儀是應(yīng)用在奇瑞汽車A5車型上的,,對(duì)整車CAN網(wǎng)絡(luò)上的節(jié)點(diǎn)數(shù)據(jù)進(jìn)行采集和存儲(chǔ),。A5是第一款應(yīng)用CAN bus總線系統(tǒng)的自主品牌國(guó)產(chǎn)轎車,其CAN—bus主要應(yīng)用在傳動(dòng)部,,在車身部,、ITS部和信息部等也有少量的應(yīng)用。對(duì)A5這款首次使用CAN技術(shù)的車型進(jìn)行實(shí)時(shí)數(shù)據(jù)采集,,可了解汽車運(yùn)行期問各種數(shù)據(jù)信息變化,,對(duì)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ào)量,。液晶屏用來顯示采集的各路信號(hào)值,,具有掉電保護(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信號(hào)的接收是由中斷程序完成的,,而中斷處理程序交給XGATE來處理,,這樣將減輕CPU負(fù)荷,提高系統(tǒng)的反應(yīng)速度,。

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

  (3)帶有5個(gè)MSCAN模塊,內(nèi)部集成有CAN控制器,,對(duì)CAN 模塊的配置實(shí)質(zhì)上轉(zhuǎn)化為了對(duì)單片機(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ī)的連接電路也比較簡(jiǎn)單,,其中片選信號(hào)CS1,、CS2分別與單片機(jī)的PH6、PH5相連,,控制信號(hào)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ì)的,。此器件對(duì)總線提供差分發(fā)送能力,對(duì)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)火,、照明、信號(hào)等設(shè)備的供電,,電源波動(dòng)大,,干擾嚴(yán)重,由于汽車在行駛過程中,,可能遇到路面狀況比較惡劣的情況,,會(huì)出現(xiàn)記錄儀電源接口由于劇烈震動(dòng)所造成的松動(dòng)或接觸不良,因此電源模塊必須精心設(shè)計(jì)才能滿足需求,。

  電源模塊電路簡(jiǎn)圖如圖2所示,,其中U1是由電池提供的6V備份電源,U2(主電源)是車載12V電源,,該電源模塊被分成2路,,經(jīng)7805穩(wěn)壓后的+5v 電壓?jiǎn)为?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í)際長(zhǎng)度和采集數(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)然,備份電池不可能長(zhǎng)時(shí)間使用,,只能用于系統(tǒng)緊急關(guān)閉文件處理,,為此設(shè)計(jì)了電源檢測(cè)信號(hào),一旦檢測(cè)出主電源掉電,,既啟用蜂鳴器和發(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盤,。

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

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

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

  在軟件設(shè)計(jì)方面采用模塊化設(shè)計(jì)思想和中斷調(diào)用方案,,系統(tǒng)上電后首先進(jìn)行初始化,對(duì)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)行期間,,采用查詢的方式來檢測(cè)電源是否掉電,。由于車內(nèi)CAN 信號(hào)發(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)閉,即修改文件指針和文件長(zhǎng)度等與文件系統(tǒng)相關(guān)的處理,。

vehicleinformationrecorde03.jpg

  圖3 主程序流程

  3.2 初始化模塊

  (1)CAN模塊的初始化

  對(duì)CAN控制器的初始化設(shè)計(jì)是重點(diǎn),,必須對(duì)寫入的每個(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ā)起請(qǐng)求,,并得到INITAK(CANCTL1)的回應(yīng)后,MSCAN進(jìn)入初始化模式,。在此模式下,,通常是對(duì)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)檢測(cè)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ò),例如芯片型號(hào)錯(cuò)或者處于串口方式或者不支持,,則無法進(jìn)行u盤的讀寫,。

vehicleinformationrecorde04.jpgvehicleinformationrecorde05.jpg

  3.3 中斷處理模塊

  中斷模塊即接受中斷,由于本系統(tǒng)設(shè)置所有的幀都被接收,,因而必須在中斷處理函數(shù)里對(duì)接收到的幀進(jìn)行判斷,,并進(jìn)行“解碼”。現(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號(hào),,對(duì)于標(biāo)準(zhǔn)幀格式來說,,IDRO存放的是IDIO~ID3,IDR1的高3位存放的是ID2~I(xiàn)D0,,因此ID號(hào)=(IDR0>5),,其中ID號(hào)設(shè)置為int型變量。得到ID號(hào)后,,將根據(jù)消息列表進(jìn)行消息解碼,,例如,假設(shè)取得的ID號(hào)是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列出了它們?cè)?4位數(shù)據(jù)單元中的起始位和所占位數(shù),。在此對(duì)數(shù)據(jù)位數(shù)為16的Engine speed RPM 稍作解釋,,由于選用的單片機(jī)采用的是Motorola大端模式,因此其最低位是DSR1中的第8位,,而不是DSR0中的第0位,,而我們的上層PC機(jī)數(shù)據(jù)分析軟件是Intel格式的,于是需要對(duì)多字節(jié)數(shù)據(jù)進(jìn)行大小端轉(zhuǎn)換,。下面給出函數(shù)語(yǔ)句示例:

  Engine speed RPM DSR1,;

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

  M eanEfectiveTorque=DSR2,;

  DriverRequest=DSR3,;

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

  3.4 其它模塊

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

  4 結(jié)束語(yǔ)

  本系統(tǒng)所開發(fā)的行車記錄儀已成功的運(yùn)用于A5車的3萬公里、5萬公里等各種路試,,準(zhǔn)確記錄了行車過程中的重要數(shù)據(jù),,對(duì)于研究人員進(jìn)行性能分析、故障分析,、以及標(biāo)定工作提供了重要的數(shù)據(jù)依據(jù),。在已具備CAN 總線的車輛上使用基于CAN的行車記錄儀,,可大幅度降低系統(tǒng)復(fù)雜度,并降低成本,。對(duì)于不同的車型,,只需軟件的少許修改而不需要更改硬件,使得記錄儀具有極高的靈活性和可移植性,,從而廣泛應(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)和其它問題,,請(qǐng)及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失,。聯(lián)系電話:010-82306118;郵箱:[email protected],。