基于SJA1000的CAN總線控制系統的設計與實現
(4)設計時將SJA1000的CLOCKOUT的時鐘信號接至AT89C51的時鐘電路輸入端,來作為AT89C51的外部時鐘輸入,從而解決了時鐘同步問題:同時將SJA1000中斷輸出信號/INT接至AT89C51的/INT0端,通過中斷方式與AT89C51進行通信。
3系統軟件設計
系統上電后首先對82C250和SJA1000進行初始化。以確定工作主頻、波特率、輸出特性等,然后通過查詢方式獲取模數轉換采樣值,并把該值通過SJA1000傳送到CAN總線上由上位PC機來進行顯示控制。而對來自CAN總線上的信息則采用中斷方式處理,系統每接收到一幀信息,便產生一次中斷以觸發(fā)微處理器進入中斷模式,然后在中斷服務程序中讀取該幀信息并傳送到現場。SJA1000的初始化程序如下:
MOV DPTR,#CR:控制寄存器CR的地址送DPTR
MOVA,#01H
MOVX@DPTR,A:進入復位模式
MOV DPTR,#CDR
MOVA,#00H
MOVX@DPTR,A:選擇BASIC CAN模式、時鐘不輸出
MOV A,#NODECODE
MOVX @DPTR,A;節(jié)點號NODECODE寫入ACR
MOVX DPTR,#AMR
MOV A,#00H
MOV @DPTR,A;AMR置為0,當且僅當RXID0=ACR時接收數據
MOV DPTR,#BTR0;設定總線時序寄存器BTR0,系統采用12 MHz晶振
MOV A,#85H;分頻后總線時鐘頻率為2MHz
MOVX @DPTR,A;同步跳轉寬度為3tscl
MOV DPTR,#BTR1;設定總線時序寄存器BTR1
MOV A,#OB4H:位同步時間為1個tsc1,采樣開始位置TSEG1=5tsc1
MOVX @DPTR,A;TSEG2=4tsc1,每一位時間10tsc1(200 kHz),每位采樣3次
MOV DPTR,#OCR;設置輸出控制寄存器
MOV A,#1AH:數據從TX0按正常輸出模式同極性輸出
MOV @DPTR,A;TX1不用
MOV DPTR,#CR;初始化完成,使控制器退出復位模式,進入工作模式工作。
MOV A,#06H
MOV @DPTR,A
SJA1000在經過初始化后便開始接收或發(fā)送數據,其程序流程分別如圖2和圖3所示。


4結束語
該接口電路在經DP-51H單片機通訊仿真實驗儀的調試后,結果表明它能模擬實現通信功能,且其抗干擾性能優(yōu)良,通信速率較高,電路也比較簡單,是開發(fā)與應用其它CAN總線產品的基礎。本文引用地址:http://www.2s4d.com/article/163182.htm
評論