1. 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總線接口的硬件設計
硬件設計使用了TI公司的TMS320LF2407A的DSP芯片,其CAN總線接口的硬件電路如圖1所示。一般在CAN控制器和物理總線間采用82C250驅動芯片,提供對總線的差動發送和接收功能。但是因為82C250為5V供電,而F2407采用3.3V供電,兩芯片間需要電平轉換電路。我們選用了只需3.3V供電的CAN總線收發驅動芯片SN65HVD230。
圖1 CAN總線接口電路
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控制器的通信波特率、同步跳轉寬度、采樣次數和重同步方式。郵箱初始化需設置郵箱的標識符,發送的是遠程幀還是數據幀及對發送的數據區賦初值。這樣,郵箱就能進行正常的發送和接收工作了。
圖4 配置位定時器流程圖
圖5初始化郵箱流程圖
CAN控制器的發送郵箱有郵箱4、5及被配置為發送方式的郵箱2、3。如流程圖6所示,在寫數據到發送郵箱后,如果相應的發送請求位使能,則信息幀被發送到CAN總線上。郵箱權限高的先發送,發送失敗將再次發送。
圖6 信息發送流程圖
郵箱0、1和被配置為接收方式的郵箱2、3為接收郵箱,CAN控制器只接收郵箱標識符相同的信息,或被局部屏蔽寄存器(LAM)忽略的信息,此時接收屏蔽使能位(AME)為1。接收信息的過程如流程圖7所示。
圖7信息接收流程圖
4. 結論
現今的工控設備正向著網絡化方向發展,本文設計了基于DSP的CAN總線網絡接口,應用于自行研制的交流變頻調速設備中。CAN總線接口與傳統的RS232串行接口相配合,增強了設備的網絡通訊能力,使遠程操作功能得以實現。