本站小編為你精心準(zhǔn)備了談CAN總線的智能小車通信系統(tǒng)設(shè)計(jì)參考范文,愿這些范文能點(diǎn)燃您思維的火花,激發(fā)您的寫作靈感。歡迎深入閱讀并收藏。
摘要:設(shè)計(jì)了一種基于can總線的智能小車通信系統(tǒng)。以CAN總線控制器SJA1000芯片為控制核心,通過CAN總線收發(fā)器TJA1050實(shí)現(xiàn)了智能小車的數(shù)據(jù)通信。給出了CAN總線控制器SJA1000的初始化、發(fā)送和接收模塊程序的設(shè)計(jì)方法。實(shí)際應(yīng)用表明,該通信系統(tǒng)較好地解決了智能節(jié)點(diǎn)的通信要求。
關(guān)鍵詞:CAN總線;智能小車通信系統(tǒng);CAN總線控制器
智能車系統(tǒng)是利用傳感器技術(shù)與通信技術(shù)綜合集成的控制系統(tǒng)。它是集車輛工程技術(shù)和通信技術(shù)于一體的綜合技術(shù),是車輛工程領(lǐng)域發(fā)展的趨勢。CAN(ControllerAreaNetwork)總線[1]是一種支持分布式和實(shí)時(shí)控制的串行通信網(wǎng)絡(luò)。常用的CAN汽車總線是實(shí)現(xiàn)汽車數(shù)字網(wǎng)絡(luò)化的基礎(chǔ),主要應(yīng)用于自動(dòng)控制系統(tǒng)和汽車網(wǎng)絡(luò)的通信,具備通信實(shí)時(shí)性和可靠性等優(yōu)點(diǎn)。CAN總線控制器SJA1000能夠完成通信系統(tǒng)的物理層與數(shù)據(jù)鏈路層的功能。CAN總線采用載波監(jiān)聽多路訪問的方式對媒體進(jìn)行訪問,類似于以太網(wǎng)的媒體訪問機(jī)制;使用CANH和CANL傳輸數(shù)據(jù)信號,采用差分傳輸方式,具備較強(qiáng)的抗干擾能力。CAN總線控制器連接總線收發(fā)器模塊和隔離電路模塊就可以建立一個(gè)CAN總線通信節(jié)點(diǎn)。
1CAN通信系統(tǒng)的硬件設(shè)計(jì)
基于CAN總線通信系統(tǒng)的硬件設(shè)計(jì)主要包括單片機(jī)控制模塊、CAN總線控制器模塊、CAN總線收發(fā)器隔離電路模塊和CAN收發(fā)器TJA1050模塊。基于CAN總線通信系統(tǒng)總體工作原理框圖如圖1所示。
1.1CAN總線的工作原理
汽車上的控制器都是由電子裝置控制的,為了將各個(gè)電路單元統(tǒng)一管理,實(shí)現(xiàn)車內(nèi)速度、溫度等狀態(tài)信息通信的共享,在汽車通信網(wǎng)絡(luò)內(nèi)部利用CAN總線進(jìn)行數(shù)據(jù)通信。基于CAN總線的數(shù)據(jù)傳輸通信具有實(shí)時(shí)性,在汽車CAN通信網(wǎng)絡(luò)內(nèi)部,任意一個(gè)節(jié)點(diǎn)都可以在任意時(shí)刻主動(dòng)向網(wǎng)絡(luò)上的其他節(jié)點(diǎn)發(fā)送信息,可以多主方式工作。CAN總線的通信協(xié)議分為應(yīng)用層、對象層、傳輸層和物理層。傳輸層是CAN通信協(xié)議的核心,將接收到的報(bào)文傳輸給對象層,并接受來自對象層的報(bào)文,主要負(fù)責(zé)故障界定、仲裁、應(yīng)答等;對象層的功能是報(bào)文濾波和報(bào)文處理;物理層的作用是信號電平和位表示,必須支持CAN總線中隱性位和顯性位的狀態(tài)特征。報(bào)文傳輸由數(shù)據(jù)幀、遠(yuǎn)程幀、錯(cuò)誤幀和過載幀4個(gè)不同的幀類型來表示。數(shù)據(jù)幀和遠(yuǎn)程幀分別通過幀間空間與其他各幀分開。數(shù)據(jù)幀由7個(gè)不同的位場組成,其中數(shù)據(jù)場是由數(shù)據(jù)幀中的待發(fā)送數(shù)據(jù)組成,可以為0~8個(gè)字節(jié),每個(gè)字節(jié)包含8個(gè)位[1]。CAN總線的通信協(xié)議采用短幀格式,以實(shí)現(xiàn)汽車通信網(wǎng)絡(luò)中工作狀態(tài)與實(shí)時(shí)控制命令相符的要求。CAN總線傳輸信息的方式為:采用高低電平表示字符編碼,采用串行數(shù)據(jù)傳輸,以1Mb/s的波特率在雙絞線或光纜上通信。CAN總線的通信協(xié)議采用CRC碼檢驗(yàn)并提供對應(yīng)的錯(cuò)誤處理功能,以實(shí)現(xiàn)數(shù)據(jù)通信的可靠性。在CAN總線通信系統(tǒng)中,通常只設(shè)置單個(gè)主節(jié)點(diǎn),完成主節(jié)點(diǎn)向從節(jié)點(diǎn)發(fā)送配置數(shù)據(jù)、主節(jié)點(diǎn)向從節(jié)點(diǎn)請求當(dāng)前工作狀態(tài)以及數(shù)據(jù)管理等功能。從節(jié)點(diǎn)根據(jù)工業(yè)應(yīng)用的需要完成不同的功能,如汽車狀態(tài)數(shù)據(jù)的采集、設(shè)備的控制等,并實(shí)現(xiàn)發(fā)送數(shù)據(jù)和接收數(shù)據(jù)等通信功能。
1.2CAN總線接口電路設(shè)計(jì)
CAN總線接口電路主要由微控制器AT89C51,CAN總線控制器SJA1000芯片、CAN總線收發(fā)器TJA1050和高速光電耦合器6N137器件等組成。SJA1000芯片的主要引腳及其功能[2]如表1所示。在CAN總線接口電路設(shè)計(jì)中,單片機(jī)AT89C51是CAN節(jié)點(diǎn)的核心控制模塊,主要用于處理智能小車行駛速度、溫度等狀態(tài)數(shù)據(jù)的通信。其中單片機(jī)AT89C51P3口作為AT89C51的一些特殊功能口。P3.6WR為低電平有效,外部數(shù)據(jù)存儲(chǔ)器寫選通,P3.7RD為低電平有效,外部數(shù)據(jù)存儲(chǔ)器讀選通。P0~P2口是8位雙向I/O口,連接CAN總線控制器SJA1000芯片的數(shù)據(jù)接口AD0~AD7,它輸入信號給通信模塊,并發(fā)送到CAN總線上。接收過程則反之,通過通信模塊接收CAN總線上的數(shù)據(jù),并通過這些數(shù)據(jù)控制輸出端口[3-5]。設(shè)計(jì)系統(tǒng)主要接口電路如圖2所示。單片機(jī)AT89C51控制SJA1000的初始化,控制SJA1000實(shí)現(xiàn)汽車狀態(tài)信息的接收和發(fā)送等通信功能。將CAN總線控制器SJA1000的8位數(shù)據(jù)總線AD0~AD7連接到單片機(jī)AT89C51的P0口。CAN總線控制器CS片選信號連接單片機(jī)AT89C51的P2.0口,為低電平有效。當(dāng)P2.0為低電平時(shí),單片機(jī)選中芯片SJA1000,可對CAN總線控制器實(shí)現(xiàn)讀寫操作功能。芯片SJA1000的中斷引腳INT可以選擇連接單片機(jī)AT89C51的INT0引腳。本電路中,單片機(jī)AT89C51通過中斷方式訪問芯片SJA1000。芯片SJA1000的RD,WR,ALE分別與單片機(jī)AT89C51的相應(yīng)引腳相連。
1.3CAN總線收發(fā)器隔離電路模塊設(shè)計(jì)
在CAN總線收發(fā)器隔離電路模塊設(shè)計(jì)中,CAN總線控制器SJA1000采用隔離電路模塊光電耦合芯片6N137連接CAN總線,實(shí)現(xiàn)總線上各CAN節(jié)點(diǎn)間的電氣隔離。因此,在SJA1000與TJA1050之間采用隔離電路模塊,能夠提高其抗干擾的能力。隔離電路模塊一般采用光電耦合芯片6N137來設(shè)計(jì)隔離電路。其具備電流限制的功能,可以進(jìn)一步提高對CAN總線的保護(hù)[6-7]。CAN總線收發(fā)器采用收發(fā)器TJA1050。它是CAN總線控制器與CAN物理總線之間的接口。TJA1050使用兩路CANH和CANL傳輸數(shù)據(jù)信號,為CAN總線提供差動(dòng)發(fā)送性能與接收性能。TJA1050的通信波特率在60Kb/s以上,在CAN總線錯(cuò)誤時(shí)能快速切斷錯(cuò)誤信號,能保證正常的汽車電子通信。不上電時(shí),TJA1050可使CAN物理總線表現(xiàn)為無源特性。在電路設(shè)計(jì)中,收發(fā)器TJA1050由引腳S控制,分為高速和靜音兩種工作模式。
2智能小車CAN通信系統(tǒng)的軟件設(shè)計(jì)
基于CAN總線協(xié)議的通信系統(tǒng)軟件設(shè)計(jì)主要包括:CAN節(jié)點(diǎn)初始化、狀態(tài)數(shù)據(jù)發(fā)送單元和數(shù)據(jù)接收單元。CAN節(jié)點(diǎn)初始化包括SJA1000初始化與單片機(jī)初始化。對CAN總線控制器SJA1000的初始化可在復(fù)位模式下進(jìn)行。通過節(jié)點(diǎn)初始化、數(shù)據(jù)發(fā)送以及數(shù)據(jù)接收,完成單片機(jī)控制SJA1000傳輸數(shù)據(jù)至CAN總線。圖3CAN通信系統(tǒng)的初始化流程示意單片機(jī)初始化主要包括工作方式的設(shè)置、波特率參數(shù)設(shè)置和中斷允許寄存器的設(shè)置等。CAN總線控制器芯片SJA1000的初始化,包括選擇工作模式、確定通信波特率、設(shè)置輸出模式等內(nèi)容。在CAN發(fā)送函數(shù)中,通過SJA1000可以將智能小車系統(tǒng)狀態(tài)數(shù)據(jù)傳輸?shù)紺AN總線上。對CAN總線上傳輸?shù)男畔ⅲ?a href="http://www.vivacrystal.cn/txcb/tongxinxitonglunwen/752566.html" target="_blank">通信系統(tǒng)設(shè)計(jì)采用中斷方法。系統(tǒng)每接收到一次CAN信息,產(chǎn)生一次中斷,以觸發(fā)單片機(jī)AT89C51產(chǎn)生中斷信號。CAN通信系統(tǒng)數(shù)據(jù)的發(fā)送程序包括CAN總線發(fā)送和串口發(fā)送函數(shù)等內(nèi)容;通信數(shù)據(jù)的接收程序包括串口接收和CAN總線接收等函數(shù)。其主要工作過程為:CAN節(jié)點(diǎn)從單片機(jī)中斷期間接收狀態(tài)信息,然后封裝汽車狀態(tài)數(shù)據(jù),再通過CAN總線控制器SJA1000傳輸至CAN物理總線上。運(yùn)用同樣原理,CAN通信網(wǎng)絡(luò)數(shù)據(jù)的接收程序則包含了串口接收和CAN總線接收。其工作過程為:CAN節(jié)點(diǎn)于單片機(jī)中斷時(shí)接收汽車狀態(tài)信息數(shù)據(jù),然后將數(shù)據(jù)封裝成幀,用符合CAN總線協(xié)議的方式進(jìn)行接收。CAN通信系統(tǒng)的數(shù)據(jù)發(fā)送和接收單元以采集智能小車行駛速度數(shù)據(jù)為設(shè)計(jì)目的,并通過CAN節(jié)點(diǎn)通信實(shí)現(xiàn)共享小車速度數(shù)據(jù)的功能。基于CAN協(xié)議的數(shù)據(jù)發(fā)送程序如圖4所示。CAN總線控制器模塊使用中斷方式來接收CAN報(bào)文,因?yàn)橹袛喾绞竭m用于對實(shí)時(shí)性要求高的汽車數(shù)據(jù)應(yīng)用場合。數(shù)據(jù)發(fā)送單元選擇車速采集通道,用于采集車速數(shù)據(jù),最后傳輸符合CAN通信協(xié)議的小車行駛速度數(shù)據(jù)。運(yùn)用同樣原理可設(shè)計(jì)接收子程序。
3結(jié)語
本文設(shè)計(jì)的CAN通信系統(tǒng)以CAN總線控制器SJA1000芯片為核心,通過CAN總線收發(fā)器TJA1050,實(shí)現(xiàn)了智能小車速度數(shù)據(jù)的通信。實(shí)際應(yīng)用表明,CAN總線具有組網(wǎng)自由、自動(dòng)錯(cuò)誤界定、實(shí)時(shí)性良好等優(yōu)點(diǎn),解決了智能小車速度數(shù)據(jù)通信的實(shí)時(shí)性問題。因此,基于CAN總線的智能小車通信系統(tǒng)的設(shè)計(jì)開發(fā)具有一定的實(shí)用價(jià)值。
作者:林建宇 單位:上海電力大學(xué) 電子與信息工程學(xué)院