基于CAN總線的單片機(jī)與數(shù)字信號處理器通信系統(tǒng)設(shè)計
3 數(shù)字信號處理器與單片機(jī)通信系統(tǒng)軟件設(shè)計
數(shù)字信號處理器與單片機(jī)組成的CAN總線通信系統(tǒng)進(jìn)行數(shù)據(jù)通信時,應(yīng)約定通信協(xié)議,如幀格式、波特率、標(biāo)識符等。各節(jié)點(diǎn)軟件設(shè)計均包括數(shù)據(jù)發(fā)送和接收子程序以及CAN總線控制器初始化子程序。這里著重研究CAN總線控制器的初始化。
3.1 單片機(jī)通信系統(tǒng)軟件設(shè)計
單片機(jī)CAN通信系統(tǒng)軟件設(shè)計主要是指SJA1000總線控制器的初始化程序設(shè)計。
CAN總線控制器初始化程序主要是通過對SJA1000寄存器寫入相應(yīng)的控制字,從而確定SJA1000的工作方式。SJA1000需要初始化的寄存器有:模式寄存器MODE、時鐘分頻寄存器CDR、接收代碼寄存器ACR、接收屏蔽寄存器AMR、中斷使能寄存器IER、總線定時寄存器BTR、輸出控制寄存器OCR等。其中,總線定時寄存器BTR的值決定CAN通信波特率,而波特率正確與否,是數(shù)字信號處理器與單片機(jī)實(shí)現(xiàn)CAN通信的關(guān)鍵。因?yàn)檫@些寄存器僅能在SJA1000復(fù)位期間進(jìn)行寫訪問,因此在對這些寄存器初始化之前,必須確保系統(tǒng)進(jìn)入復(fù)位狀態(tài),在初始化后,須清除復(fù)位請求位,使SJA1000返回正常運(yùn)行狀態(tài),其初始化子程序如下:
3.2 數(shù)字信號處理器通信系統(tǒng)軟件設(shè)計
在使用數(shù)字信號處理器CAN控制器前必須對它的一些內(nèi)部寄存器進(jìn)行設(shè)置,如對位定時器的設(shè)置及對郵箱進(jìn)行初始化。位定時器主要由CANBCR1和CANBCR2兩個寄存器組成,配置對位定時器也就是設(shè)置這兩個寄存器,其值決定了CcAN控制器的通信波特率、同步跳轉(zhuǎn)寬度、采樣次數(shù)和重同步方式等。對郵箱初始化主要是對郵箱進(jìn)行配置,設(shè)置郵箱的標(biāo)識符以及接收濾波器的設(shè)置等。 CAN控制器初始化子程序如下:
4 結(jié) 語
單片機(jī)與數(shù)字信號處理器CAN總線通信系統(tǒng)實(shí)驗(yàn)過程中,發(fā)送端采用查詢方式,接收端采用中斷方式,利用鍵盤改變發(fā)送數(shù)據(jù),接收端利用液晶顯示器實(shí)時顯示接收數(shù)據(jù)。反復(fù)試驗(yàn)表明,該系統(tǒng)工作穩(wěn)定性較高;該系統(tǒng)硬件電路或軟件程序稍加改動可用于單片機(jī)與數(shù)字信號處理器或數(shù)字信號處理器與數(shù)字信號處理器等雙 CPU或多CPU測控系統(tǒng)中,且應(yīng)用前景廣闊。
評論