基于AT89C51型單片機(jī)的CAN總線智能節(jié)點(diǎn)設(shè)計(jì)
4 軟件設(shè)計(jì)
本文引用地址:http://m.butianyuan.cn/article/85600.htm4.1 網(wǎng)絡(luò)通信規(guī)則
CAN總線為多主工作方式,網(wǎng)絡(luò)上任一節(jié)點(diǎn)均可在任意時(shí)刻主動(dòng)向網(wǎng)絡(luò)上其他節(jié)點(diǎn)發(fā)送信息而不分主從,通信方式靈活。為禁止總線沖突,CAN總線采用非破壞性總線仲裁技術(shù),根據(jù)需要將各個(gè)節(jié)點(diǎn)設(shè)定為不同的優(yōu)先級(jí),并以標(biāo)識(shí)符ID標(biāo)定,其值越小,優(yōu)先級(jí)越高??偩€的節(jié)點(diǎn)之間可以進(jìn)行實(shí)時(shí)相互通信,當(dāng)1個(gè)節(jié)點(diǎn)需要接收另1個(gè)節(jié)點(diǎn)的數(shù)據(jù)時(shí),只需把其代碼寄存器的內(nèi)容設(shè)置成和另1節(jié)點(diǎn)的標(biāo)識(shí)符一致即可。如果對(duì)于標(biāo)識(shí)符和其代碼寄存器的內(nèi)容設(shè)置不一致,則節(jié)點(diǎn)所發(fā)的數(shù)據(jù)不予理會(huì)。
4.2 SJAl000的工作模式設(shè)置
SJAl000有二種工作模式:復(fù)位模式和工作模式。在復(fù)位模式下可對(duì)接收代碼、接收屏蔽、總線時(shí)序寄存器O和1及輸出控制寄存器進(jìn)行設(shè)置。一般在CAN初始化時(shí)完成對(duì)以上寄存器的設(shè)置,當(dāng)CAN進(jìn)入工作模式后,它們的值就不再變化。在工作模式下可進(jìn)行數(shù)據(jù)的發(fā)送和接收。特別要注意的是:當(dāng)硬件復(fù)位或控制器掉線時(shí)會(huì)自動(dòng)進(jìn)入復(fù)位模式,這樣就不能進(jìn)行正常的CAN通信,這就要求對(duì)復(fù)位位進(jìn)行監(jiān)控。當(dāng)發(fā)生硬件復(fù)位或控制器掉線而進(jìn)入復(fù)位模式時(shí),要求把復(fù)位位置為0并進(jìn)入工作模式,這樣CAN就能進(jìn)行正常發(fā)送和接收。
4.3 基于C語言的軟件編程
系統(tǒng)軟件的設(shè)計(jì)思想是系統(tǒng)上電后首先對(duì)AT89C51和SJAl000進(jìn)行初始化,以確定工作主頻、波特率、輸出特性等。其中任一智能節(jié)點(diǎn)可以利用查詢方式通過SJAl000從CAN總線上獲取所需的數(shù)據(jù)并把該數(shù)據(jù)傳送到PC上顯示,同時(shí)可以向總線上發(fā)送數(shù)據(jù)以供其他智能節(jié)點(diǎn)接收顯示。以下是具體實(shí)現(xiàn)程序。
以上就是進(jìn)行試驗(yàn)的程序,其中reg51.h是為AT89C52主控制器專門編寫的庫(kù)函數(shù),它在Keil軟件中是現(xiàn)成的,只要用#include語句包括進(jìn)來即可;intrins.h是為以后調(diào)用空函數(shù)_nop_()作準(zhǔn)備,它里面包括了類似于匯編語言的NOP語句;CAN_TOUWENJIAN.h是頭文件,用于對(duì)相關(guān)寄存器的定義。Tx_DATA_CAN()函數(shù)用于向總線發(fā)送數(shù)據(jù),REC_DATA_CAN()函數(shù)用于從總線接收數(shù)據(jù),SERIAL()用于PC與智能節(jié)點(diǎn)間的相互通信。限于篇幅,發(fā)送子程序和接收子程序沒有具體給出。
5 結(jié)束語
在CAN總線的開發(fā)試驗(yàn)過程中,筆者掌握了CAN總線智能節(jié)點(diǎn)的設(shè)計(jì),并在實(shí)踐中進(jìn)行了應(yīng)用。通過應(yīng)用證明,CAN總線具有以下優(yōu)點(diǎn):組網(wǎng)自由,擴(kuò)展性強(qiáng);自動(dòng)錯(cuò)誤界定,簡(jiǎn)化了通信的操作;可根據(jù)數(shù)據(jù)內(nèi)容確定優(yōu)先權(quán),解決通信的實(shí)時(shí)性問題。此外,CAN網(wǎng)絡(luò)已在眾多工業(yè)控制系統(tǒng)中應(yīng)用,尤其在傳輸速率較高而且對(duì)實(shí)時(shí)性及可靠性要求高的場(chǎng)合,CAN總線將有廣闊的應(yīng)用前景。本文來源于《某型控制系統(tǒng)信號(hào)信息傳輸改進(jìn)研究》課題組,組長(zhǎng)是劉永鴻教授,副組長(zhǎng)是張文宏副教授,主要參與者有黃晨副教授、趙勇講師、李金剛研究生。
評(píng)論