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