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