基于CAN通信的卡車語(yǔ)音報(bào)警器的設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
汽車診斷技術(shù)是汽車安全技術(shù)中不可缺少的一部分,它能在汽車發(fā)生故障時(shí)及時(shí)地進(jìn)行語(yǔ)音報(bào)警,避免事故的發(fā)生。CAN即控制器局域網(wǎng),是國(guó)際上應(yīng)用最廣泛的現(xiàn)場(chǎng)總線之一。由于CAN總線技術(shù)的優(yōu)良特性,在汽車電氣系統(tǒng)以及其他一些實(shí)時(shí)控制單元中得到廣泛應(yīng)用。一種基于CAN總線的通信網(wǎng)絡(luò)具有速度高、抗噪性強(qiáng)及通用性好等優(yōu)點(diǎn)。
我們?cè)O(shè)計(jì)的基于CAN總線技術(shù)的卡車語(yǔ)音報(bào)警系統(tǒng)能給汽車乘員提供一個(gè)安全的駕乘環(huán)境。該語(yǔ)音報(bào)警系統(tǒng)采用了摩托羅拉公司的M68HC908GZ16微控制器,該微控制器尺寸小,資源齊全,具有很高的性價(jià)比。
CAN總線位定時(shí)
CAN總線采用同步串行通信方式,數(shù)據(jù)流中的字符與字符之間、字符內(nèi)部的位與位之間都同步,這就要求收/發(fā)雙方必須以同步時(shí)鐘來(lái)控制數(shù)據(jù)的發(fā)送和接收。要在相當(dāng)長(zhǎng)的數(shù)據(jù)流中保持位同步,接收端必須能識(shí)別每個(gè)二進(jìn)制位是從什么時(shí)刻開(kāi)始的,這就是位定時(shí)。通常為保證接收器時(shí)鐘和發(fā)送器時(shí)鐘嚴(yán)格一致,采用接收器通過(guò)解調(diào)器從數(shù)據(jù)流中提取同步信號(hào),或者接收器和發(fā)送器使用統(tǒng)一的時(shí)鐘的方法。但是即便這樣,仍然很難解決總線傳輸延時(shí)問(wèn)題。針對(duì)以上問(wèn)題, CAN總線的位定時(shí)改進(jìn)了位編碼/解碼。
CAN總線位定時(shí)由4部分組成:同步段(SYNC_SEG)、傳播段(PROP_SEG)、相位段1(PHASE_SEG1)和相位段2 (PHASE_SEG2)。同步段用于同步總線上的各節(jié)點(diǎn),在此段等待一個(gè)跳邊沿;傳播段用于補(bǔ)償網(wǎng)絡(luò)內(nèi)的物理延遲時(shí)間;相位段1及相位段2用做補(bǔ)償相位誤差。在采樣點(diǎn)讀總線電平。
M68HC908GZ16微控制器(見(jiàn)圖1)中內(nèi)置CAN控制器,提供了波特率控制寄存器;SJW(重同步跳轉(zhuǎn)寬度)決定了一次重同步期間一個(gè)位時(shí)間被延長(zhǎng)或縮短的時(shí)間量子;BRP為波特率預(yù)分頻系數(shù);Spl(采樣模式位)決定對(duì)有效位采樣的次數(shù)。
圖1 MC68HC908GZ16的內(nèi)部結(jié)構(gòu)
位定時(shí)主要用于定義CAN總線通信的速率,對(duì)同一總線上的各個(gè)節(jié)點(diǎn)應(yīng)定義同一種通信速率,否則無(wú)法進(jìn)行通信聯(lián)系。CAN控制器的總線工作頻率計(jì)算公式如下:
式中:BRP為系統(tǒng)預(yù)分頻因子,它在TSEG1域中的取值范圍為0~63;TSEG1、TSEG2的值由位定時(shí)寄存器編程決定,并滿足1≤TSEG1≤7, 2≤TSEG2≤15。報(bào)警器中位定時(shí)的設(shè)置,定義通信頻率為250KB/s。設(shè)定DSC=BRP=1,TSEG1+TSEG2=5,系統(tǒng)晶振頻率為 8MHz,即XTAL=8MHz,CAN通信頻率由上式計(jì)算得到250KB/s。
最后位定時(shí)設(shè)置結(jié)果為:BRP=1,TSEG2=2,TSEG1=3。
圖2 語(yǔ)音報(bào)警系統(tǒng)結(jié)構(gòu)
設(shè)計(jì)概述
該卡車語(yǔ)音報(bào)警系統(tǒng)的設(shè)計(jì)目標(biāo)是:成本低;功能強(qiáng)大;適用于日常應(yīng)用;能夠應(yīng)用于各類車輛。該系統(tǒng)可實(shí)現(xiàn)如下功能:利用CAN網(wǎng)絡(luò)實(shí)現(xiàn)對(duì)卡車故障碼的接收;二,通過(guò)識(shí)別CAN系統(tǒng)傳過(guò)來(lái)的信號(hào),并對(duì)信號(hào)進(jìn)行處理得到相應(yīng)的語(yǔ)音提示,通過(guò)與語(yǔ)音芯片的連接實(shí)現(xiàn)相應(yīng)故障的語(yǔ)音播放報(bào)警。
該語(yǔ)音報(bào)警系統(tǒng)以摩托羅拉公司的MC68HC908GZ16處理器為核心,并利用其豐富的接口擴(kuò)展使用了語(yǔ)音播放、CAN通信接口等外圍模塊,使產(chǎn)品設(shè)計(jì)更加人性化。MC68HC908GZ16處理器具有如下優(yōu)點(diǎn):
1.豐富的硬件資源
MC68HC908GZ16為閃存型MCU,內(nèi)部擁有16K的FLASH存儲(chǔ)空間和1K的RAM存儲(chǔ)空間。內(nèi)部擁有鎖相環(huán)電路,能夠在使用低速晶振的情況下使總線頻率最高達(dá)到8MHz。同時(shí)擁有多達(dá)37個(gè)通用I/O口,可以方便地與其他外圍設(shè)備相連接。
圖3 卡車報(bào)警器電路原理圖
2.極強(qiáng)的抗擾能力
內(nèi)部集成了CAN控制器,利用CAN通信具有很強(qiáng)的抗干擾這一特點(diǎn),保證了產(chǎn)品能夠在惡劣環(huán)境條件下高效而穩(wěn)定地運(yùn)行。
本設(shè)計(jì)采用CAN通信的方式完成卡車語(yǔ)音報(bào)警系統(tǒng)的設(shè)計(jì),系統(tǒng)結(jié)構(gòu)如圖2所示。
通過(guò)MC68HC908GZ16上集成的MSCAN08模塊實(shí)現(xiàn)數(shù)據(jù)通信。利用C68HC908GZ16的I/O口,我們?cè)谠O(shè)計(jì)中使用了市場(chǎng)上常見(jiàn)的ISD公司的ISD4002-120數(shù)碼語(yǔ)音芯片。該芯片采用3V直流供電,可以錄制并保存2min的語(yǔ)音信息。其采樣頻率為8kHz,信息分辨率可達(dá)200ms,能夠非常真實(shí)地再現(xiàn)語(yǔ)音、音樂(lè)、聲調(diào)和效果音。
硬件設(shè)計(jì)
從圖3可以看出,卡車報(bào)警器電路主要由三部分構(gòu)成:微控制器 MC68HC908GZ16(內(nèi)部集成的MSCAN08模塊)、語(yǔ)音芯片 ISD4002和CAN總線收發(fā)器TLE6250、ZJYS。微控制器負(fù)責(zé)MSCAN08模塊的初始化,通過(guò)CAN模塊實(shí)現(xiàn)數(shù)據(jù)的接收和發(fā)送等通信任務(wù)。 CAN通信控制模塊主要完成CAN的通信協(xié)議。CAN控制模塊可完成物理層和數(shù)據(jù)鏈路層的所有功能,適用于汽車及一般的工業(yè)環(huán)境。利用CAN通信不但可以減少導(dǎo)線連接,而且能增強(qiáng)診斷和監(jiān)控能力。
CAN收發(fā)器TLE6250用于提供對(duì)總線差動(dòng)發(fā)送和接收的驅(qū)動(dòng)能力,具有輸出信號(hào)CANH和CANL的最佳匹配、電磁輻射更低、無(wú)待機(jī)模式等優(yōu)點(diǎn)。CANH和CANL與地之間并聯(lián)兩個(gè)25PF的小電容,可以起到濾除總線上的高頻干擾和一定的防電磁輻射作用。
軟件描述
軟件編程主要實(shí)現(xiàn)兩大功能:利用總線進(jìn)行故障碼接收;通過(guò)轉(zhuǎn)換故障碼實(shí)現(xiàn)相應(yīng)的語(yǔ)音故障報(bào)警。語(yǔ)音播放根據(jù)其功能設(shè)計(jì),整個(gè)程序大部分操作在主程序中完成,而CAN接收是在中斷中完成。
主程序中的操作是初始化各寄存器、I/O端口,然后在死循環(huán)中根據(jù)標(biāo)志位進(jìn)行相應(yīng)的處理,具體流程如圖4所示。
圖4 主程序流程圖
1.語(yǔ)音模塊軟件設(shè)計(jì)
語(yǔ)音模塊使用了ISD4002芯片。單片機(jī)通過(guò)I/O接口與ISD4002建立連接,并通過(guò)命令字的方式控制語(yǔ)音播放的地址,實(shí)現(xiàn)語(yǔ)音播放的控制。
2.CAN通信模塊軟件設(shè)計(jì)
在CAN總線編程時(shí),需要定義一系列的控制字配置,并要在裝置上進(jìn)行配置。其具體步驟包括:定義CAN控制寄存器、定義位定時(shí)、定義信息體屏蔽方式、信息體的初始化、信息體發(fā)送數(shù)據(jù)和信息體接收數(shù)據(jù)。
(1)MSCAN08模塊的初始化
MSCAN08模塊的初始化主要是定義通信速率。配置位定時(shí)寄存器以確定CAN的通信速率、配置全域屏蔽寄存器以確定濾波策略、初始化每個(gè)信息體。初始化信息體需要確定信息體類型(發(fā)送還是接收),設(shè)定符合CAN協(xié)議的ID、SRR、IDE和RTR。CAN通信首先要進(jìn)行初始化。在完成 MSCAN08模塊的初始化以后,MSCAN08模塊就可以回到工作狀態(tài),進(jìn)行正常的通信任務(wù)。
(2)數(shù)據(jù)的接收與發(fā)送
報(bào)文的發(fā)送由CAN控制器獨(dú)立完成,微控制器只要將發(fā)送的數(shù)據(jù)傳送到發(fā)送MSCAN08模塊相應(yīng)的發(fā)送信息體中,然后將命令寄存器中的“發(fā)送請(qǐng)求”標(biāo)志置位即可。報(bào)文發(fā)送流程圖如圖5所示,在發(fā)送之前先做判斷。發(fā)送程序分為發(fā)送遠(yuǎn)程幀和數(shù)據(jù)幀兩種。遠(yuǎn)程幀無(wú)數(shù)據(jù)場(chǎng),其程序流程圖如圖5(左)所示。
圖5 CAN發(fā)送和接收流程圖(左為發(fā)送流程,右為接收流程)
MSCAN08模塊的接收非常靈活。如果根據(jù)CAN總線應(yīng)用層協(xié)議規(guī)定好ID的含義,就可以通過(guò)設(shè)定3個(gè)屏蔽寄存器(1個(gè)全局的,2個(gè)特殊的)將需要的數(shù)據(jù)接收到消息緩沖區(qū),將不需要的過(guò)濾掉,再通過(guò)讀當(dāng)前消息緩沖區(qū)的ID確定數(shù)據(jù)所代表的含義。AN82527報(bào)文接收主要有兩種方式:中斷方式和查詢方式,在該系統(tǒng)中采用了中斷方式。報(bào)文接收流程圖如圖5(右)所示。
小結(jié)
該卡車語(yǔ)音報(bào)警系統(tǒng)已經(jīng)在臺(tái)架上進(jìn)行了實(shí)驗(yàn),并在與其他控制器的臺(tái)架實(shí)驗(yàn)中取得了良好的通信效果,能實(shí)現(xiàn)良好的語(yǔ)音報(bào)警功能。此外,該設(shè)計(jì)還需進(jìn)行進(jìn)一步的實(shí)車驗(yàn)證,其基本設(shè)計(jì)思路也可應(yīng)用于轎車中。