用87C196NT單片機實現CAN匯流排通信是一種控制器區域網路,主要用於各種設備檢測及控制的一種現場匯流排。
CAN匯流排最初是由德國Bosch公司為汽車的檢測、控制系統而設計的。CAN匯流排具有獨特的設計思想、良好的功能特性和極高的可靠性,現場抗干擾能力強。具體來講,CAN匯流排具有如下特點: *結構簡單,只有2根線與外部相連,且內部含有錯誤探測和管理模組。 *通信方式靈活。可以多主方式工作,網路上任意一個節點均可以在任意時刻主動地向網路上的其它節點傳送信息,而不分主從。 *可以點對點、點對多點及全局廣播方式傳送和接收數據。 *網路上的節點信息可分成不同的優先權,可以滿足不同的實時要求。 *CAN匯流排通信格式採用短幀格式,每幀位元組數最多為8個,可滿足通常工業領域中控制命令、工作狀態及測試數據的一般要求。同時,8個位元組也不會占用匯流排時間過長,從而保證了通信的實時性。 *採用非破壞性匯流排仲裁技術。當2個節點同時向匯流排上傳送數據時,優先權低的節點主動停止數據傳送,而優先權高的節點可不受影響地繼續傳輸數據。這大大地節省了匯流排仲裁衝突時間,在網路負載很重的情況下也不會出現網路癱瘓。 *直接通信距離最大可達10km(速率5kb/s以下),最高通信速率可達1Mb/s(此時距離最長為40m);節點數可達110個,通信介值可以是雙絞線、同軸電纜或光導纖維。 *CAN匯流排通信接口中集成了CAN協定的物理層和數據鏈路層功能,可完成對通信數據的成幀處理,包括位填充、數據塊編碼、循環冗餘檢驗、優先權判別等多項工作。 *CAN匯流排採用CRC檢驗並可提供相應的錯誤處理功能,保證了數據通信的可靠性。 *CAN匯流排的以上特點,為工業控制系統中高可靠性的數據傳送提供了一種新的解決方案。其在國外工業控制領域已經有了廣泛的套用,現國內的許多工業控制領域也開始使用基於CAN的現場匯流排。CAN匯流排已成為最有發展前途的4種現場匯流排之一。 2單片機控制系統硬體設計 本設計採用Intel196系列中的87C196NT單片機。87C196NT具有1MB的定址空間。本身不帶CAN控制器,所以要實現與CAN匯流排之間的通信,需外加CAN控制器和CAN驅動晶片.在本設計中作者採用LTL-CAN。LTL-CAN是一種CAN匯流排控制、驅動隔離收發器,由CAN控制器晶片PCA82C200、CAN驅動晶片PCA82C250、16MHz的晶振及光隔電路用厚膜封裝而成。它只支持標準信息幀格式,其內部邏輯功能圖略(詳見《單片機與嵌入式系統套用》2002.8)。 單片機與CAN匯流排的接口電路圖略(詳見《單片機與嵌入式系統套用》2002.8)。圖中LTL-CAN是帶光隔的CAN控制器和物理匯流排間的接口,提供對匯流排的差動傳送和接收功能。電阻R1作為CAN終端的匹配電阻。LTL-CAN晶片的片選信號CSCAN通過GAL16V8解碼產生,其地址為08000H-08FFFH。87C196NT的P3口是數據/地址復用口。 3單片機控制系統軟體設計 3.1CAN信息包格式說明一個有效的CAN的數據幀由幀起始、仲裁域、控制域、數據域、校驗域、應答域和幀結束組成。CAN控制器有2種不同的幀格式:標準格式和擴展格式。它們的主要區別在於仲裁域格式不同:標準幀仲裁域由11位標誌符和遠程傳送請求位RTR組成;擴展幀仲裁域由29位標誌符就替代遠程請求SRR位、標誌位和遠程傳送請求位RTR組成,圖略(詳見《單片機與嵌入式系統套用》2002.8)。 標誌符作為報文的名稱,在仲裁過程期間,首先被送到匯流排。在接收器的驗收判斷中和仲裁過程確定訪問優先權中都要用到。 遠程傳送請求位(RTR)用來確定傳送遠程幀還是數據幀:當RTR為高電平時,CAN控制器傳送遠程幀;為低電平時,傳送數據幀。 數據長度碼(DLC)用來確定每幀要傳送幾位元組的數據,最多為8位元組。 3.2CAN控制器PCA82C200介紹 PCA82C200晶片是Philips公司生產的CAN控制器,是一種I/O設備基於記憶體編址的微控制器。該設備的獨立操作是通過像RAM一樣的片內暫存器修正來實現的。它只支持標準的信息幀格式。 PCA82C200的地址區包括控制段和信息緩衝區控制段。在初始化載入時可被編程來配置通信參數(例如,位時序)。微控制器也是通過這個段來控制CAN匯流排上通信的。PCA82C200有2種工作模式:復位模式和工作模式。在復位模式下可以對接收代碼、接收禁止、匯流排時序暫存器0和1以及輸出控制暫存器進行設定。一般在CAN初始化時完成對以上暫存器的設定,當CAN進入工作模式後,它們的值就不再變化。在工作模式下可進行數據的傳送和接收。特別要注意的是當硬體復位或控