基于STC89C51的CAN總線點對點通信模塊設(shè)計
3 CAN系統(tǒng)軟件設(shè)計
STC89C51的軟件設(shè)計由MCU初始化、SJAl000初始化、SJAl000的接收發(fā)送和數(shù)據(jù)顯示模塊等構(gòu)成。其系統(tǒng)軟件設(shè)計圖如圖5所示。
3.1 SJAl000初始化軟件設(shè)計
SJAl000的初始化程序設(shè)計主要是通過對SJAl000的寄存器寫入相應(yīng)的控制字,從而確定SJAl000的工作方式。在對SJAl000的寄存器寫入控制字時,要在SJAl000的復(fù)位模式下采用軟件復(fù)位模式。其初始化流程圖如圖6所示。
3.2 SJAl000數(shù)據(jù)發(fā)送軟件設(shè)計
報文的發(fā)送通常是由CAN控制器根據(jù)CAN協(xié)議規(guī)范自動完成的。首先由CPU將要發(fā)送的報文傳送到發(fā)送緩沖器中,并置位命令寄存器中的發(fā)送請求標(biāo)志。其發(fā)送流程圖如圖7所示。
3.3 SJAl000接收數(shù)據(jù)軟件設(shè)計
CPU以一定的周期讀取CAN控制器的狀態(tài)寄存器,從而檢查接收緩沖區(qū)的轉(zhuǎn)臺標(biāo)志,指示是否至少接收到一個報文。當(dāng)接收緩沖區(qū)狀態(tài)標(biāo)志指示為“空”時,表示沒有接收到報文;在沒有新的檢查接收緩沖區(qū)狀態(tài)的要求前,CPU則繼續(xù)當(dāng)前的任務(wù)。
數(shù)字通信相關(guān)文章:數(shù)字通信原理
評論