基于CAN總線智能節(jié)點(diǎn)的設(shè)計(jì)
3.1 初始化CAN控制器
C8051F550上電復(fù)位后,控制寄存器CANOCN的INIT位和CCE位置‘1’。允許寄存器初始化并寫入設(shè)置信息。需要寫入的寄存器主要包括位定時(shí)寄存器和擴(kuò)展寄存器,命令掩碼寄存器。主要完成時(shí)序參數(shù)的配置和消息對(duì)象的初始化。本設(shè)計(jì)中,使用晶振頻率為11.05MHz,位定時(shí)設(shè)置為996.65~1000ns。初始化程序如下:
3.2 CAN中斷服務(wù)程序
C8051F550的CAN支持的中斷方式有狀態(tài)中斷和模塊中斷。狀態(tài)中斷方式是在報(bào)文成功傳輸或檢測(cè)到CAN總線出錯(cuò)時(shí)發(fā)生的。模塊中斷也稱消息中斷。CAN控制器允許用戶按需求配置消息對(duì)象成為中斷源。通過設(shè)置消息控制寄存器的中斷懸掛位可實(shí)現(xiàn)此功能。在CAN中斷寄存器中以最高優(yōu)先級(jí)來指向這些掛起的中斷,而不考慮時(shí)序。狀態(tài)中斷有最高優(yōu)先級(jí),讀取狀態(tài)寄存器會(huì)自動(dòng)清除狀態(tài)中斷值(8000h)。消息中斷優(yōu)先級(jí)是隨消息編號(hào)的增加而減小。消息中斷是由清除消息對(duì)象的INTPND位來清除的。中斷服務(wù)流程圖如圖3所示。
圖3 中斷服務(wù)流程
4 結(jié)束語
本系統(tǒng)的總線通信網(wǎng)絡(luò)已實(shí)現(xiàn)三個(gè)節(jié)點(diǎn)與上位機(jī)的連調(diào),系統(tǒng)軟件采用結(jié)構(gòu)化程序設(shè)計(jì)方案,使其具有較好的模塊化和可移植性,對(duì)于不同的系統(tǒng)功能或不同的應(yīng)用環(huán)境,可以方便地進(jìn)行編程重組。
本文設(shè)計(jì)的CAN總線通信網(wǎng)絡(luò)中的主從智能節(jié)點(diǎn)經(jīng)過試驗(yàn)調(diào)試,硬件電路工作正常,在總線數(shù)據(jù)采集系統(tǒng)中抗干擾能力強(qiáng)。軟件部分實(shí)時(shí)性強(qiáng),準(zhǔn)確率高。從節(jié)點(diǎn)可以實(shí)時(shí)地將信息傳送給主節(jié)點(diǎn),以便主節(jié)點(diǎn)實(shí)時(shí)監(jiān)控。整個(gè)節(jié)點(diǎn)通信系統(tǒng)工作穩(wěn)定,可以滿足現(xiàn)場(chǎng)環(huán)境要求。
在設(shè)計(jì)過程中,認(rèn)識(shí)到目前基于CAN2.0B協(xié)議的CAN控制器無法為實(shí)時(shí)和非實(shí)時(shí)性數(shù)據(jù)動(dòng)態(tài)分配優(yōu)先權(quán),基于事件觸發(fā)模式的訪問機(jī)制無法滿足眾多節(jié)點(diǎn)的實(shí)時(shí)訪問。
評(píng)論