基于SJA1000的CAN總線控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
(4)設(shè)計(jì)時將SJA1000的CLOCKOUT的時鐘信號接至AT89C51的時鐘電路輸入端,來作為AT89C51的外部時鐘輸入,從而解決了時鐘同步問題:同時將SJA1000中斷輸出信號/INT接至AT89C51的/INT0端,通過中斷方式與AT89C51進(jìn)行通信。
3系統(tǒng)軟件設(shè)計(jì)
系統(tǒng)上電后首先對82C250和SJA1000進(jìn)行初始化。以確定工作主頻、波特率、輸出特性等,然后通過查詢方式獲取模數(shù)轉(zhuǎn)換采樣值,并把該值通過SJA1000傳送到CAN總線上由上位PC機(jī)來進(jìn)行顯示控制。而對來自CAN總線上的信息則采用中斷方式處理,系統(tǒng)每接收到一幀信息,便產(chǎn)生一次中斷以觸發(fā)微處理器進(jìn)入中斷模式,然后在中斷服務(wù)程序中讀取該幀信息并傳送到現(xiàn)場。SJA1000的初始化程序如下:
MOV DPTR,#CR:控制寄存器CR的地址送DPTR
MOVA,#01H
MOVX@DPTR,A:進(jìn)入復(fù)位模式
MOV DPTR,#CDR
MOVA,#00H
MOVX@DPTR,A:選擇BASIC CAN模式、時鐘不輸出
MOV A,#NODECODE
MOVX @DPTR,A;節(jié)點(diǎn)號NODECODE寫入ACR
MOVX DPTR,#AMR
MOV A,#00H
MOV @DPTR,A;AMR置為0,當(dāng)且僅當(dāng)RXID0=ACR時接收數(shù)據(jù)
MOV DPTR,#BTR0;設(shè)定總線時序寄存器BTR0,系統(tǒng)采用12 MHz晶振
MOV A,#85H;分頻后總線時鐘頻率為2MHz
MOVX @DPTR,A;同步跳轉(zhuǎn)寬度為3tscl
MOV DPTR,#BTR1;設(shè)定總線時序寄存器BTR1
MOV A,#OB4H:位同步時間為1個tsc1,采樣開始位置TSEG1=5tsc1
MOVX @DPTR,A;TSEG2=4tsc1,每一位時間10tsc1(200 kHz),每位采樣3次
MOV DPTR,#OCR;設(shè)置輸出控制寄存器
MOV A,#1AH:數(shù)據(jù)從TX0按正常輸出模式同極性輸出
MOV @DPTR,A;TX1不用
MOV DPTR,#CR;初始化完成,使控制器退出復(fù)位模式,進(jìn)入工作模式工作。
MOV A,#06H
MOV @DPTR,A
SJA1000在經(jīng)過初始化后便開始接收或發(fā)送數(shù)據(jù),其程序流程分別如圖2和圖3所示。
4結(jié)束語
該接口電路在經(jīng)DP-51H單片機(jī)通訊仿真實(shí)驗(yàn)儀的調(diào)試后,結(jié)果表明它能模擬實(shí)現(xiàn)通信功能,且其抗干擾性能優(yōu)良,通信速率較高,電路也比較簡單,是開發(fā)與應(yīng)用其它CAN總線產(chǎn)品的基礎(chǔ)。本文引用地址:http://butianyuan.cn/article/163182.htm
評論