基于DSP的CAN總線接口設(shè)計(jì)
控制器局部網(wǎng)絡(luò)(CAN ControllerAreaNetwork)是德國Bosch公司從20世紀(jì)80年代初為解決現(xiàn)代汽車中眾多的控制與測試儀器之間的數(shù)據(jù)交換而開發(fā)的一種串行數(shù)據(jù)通訊協(xié)議。1991年9月PHILIPS公司制定并頒布了CAN2.0技術(shù)規(guī)范;1993年11月國際標(biāo)準(zhǔn)化組織(ISO)正式頒布了關(guān)于CAN總線的ISO11898標(biāo)準(zhǔn) ,為CAN總線的標(biāo)準(zhǔn)化、規(guī)范化應(yīng)用鋪平了道路。
世界各半導(dǎo)體廠商推出了許多CAN總線產(chǎn)品。一類是專用的CAN控制器芯片,如Intel公司的82526,82527;PHILIP公司的82C200,SJA1000;NEC公司的72005等;另一類是嵌入CAN接口的單片機(jī),如Intel公司的87C196CA/CB;PHILIP公司的80C592,80CE598;Motorola公司的68HC05X4,68HC05X16,TI公司的TMS320F240x系列DSP等。
CAN總線具有如下特點(diǎn):
1)結(jié)構(gòu)簡單,通信介質(zhì)可是雙絞線、同軸電纜或光纖;
2)通信方式靈活??梢远嘀鲝姆绞焦ぷ鳎梢渣c(diǎn)對點(diǎn)、點(diǎn)對多點(diǎn)及全局廣播方式發(fā)送和接收數(shù)據(jù);
3)采用短幀通訊格式,保證了實(shí)時(shí)性和可靠性,可滿足一般工業(yè)應(yīng)用;
4)非破壞總線仲裁技術(shù),具有多優(yōu)先級;
5)集成了CAN協(xié)議的物理層和數(shù)據(jù)鏈路層功能,可完成對通訊數(shù)據(jù)的成幀處理工作。
CAN總線具有良好功能特性和極高的可靠性,現(xiàn)場抗干擾能力強(qiáng)。廣泛應(yīng)用于工業(yè)測控領(lǐng)域。
2.CAN總線接口的硬件設(shè)計(jì)
圖1 CAN總線接口電路
硬件設(shè)計(jì)使用了TI公司的TMS320LF2407A的DSP芯片,其CAN總線接口的硬件電路如圖1所示。一般在CAN控制器和物理總線間采用82C250驅(qū)動(dòng)芯片,提供對總線的差動(dòng)發(fā)送和接收功能。但是因?yàn)?2C250為5V供電,而F2407采用3.3V供電,兩芯片間需要電平轉(zhuǎn)換電路。我們選用了只需3.3V供電的CAN總線收發(fā)驅(qū)動(dòng)芯片SN65HVD230。
F2407的內(nèi)部集成有CAN控制器。該控制器是一個(gè)16位的外設(shè)模塊,支持CAN2.0B協(xié)議,具有6個(gè)8字節(jié)郵箱;具有可編程的中斷配置、總線喚醒功能,以及自動(dòng)回復(fù)、自動(dòng)重發(fā)、錯(cuò)誤診斷等功能。CAN模塊的結(jié)構(gòu)框圖如圖2所示。
圖2 CAN控制器結(jié)構(gòu)框圖
訪問CAN模塊可分為控制/狀態(tài)寄存器和6個(gè)郵箱的訪問。CAN控制器總共有15個(gè)16位的控制寄存器,控制著位定時(shí)器、郵箱的發(fā)送或接收使能、錯(cuò)誤狀態(tài)及CAN中斷等。郵箱位于一個(gè)48×16位的RAM空間,每個(gè)郵箱由郵箱標(biāo)示寄存器、郵箱控制寄存器及存儲空間組成,最大可存儲8字節(jié)數(shù)據(jù)。
3.CAN總線接口的程序設(shè)計(jì)
CAN的通訊采用短幀格式。每個(gè)數(shù)據(jù)幀由幀起始、仲裁域、控制域、數(shù)據(jù)域、校驗(yàn)域、應(yīng)答域和幀結(jié)束組成。F2407支持標(biāo)準(zhǔn)幀格式和擴(kuò)展幀格式,如圖3所示。標(biāo)識符是作為報(bào)文的名稱,在接收器的驗(yàn)收判斷和仲裁過程確定訪問優(yōu)先權(quán)中使用;遠(yuǎn)程發(fā)送請求位(RTR)確定發(fā)送遠(yuǎn)程幀還是數(shù)據(jù)幀;數(shù)據(jù)長度碼(DLC)確定每幀發(fā)送幾個(gè)字節(jié)數(shù)據(jù)。
圖3 CAN信息幀
在使用CAN控制器前必須對它的一些內(nèi)部寄存器進(jìn)行設(shè)置。如流程圖4和流程圖5所示,需配置位定時(shí)器和初始化郵箱。位定時(shí)器的BCR1和BCR2寄存器決定了CAN控制器的通信波特率、同步跳轉(zhuǎn)寬度、采樣次數(shù)和重同步方式。郵箱初始化需設(shè)置郵箱的標(biāo)識符,發(fā)送的是遠(yuǎn)程幀還是數(shù)據(jù)幀及對發(fā)送的數(shù)據(jù)區(qū)賦初值。這樣,郵箱就能進(jìn)行正常的發(fā)送和接收工作了。
評論