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