文章介紹了符合CAN2.0B協(xié)議汽車CAN系統(tǒng)設(shè)計(jì)方案,著重討論了以微處理器P89C668為核心的CAN總線智能節(jié)點(diǎn)的軟硬件實(shí)現(xiàn),推薦一款MOTOROLA的多路開(kāi)關(guān)檢測(cè)芯片MC33993,并且涉及到SPI以及在系統(tǒng)編程等技術(shù)。
控制器局域網(wǎng)(CAN)是一種有效支持分布式控制或?qū)崟r(shí)控制的現(xiàn)場(chǎng)總線,具有高性能和高可靠性的特點(diǎn);隨著現(xiàn)代汽車技術(shù)的發(fā)展,CAN技術(shù)在汽車電子領(lǐng)域應(yīng)用日益廣泛。
1 汽車電子與CAN總線
隨著汽車電子技術(shù)的不斷發(fā)展,汽車上各種電子控制單元的數(shù)目不斷增加,連接導(dǎo)線顯著增加,因而提高控制單元間通訊可靠性和降低導(dǎo)線成本已成為迫切需要解決的問(wèn)題。為此以研發(fā)和生產(chǎn)汽車電子產(chǎn)品著稱的德國(guó)BOSCH公司開(kāi)發(fā)了CAN總線協(xié)議,并使其成為國(guó)際標(biāo)準(zhǔn)(ISO11898)。1989年,Intel公司率先開(kāi)發(fā)出CAN總線協(xié)議控制器芯片,到目前為止,世界上已經(jīng)擁有20多家CAN總線控制器芯片生產(chǎn)商,110多種CAN總線協(xié)議控制器芯片和集成CAN總線協(xié)議控制器的微處理器芯片。在北美和西歐,CAN總線協(xié)議已經(jīng)成為汽車計(jì)算機(jī)控制系統(tǒng)和嵌入式工業(yè)控制局域網(wǎng)的標(biāo)準(zhǔn)總線,并且擁有以CAN為底層協(xié)議專為大型貨車和重工機(jī)械車輛設(shè)計(jì)的J1939協(xié)議。我國(guó)的汽車CAN總線技術(shù)起步較晚,但隨著現(xiàn)代汽車電子的不斷進(jìn)步發(fā)展,其研究和應(yīng)用正如火如荼的進(jìn)行中。CAN總線是一種串行多主站控制器局域網(wǎng)總線,是一種有效支持分布式控制或?qū)崟r(shí)控制的串性通訊網(wǎng)絡(luò)。CAN總線的通信介質(zhì)可以是雙絞線,同軸電纜或光導(dǎo)纖維,通信速率可達(dá)1Mbps/40m,通信距離可達(dá)10km/40Kbps。由于其通信速率高,可靠性好以及價(jià)格低廉等特點(diǎn),使其特別適合中小規(guī)模的工業(yè)過(guò)程監(jiān)控設(shè)備的互連和交通運(yùn)載工具電氣系統(tǒng)中。
CAN總線有如下基本特點(diǎn):
廢除傳統(tǒng)的站地址編碼,代之以對(duì)通信數(shù)據(jù)塊進(jìn)行編碼,可以多主方式工作;
采用非破壞性仲裁技術(shù),當(dāng)兩個(gè)節(jié)點(diǎn)同時(shí)向網(wǎng)絡(luò)上傳送數(shù)據(jù)時(shí),優(yōu)先級(jí)低的節(jié)點(diǎn)主動(dòng)停止數(shù)據(jù)發(fā)送,而優(yōu)先級(jí)高的節(jié)點(diǎn)可不受影響繼續(xù)傳輸數(shù)據(jù),有效避免了總線沖突;
采用短幀結(jié)構(gòu),每一幀的有效字節(jié)數(shù)為8個(gè),數(shù)據(jù)傳輸時(shí)間短,受干擾的概率低,重新發(fā)送的時(shí)間短;
每幀數(shù)據(jù)都有CRC校驗(yàn)及其他檢錯(cuò)措施,保證了數(shù)據(jù)傳輸?shù)母呖煽啃裕m于在高干擾環(huán)境下使用;
節(jié)點(diǎn)在錯(cuò)誤嚴(yán)重的情況下,具有自動(dòng)關(guān)閉總線的功能,切斷它與總線的聯(lián)系,以使總線上其他操作不受影響;
可以點(diǎn)對(duì)點(diǎn),一對(duì)多及廣播集中方式傳送和接受數(shù)據(jù)。
現(xiàn)代汽車典型的控制單元有電控燃油噴射系統(tǒng),電控傳動(dòng)系統(tǒng),防抱死制動(dòng)系統(tǒng)(ABS),防滑控制系統(tǒng)(ASR),廢氣再循環(huán)系統(tǒng),巡航系統(tǒng)和空調(diào)系統(tǒng),車身電子控制系統(tǒng)(包括照明指示和車窗,刮雨器等)。完善的汽車CAN總線網(wǎng)絡(luò)系統(tǒng)架構(gòu)如圖1所示。
2 CAN節(jié)點(diǎn)硬件構(gòu)架
核心芯片:
選用PHILIPS公司的高性能8位微處理器P89C668。其突出特點(diǎn)如下:
80C51 中央處理單元;
內(nèi)置可ISP(在系統(tǒng)編程)和IAP(在應(yīng)用編程)的Flash 存儲(chǔ)器,Boot ROM 可通過(guò)串口訪問(wèn)從而升級(jí)下載用戶程序;
每個(gè)機(jī)器周期6 個(gè)時(shí)鐘周期操作標(biāo)準(zhǔn),每個(gè)機(jī)器周期12 個(gè)時(shí)鐘周期操作可選,周期12 個(gè)時(shí)鐘周期下速度高達(dá)33MHz;
8K字節(jié)RAM和64K字節(jié)FLASH;
4 個(gè)中斷優(yōu)先級(jí),8 個(gè)中斷源;
自帶串行接口序列;
5路可編程的計(jì)數(shù)器陣列PCA(PWM輸出,捕捉/比較,高速輸出三種工作方式)。
無(wú)論從處理能力,存儲(chǔ)容量,還是外圍資源以及網(wǎng)絡(luò)可擴(kuò)展性方面來(lái)評(píng)價(jià),P89C668都是一款出色的微處理器,適用工控電子等各個(gè)領(lǐng)域。尤其是其8K字節(jié)RAM的"海量"內(nèi)存,更是許多高速存儲(chǔ)應(yīng)用場(chǎng)合的首選。
CAN接口電路:
采用技術(shù)成熟應(yīng)用廣泛的SJA1000(CAN控制器),6N137(光電隔離),P82C250(CAN收發(fā)器)組成接口電路。需要指出的是,CAN總線(CANH,CANL)兩端務(wù)必跨接120歐的終端電阻。SJA1000中斷引腳接CPU的外中斷0引腳
在應(yīng)用/系統(tǒng)編程電路:
IAP/ISP技術(shù)在許多款高性能單片機(jī)得到應(yīng)用,其突出特點(diǎn)是方便快捷的實(shí)現(xiàn)程序的下載和更新。P89C668的FLASH空間0XFC00~0XFFFF燒寫入1K字節(jié)的Boot Rom程序,上電后可以通過(guò)軟件和硬件置位方法進(jìn)入Boot Rom程序,通過(guò)PHILIPS提供的編程軟件由串行口通訊就可以實(shí)現(xiàn)程序的在線升級(jí)(ISP)。當(dāng)然用戶還可以根據(jù)需要依據(jù)協(xié)議,自己編寫B(tài)oot Rom程序(IAP)。通過(guò)撥碼開(kāi)關(guān)硬件置位(ALE, , ,P2.6,P2.7),上電后強(qiáng)制進(jìn)入Boot Rom程序,燒寫程序完畢后撥回原來(lái)狀態(tài)重新上電后就進(jìn)入用戶程序。串行口電平轉(zhuǎn)換芯片用MAX202替代MAX232,其匹配電容只需103瓷片電容。串行數(shù)據(jù)通訊波特率可達(dá)38400bps。
晶振和復(fù)位電路:
外接一塊工業(yè)級(jí)的12M振蕩芯片作為時(shí)鐘信號(hào)。復(fù)位電路采用X25045芯片進(jìn)行智能控制。X25045芯片將看門狗定時(shí)器,電源監(jiān)控電路和E2PROM功能合三為一。看門狗定時(shí)器功能在系統(tǒng)出錯(cuò)期間,經(jīng)過(guò)一個(gè)可設(shè)置的時(shí)間間隔就置位RESET信號(hào)。電源監(jiān)控電路能檢測(cè)到欠電壓狀況,在VCC下降到限閥值以下,系統(tǒng)被復(fù)位。并且RESET信號(hào)在VCC恢復(fù)且穩(wěn)定之前一直有效。存儲(chǔ)器功能的X25405是CMOS的4096字的E2PROM.并且支持SPI協(xié)議的三線(SO,SI,SCLK)存取。本節(jié)點(diǎn)用到X25405的前兩個(gè)功能構(gòu)成可靠的復(fù)位電路。
開(kāi)關(guān)/數(shù)字量,模擬量檢測(cè)電路:
汽車節(jié)點(diǎn)的開(kāi)關(guān)器件(信號(hào)燈,雨刮,面板,車窗玻璃,電動(dòng)后視鏡等等的開(kāi)關(guān))特別復(fù)雜和繁多,而電流檢測(cè),水溫油位傳感器信號(hào)都是非線性的模擬信號(hào),所以可靠實(shí)時(shí)地對(duì)這些開(kāi)關(guān)/模擬量進(jìn)行檢測(cè)成為汽車電子硬件必須解決的問(wèn)題。傳統(tǒng)的分立元件保持電路存在可靠性差,尤其是開(kāi)關(guān)觸點(diǎn)氧化嚴(yán)重,浪費(fèi)大量的微處理器I/O口等問(wèn)題,推薦采用MOTOROLA公司的多路開(kāi)關(guān)檢測(cè)芯片MC33993。其突出優(yōu)點(diǎn)如下:
3.3/5.0V的SPI序列讀寫(SO,SI,SCLK);
8路可編程開(kāi)關(guān)輸入檢測(cè)(接地或接電源),14路接地開(kāi)關(guān)輸入檢測(cè),每路開(kāi)關(guān)狀態(tài)改變均能夠產(chǎn)生中斷;
開(kāi)關(guān)輸入電壓從-14V~Vpwr(工作電源),Vpwr最大可達(dá)40V;
開(kāi)關(guān)狀態(tài)改變時(shí)的可選擇喚醒;
可選擇的濕性電流(16mA或2mA);
22對(duì)1的模擬量輸出;
Vpwr的低功耗電流(standby current)小于100uA,VDD的低功耗電流(standby current)小于10uA。
可見(jiàn)只需要四個(gè)CPU口線(SPI序列線和片選),就能夠完成22路開(kāi)關(guān)量(其中有8路可編程為對(duì)接電源開(kāi)關(guān))的檢測(cè),還可以進(jìn)行串行和并行的多片MC33993級(jí)連。所謂的濕性電流(wetting current),指的是MC33993內(nèi)部提供的輸入口的上拉和下拉恒流源,可以編程選擇為16mA或2mA,這對(duì)于保證開(kāi)關(guān)的可靠閉合,去除金屬觸點(diǎn)的氧化物有著良好的作用。輸入口的恒流源,可以直接驅(qū)動(dòng)MOSFET以及LED。每一個(gè)輸入口都可以編程為模擬量輸出狀態(tài),從而在AMUX引腳輸出所選輸入口的電壓。利用MC33993恒流源和模擬量輸出可以組成線性的傳感器檢測(cè)電路。ADC芯片選用AD公司生產(chǎn)的并行數(shù)據(jù)采樣集成芯片AD1674。它從引腳到功能都與AD574/674完全兼容,但內(nèi)部增加了采樣/保持電路,采樣頻率為100kHZ,并且有全控模式和單一工作模式。其采樣精度可達(dá)0.05%,符合高速數(shù)據(jù)采集的要求。
功率器件驅(qū)動(dòng)電路:
汽車車身控制系統(tǒng)需要驅(qū)動(dòng)大功率的用電器件,比如照明信號(hào)燈,前后雨刮器電機(jī),電動(dòng)車窗,電動(dòng)后視鏡等等。功率驅(qū)動(dòng)器件考慮采用MOTOROLA公司的汽車專用功率器件。MC33286為汽車電氣專用智能的雙路控制驅(qū)動(dòng)芯片,與傳統(tǒng)的機(jī)械繼電器相比,自身提供過(guò)流和過(guò)熱保護(hù),響應(yīng)時(shí)間更短,穩(wěn)定性更高。MC33286設(shè)有兩路驅(qū)動(dòng)通道,每路最大工作電流可達(dá)15A,通過(guò)兩路輸入端口將CPU引腳電平信號(hào)引入,經(jīng)過(guò)內(nèi)部的邏輯處理模塊轉(zhuǎn)換成輸出通道的電平變化。特別適合信號(hào)燈以及阻性負(fù)載的驅(qū)動(dòng)。MC33887是帶反饋的H橋型驅(qū)動(dòng)芯片,專用來(lái)驅(qū)動(dòng)需要正反轉(zhuǎn)的電機(jī)負(fù)載。MC33486與MC33887類似,但內(nèi)部只有半橋須外加CMOS管以構(gòu)成全橋驅(qū)動(dòng)電路,穩(wěn)定輸出可達(dá)10 A,尤其適用于電動(dòng)車窗電機(jī)之類的大功率并伴有沖擊電流的正反相控制要求。
3 軟件結(jié)構(gòu)
系統(tǒng)的程序結(jié)構(gòu)分為四個(gè)部分:CAN通訊程序(包括應(yīng)用層協(xié)議的SJA1000通訊),外圍接口程序(所有檢測(cè)芯片和驅(qū)動(dòng)芯片的驅(qū)動(dòng)),中斷服務(wù)程序(處理開(kāi)關(guān)信號(hào)以及故障報(bào)警等消息),主程序(完成系統(tǒng)初始化和任務(wù)調(diào)度,喂狗等)。限于篇幅,以下著重介紹 CAN應(yīng)用層協(xié)議。
本系統(tǒng)CAN通訊選用CAN2.0B協(xié)議的PeliCAN模式,通信位速率為500Kbps,采用雙驗(yàn)收濾波器機(jī)制。為使用及修改方便,通訊協(xié)議中標(biāo)識(shí)碼設(shè)計(jì)兼容點(diǎn)對(duì)點(diǎn)、一對(duì)多及廣播通訊模式。開(kāi)關(guān)量消息通訊時(shí)各節(jié)點(diǎn)間采用主從結(jié)構(gòu),子節(jié)點(diǎn)的報(bào)文只有主節(jié)點(diǎn)接收(點(diǎn)對(duì)點(diǎn)模式),主節(jié)點(diǎn)的報(bào)文所有子節(jié)點(diǎn)均接收(廣播模式)。模擬量消息通訊時(shí)各節(jié)點(diǎn)間采用點(diǎn)對(duì)點(diǎn)模式。
標(biāo)識(shí)符定義:(如圖2所示)
類名:00000100——應(yīng)答類消息(自檢應(yīng)答、故障診斷);00001000——命令類消息;00010000——調(diào)試類消息;00100000——下載類消息;01000000——工作類消息。
保留A:驗(yàn)收濾波器配置預(yù)留
應(yīng)答類消息中:ID19:1——自檢應(yīng)答消息 0——故障診斷出錯(cuò)消息
ID20:驗(yàn)收濾波器配置預(yù)留
工作類消息中:ID19:1——開(kāi)關(guān)量消息 0——模擬量消息
ID20:驗(yàn)收濾波器配置預(yù)留
目的地址:接-收?qǐng)?bào)文節(jié)點(diǎn)的地址
源地址:發(fā)送報(bào)文節(jié)點(diǎn)的地址,用于系統(tǒng)自檢。
4 結(jié)束語(yǔ)
CAN總線以其高性能,高可靠性及獨(dú)特的設(shè)計(jì),受到工業(yè)控制領(lǐng)域和汽車電子領(lǐng)域的廣泛重視,已被公認(rèn)為最有前途的現(xiàn)場(chǎng)總線之一。我們深信不久的將來(lái),國(guó)產(chǎn)的CAN總線汽車必將誕生。