基于DSP的CAN總線系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
摘要:介紹了基于DSP的CAN控制器的設(shè)計(jì)及應(yīng)用方法,利用該方法可以在波特率高達(dá)lMb/s的條件下穩(wěn)定、可靠地傳輸數(shù)據(jù),而且延遲時(shí)間很少。實(shí)驗(yàn)證明,利用TMS320F2812內(nèi)嵌的CAN模塊來構(gòu)成的硬件電路和軟件設(shè)計(jì)十分簡(jiǎn)單實(shí)用。
關(guān)鍵字:CAN總線;串行通信;分布式控制;DSP;TMS320F2812
0 引言
eCAN模塊是一種片上增強(qiáng)型控制器,其性能較之已有的DSP內(nèi)嵌CAN控制器有較大的提高,而且數(shù)據(jù)傳輸更加靈活方便,數(shù)據(jù)量更大、可靠性更高、功能更加完備。隨著TMS320F2812的大量推廣使用,基于DSP的CAN總線通信方式將得到廣泛的應(yīng)用。
1 eCAN模塊的增強(qiáng)特性
eCAN模塊是TI公司的新一代32位高級(jí)CAN控制器,它完全兼容CAN2.0B協(xié)議,可以在有干擾的環(huán)境里使用上述協(xié)議與其它控制器串行通信。該模塊除具有一般DSP內(nèi)嵌CAN控制器的所有功能外,與TMS320F2812系列DSP的CAN模塊相比,它還主要具有如下一些增強(qiáng)特性:
(1)增加了郵箱數(shù)量,并且所有郵箱都具有獨(dú)立的接收屏蔽寄存器。TMS320F2812有多達(dá)32個(gè)郵箱,其所占用的512字節(jié)RAM都可以配置為
發(fā)送或接收郵箱,且都有一個(gè)可編程的接收屏蔽寄存器。因而其數(shù)據(jù)傳輸更加方便靈活、信息量大大增加;
(2)eCAN是一個(gè)32位的高級(jí)CAN控制器。其控制寄存器的狀態(tài)寄存器必須以32位方式訪問,而接收屏蔽、時(shí)間標(biāo)識(shí)寄存器、超時(shí)寄存器和郵箱所在的CAN范圍則可以以8位、16位和32位方式訪問;
(3)時(shí)間標(biāo)識(shí)。eCAN模塊應(yīng)用一個(gè)全速運(yùn)行的32位定時(shí)器(LNT)來獲得接收或者發(fā)送一個(gè)信息(有效的CAN數(shù)據(jù)幀)的時(shí)間。當(dāng)一個(gè)接收
信息被保存或被發(fā)送時(shí),定時(shí)器的內(nèi)容將寫入到相應(yīng)郵箱的時(shí)間標(biāo)識(shí)寄存器(MOTS)里。這樣就可獲得接收或發(fā)送一個(gè)信息的時(shí)間。當(dāng)郵箱成功發(fā)送或接收一個(gè)信息時(shí),LNT寄存器被清除。所以可以通過使用郵箱來實(shí)現(xiàn)網(wǎng)絡(luò)的全局時(shí)間同步;
(4)超時(shí)功能。為了確定所有的信息都能在預(yù)定的時(shí)間里送出或接收,每個(gè)郵箱都有它自己的超時(shí)寄存器(MOTS)。如果一個(gè)信息沒有在超
時(shí)寄存器設(shè)定的時(shí)間內(nèi)完成發(fā)送或接收,其超時(shí)狀態(tài)寄存器里將設(shè)置一個(gè)標(biāo)志位,并據(jù)此判斷是否超時(shí)。
以上這些增強(qiáng)特性使得TMS320F2812在進(jìn)行CAN通信時(shí),其數(shù)據(jù)傳輸更加方便靈活、數(shù)據(jù)量更大、功能更完備。
2 應(yīng)用設(shè)計(jì)
針對(duì)TI公司的TMS320F2812內(nèi)嵌的eCAN模塊的方便性和實(shí)用性,可用TMS320F2812微控制器組成一個(gè)CAN總線網(wǎng)絡(luò)來進(jìn)行實(shí)時(shí)數(shù)據(jù)收發(fā)。其
中CAN驅(qū)動(dòng)器使用TI公司的SN65HVD230D。此方案可擴(kuò)展性強(qiáng),功能強(qiáng)大。若要增加節(jié)點(diǎn)個(gè)數(shù),只需要在CAN總線上掛接帶有CAN模塊的控制器
即可。
在TM320F2812的eCAN模塊與USB-CAN模塊之間進(jìn)行通信時(shí),上位機(jī)可選用派恩公司的USB-CAN模塊,其調(diào)試界面為PCANView。這里將eCAN的郵箱0配置成發(fā)送郵箱,郵箱5配置成發(fā)送郵箱,并采用擴(kuò)展信息幀格式。發(fā)送采用查詢方式,接收用中斷方式,同時(shí)可采用DsP將接收的數(shù)據(jù)轉(zhuǎn)發(fā)回上位機(jī),并對(duì)接收和發(fā)送的數(shù)據(jù)進(jìn)行錯(cuò)誤計(jì)數(shù)。圖1所示為采用上位機(jī)設(shè)置端口、波特率等參數(shù),并通過USB-CAN模塊與下位機(jī)通信的調(diào)試界面圖,它可用來檢驗(yàn)TM320F2812的CAN總線通信是否正常。
3 硬件設(shè)計(jì)
本設(shè)計(jì)的硬件系統(tǒng)分為兩層:第一層是CAN總線與TMS320F12812接口層,用來實(shí)現(xiàn)CAN總線和TMS320F12812的物理接口;第二層為DSP與外
圍器件的信息處理層,其中TMS320F2812是針對(duì)控制領(lǐng)域應(yīng)用而設(shè)計(jì)的一款新型工控芯片,它集成了數(shù)字IO、事件管理器、A/D模數(shù)轉(zhuǎn)換、SPI串行外設(shè)接口、SCI異步串行通信接口、CAN控制器等控制資源。其CAN總線通信接口電路如圖2所示。
4 軟件設(shè)計(jì)
在使用CAN控制器之前,首先必須對(duì)它的內(nèi)部寄存器進(jìn)行初始化設(shè)置,包括相關(guān)IO口設(shè)置以及郵箱的相關(guān)配置。這里著重介紹如何進(jìn)行初始化設(shè)置和發(fā)送與接收的配置。圖3所示是本系統(tǒng)的主程序流程圖,其CAN配置流程如圖4所示。
在軟件設(shè)計(jì)時(shí),首先應(yīng)進(jìn)行IO口配置。由于CAN通訊所用到的兩個(gè)引腳CANTX和CANRX均為復(fù)用IO口,因此,首先要配置寄存器CANTIOC
的TXFUNC和RXFUNC位為l;再就是要初始化位時(shí)序,即對(duì)位時(shí)序配置寄存器CANBCR進(jìn)行配置,包括CAN控制器的通訊波特率、同步跳轉(zhuǎn)寬度、采樣次數(shù)等參數(shù)。
當(dāng)完成以上CAN配置之后,還需按照?qǐng)D5所示的流程圖來完成數(shù)據(jù)的發(fā)送與接收配置,同時(shí)初始化郵箱。郵箱初始化主要是設(shè)置郵箱的標(biāo)識(shí)符和控制域(即發(fā)送的是遠(yuǎn)程幀還是數(shù)據(jù)幀),以及對(duì)相應(yīng)的郵箱賦初值。
數(shù)據(jù)接收時(shí),所接收到的信息的標(biāo)識(shí)符必須與相應(yīng)的接收郵箱的標(biāo)識(shí)符相同,否則該信息將被濾除。這里,數(shù)據(jù)的發(fā)送與接收請(qǐng)求均采用標(biāo)志位查詢方式。
按照以上步驟設(shè)置好后,接著就是對(duì)數(shù)據(jù)的發(fā)送與接收請(qǐng)求進(jìn)行配置。數(shù)據(jù)接收可采用中斷方式,中斷配置可在主程序流程中進(jìn)行配置。正確配置中斷入口地址及中斷函數(shù),并開放CAN接收中斷后,還要分別配置不同的數(shù)據(jù)幀,包括標(biāo)準(zhǔn)幀和擴(kuò)展幀,以及數(shù)據(jù)幀和遠(yuǎn)程請(qǐng)求幀。
圖6表示為上位機(jī)接收數(shù)據(jù)的調(diào)試界面??梢钥吹剑珻AN通信和下位機(jī)間的數(shù)據(jù)通信,可以寫數(shù)據(jù)并發(fā)送給下位機(jī),同時(shí)也可接收下位機(jī)的數(shù)據(jù)來驗(yàn)證電路及軟件的正確性。
5 結(jié)束語
利用TMS320F2812內(nèi)嵌的eCAN模塊可使得硬件電路設(shè)計(jì)更為簡(jiǎn)單而可靠,而且性能也較已有的DSP內(nèi)嵌的CAN控制器有較大的提高。同時(shí),采用C語言編程,則可使得程序的設(shè)計(jì)難度降低,提高程序的可維護(hù)性并縮短開發(fā)時(shí)間。