基于P89C668單片機的CAN總線(xiàn)接口設計
單片機P89C668 負責對SJA1000 進(jìn)行初始化,通過(guò)控制SJA1000實(shí)現數據的發(fā)送與接收等通信任務(wù).
SJA1000 的AD0~AD7連接到P89C668 的P0口;
CS連接到P89C668的P1.1,P1.1 為0 時(shí)選中SJA1000,可控制SJA1000;
SJA1000 的RD/E、WR、ALE/AS 分別連接到P89C668 的RD(P3.7)、WR(P3.6)、P1.0;
SJA1000的(INT)連接到P89C668 的P3.2(INT0),這樣,P89C668 可以通過(guò)中斷方式訪(fǎng)問(wèn)SJA1000;
SJA1000的模式選擇引腳MODE 接高電平時(shí)選擇Intel 模式;
為了保證時(shí)鐘同步,SJA1000 的CLKOUT 引腳使能,向P89C668 提供時(shí)鐘源.
實(shí)現CAN 總線(xiàn)通信,要對CAN 總線(xiàn)節點(diǎn)接口設計相應的總線(xiàn)通信程序;在總線(xiàn)通信之前,必須進(jìn)行SJA1000 控制器初始化.在上電或復位后,單片機通過(guò)運行其自身復位程序初始化SJA1000.CAN總線(xiàn)通信程序大致由SJA1000 初始化、發(fā)送和接收三部分組成.以下分別對他們進(jìn)行簡(jiǎn)單的描述.
2.1 SJA1000 初始化
在上電后,CAN 控制器的RST 腳獲得一個(gè)復位脈沖,使之進(jìn)入復位模式.在開(kāi)始對SJA1000 各個(gè)配置寄存器進(jìn)行設定之前,主控制器通過(guò)讀復位/請求標識來(lái)檢測SJA1000是否進(jìn)入復位模式.為了避免微控制器的上電復位時(shí)間和SJA1000 的復位時(shí)間的偏差,微控制器要等待SJA1000 完成上電復位后才能對SJA1000 配置寄存器進(jìn)行配置,存有配置信息的寄存器只能在復位模式下才可進(jìn)行寫(xiě)入.SJA1000 初始化程序在復位模式下,主控制器要配置下面的寄存器:
(1)模式寄存器(僅在PeliCAN 模式下選擇應用操作模式)
接收過(guò)濾模式
自檢測模式
偵聽(tīng)模式
(2)時(shí)鐘分頻寄存器
使用BasicCAN 或PeliCAN 模式
CLKOUT 引腳是否可以使用
CAN 輸入比較器是否被跳過(guò)
TX1 輸出是否專(zhuān)門(mén)用于接收中斷輸出
(3)總線(xiàn)定時(shí)寄存器
定義總線(xiàn)的位速率
定義位周期內的采樣點(diǎn)位采樣點(diǎn)
定義一個(gè)位周期的采樣數量
(4)接收代碼和接收掩碼寄存器
定義要接收消息的接收代碼
定義與接收代碼相關(guān)位進(jìn)行比較的接收掩碼
(5)輸出控制寄存器
定義CAN 總線(xiàn)輸出引腳TX0 和TX1 的配置
在將這些配置信息配置到SJA1000配置寄存器后,通過(guò)消除復位模式,請求使SJA1000進(jìn)入操作模式.一定要確保復位標志真的被刪除,并且在沒(méi)有進(jìn)行CAN 總線(xiàn)通信前進(jìn)入操作模式,這可以通過(guò)讀該標志來(lái)實(shí)現. 當硬件復位處于掛起狀態(tài),即CAN 控制器的RST 引腳為低電平時(shí),復位模式/請求標志不能被清除.
評論