基于CAN總線的智能車的設(shè)計(jì)與實(shí)現(xiàn)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
控制器局域網(wǎng)絡(luò)CAN(Controller Area Network)是德國(guó)BOSCH公司為解決現(xiàn)代汽車中眾多電子設(shè)備之間的數(shù)據(jù)交換而開(kāi)發(fā)的一種串行數(shù)據(jù)通信協(xié)議,它具有高可靠性和良好的錯(cuò)誤檢測(cè)能力。汽車上主要有高速(500 kb/s)和低速(125 kb/s)兩種CAN總線,這兩種總線通過(guò)網(wǎng)關(guān)連接,實(shí)現(xiàn)兩個(gè)局域網(wǎng)間的數(shù)據(jù)共享。
目前,隨著對(duì)系統(tǒng)復(fù)雜化、精細(xì)化的要求越來(lái)越高,傳統(tǒng)的集中控制從實(shí)時(shí)性和可靠性上越來(lái)越不能滿足要求,分布控制逐漸得到了廣泛應(yīng)用。分布控制就是系統(tǒng)由一個(gè)主控制器和若干個(gè)分控制器組成,分控制器分別處理一部分系統(tǒng)功能,以并行或串行的方式與主控制器進(jìn)行數(shù)據(jù)和信息的交互。
1 系統(tǒng)的總體設(shè)計(jì)
本設(shè)計(jì)主要完成了智能車在預(yù)先鋪貼的道路上行駛。整個(gè)系統(tǒng)硬件組成框圖如圖1所示,包括采集節(jié)點(diǎn)和控制節(jié)點(diǎn),它們之間通過(guò)CAN總線完成數(shù)據(jù)的交互。采集節(jié)點(diǎn)通過(guò)傳感器采集道路信息,經(jīng)過(guò)信號(hào)調(diào)理電路傳送到微控制器,微控制器對(duì)信息進(jìn)行處理后把數(shù)據(jù)發(fā)送到CAN總線上??刂乒?jié)點(diǎn)讀取總線上的數(shù)據(jù)并轉(zhuǎn)換成控制命令,控制執(zhí)行機(jī)構(gòu)以確保智能車不偏離道路并且保持較高的速度。
2 節(jié)點(diǎn)的硬件接口設(shè)計(jì)
2.1 采集節(jié)點(diǎn)SST89E564RD與CAN總線接口
SST89E564RD自身不具有CAN模塊,因此擴(kuò)展了CAN總線控制器,通過(guò)CAN總線收發(fā)器接入總線。本設(shè)計(jì)采用的CAN控制器是SJA1000,其兼容CAN2.0B協(xié)議,通過(guò)單片機(jī)對(duì)其進(jìn)行初始化,主要實(shí)現(xiàn)數(shù)據(jù)的接收和發(fā)送等通信任務(wù)。收發(fā)器選用PCA82C250,它是一種應(yīng)用廣泛的CAN控制器與物理總線間的接口芯片,能夠?qū)偩€的信息進(jìn)行差動(dòng)發(fā)送和接收。為了進(jìn)一步提高系統(tǒng)的抗干擾能力,在PCA82C250和SJA1000之間用高速光耦6N137進(jìn)行隔離,以降低由于不同節(jié)點(diǎn)的高共模電壓引起的串?dāng)_甚至對(duì)器件的損壞,提高系統(tǒng)的可靠性,其通信速率高達(dá)10 Mb/s,完全能滿足CAN總線需要。SST89E564RD與CAN總線的硬件接口如圖2所示。
2.2 控制節(jié)點(diǎn)DSP 與CAN 總線接口
TMS320F2812 DSP 芯片內(nèi)部集成了一個(gè)完整的增強(qiáng)型CAN 控制器, 稱之為eCAN, 在硬件設(shè)計(jì)中,不需要再加入獨(dú)立的CAN 控制器來(lái)實(shí)現(xiàn)CAN 總線的底層協(xié)議, 直接通過(guò)收發(fā)器PCA82C250 連接總線。DSP 與CAN總線接口設(shè)計(jì)如圖3 所示。
3 CAN節(jié)點(diǎn)軟件設(shè)計(jì)
3.1 CAN總線通信數(shù)據(jù)格式
CAN協(xié)議通信格式中有數(shù)據(jù)幀、遠(yuǎn)程幀、出錯(cuò)幀和超載幀4種幀格式。其中,數(shù)據(jù)幀和遠(yuǎn)程幀的發(fā)送需要在CPU控制下進(jìn)行,而出錯(cuò)幀和超載幀的發(fā)送則是在錯(cuò)誤發(fā)生和超載發(fā)生時(shí)自動(dòng)進(jìn)行的。一個(gè)有效的CAN的數(shù)據(jù)幀由起始幀、仲裁域、控制域、數(shù)據(jù)域、應(yīng)答域和結(jié)束幀組成。一幀信息除仲裁域、控制域和數(shù)據(jù)域外,其他信息都是CAN控制器發(fā)送數(shù)據(jù)時(shí)自動(dòng)加上去的,而仲裁域、控制域和數(shù)據(jù)域則必須由CPU給出。TMS320F2812的CAN控制器支持標(biāo)準(zhǔn)格式和擴(kuò)展格式兩種不同的幀格式,本設(shè)計(jì)采用標(biāo)準(zhǔn)格式。標(biāo)識(shí)符作為報(bào)文的名稱,在仲裁過(guò)程期間,它首先被發(fā)送到總線,在接收器的驗(yàn)收判斷中和仲裁過(guò)程確定訪問(wèn)優(yōu)先權(quán)中都要用到。遠(yuǎn)程發(fā)送請(qǐng)求位RTR決定發(fā)送的是遠(yuǎn)程幀還是數(shù)據(jù)幀。數(shù)據(jù)長(zhǎng)度碼DLC用來(lái)確定每幀發(fā)送幾個(gè)字節(jié)的數(shù)據(jù),最多8 B。SJA1000可以工作在標(biāo)準(zhǔn)CAN模式和增強(qiáng)型CAN模式兩種模式。標(biāo)準(zhǔn)CAN模式提供11 bit標(biāo)識(shí)符的識(shí)別,而增強(qiáng)型CAN模式支持29 bit標(biāo)識(shí)符識(shí)別。本設(shè)計(jì)選擇SJA1000工作在標(biāo)準(zhǔn)CAN模式,與DSP的CAN模塊選擇的數(shù)據(jù)格式相吻合。
3.2 SST89E564RD軟件設(shè)計(jì)
SST89E564RD軟件的設(shè)計(jì)是在KeilC下完成的,主要由初始化模塊、采集模塊和通信模塊組成。
(1)初始化模塊。單片機(jī)在SJA1000的復(fù)位模式下完成對(duì)CAN控制器的初始化,向其控制寄存器寫入控制字,確定CAN控制器的工作方式。
(2)采集模塊。攝像頭傳感器采集到的信息經(jīng)信號(hào)調(diào)理電路處理后傳輸?shù)絾纹瑱C(jī),單片機(jī)采用圖像濾波算法對(duì)所有信息進(jìn)行預(yù)處理。
(3)通信模塊。把采集模塊處理完的信息通過(guò)CAN總線與其他節(jié)點(diǎn)進(jìn)行信息交互。
3.3 TMS320F2812軟件設(shè)計(jì)
TMS320F2812的eCAN模塊主要由CAN協(xié)議內(nèi)核和消息控制器構(gòu)成。協(xié)議內(nèi)核主要完成消息解碼并向接收緩沖器發(fā)送解碼后的消息,同時(shí)根據(jù)CAN協(xié)議向總線發(fā)送消息,消息控制器決定對(duì)接收到的消息的取舍。TMS320F2812軟件主要由初始化模塊、通信模塊和驅(qū)動(dòng)模塊組成。
(1)初始化模塊。其完成對(duì)CAN控制層中的寄存器進(jìn)行初始化,包括時(shí)鐘使能、引腳定義、波特率的設(shè)定和收發(fā)郵箱的配置等。初始化模塊流程圖如圖4所示。
(2)通信模塊。它包括報(bào)文發(fā)送模塊、報(bào)文接收模塊和CAN出錯(cuò)管理模塊。
(3)驅(qū)動(dòng)模塊。它包括轉(zhuǎn)向控制模塊和速度控制模塊。由于智能車處于彎道和直道的轉(zhuǎn)向模型不同,本系統(tǒng)在轉(zhuǎn)向控制模塊中采用了分段比例控制算法,而對(duì)智能車速度的調(diào)整既要快速又要準(zhǔn)確,還不能頻繁波動(dòng),本系統(tǒng)在速度控制模塊中采用了PID控制算法。
系統(tǒng)采用SST89E564RD微處理器實(shí)時(shí)采集道路信息,采用TMS320F2812進(jìn)行數(shù)據(jù)的綜合處理,輸出相應(yīng)命令給執(zhí)行機(jī)構(gòu),所有數(shù)據(jù)通過(guò)CAN總線交互,方便功能拓展。通過(guò)模擬測(cè)試和大量環(huán)境試驗(yàn),以及對(duì)記錄、實(shí)時(shí)檢測(cè)、數(shù)據(jù)分析的整理,該智能車目前運(yùn)行可靠。后續(xù)將增添無(wú)線模塊節(jié)點(diǎn),為該智能車添加遙控功能。