客車網(wǎng)絡(luò)控制中CAN/CAN網(wǎng)橋設(shè)計(jì)
3.3 CAN/CAN網(wǎng)橋的軟件設(shè)計(jì)
CAN/CAN網(wǎng)橋的主要功能是實(shí)現(xiàn)兩路CAN之間的數(shù)據(jù)過濾及轉(zhuǎn)發(fā),由于客車網(wǎng)絡(luò)控制系統(tǒng)中對(duì)通訊的實(shí)時(shí)性的要求,在進(jìn)行軟件設(shè)計(jì)時(shí)要做到數(shù)據(jù)存儲(chǔ)和轉(zhuǎn)發(fā)的時(shí)間要求盡可能的短。為了達(dá)到這一要求,數(shù)據(jù)的接收采用向量中斷(IRQ)方式,而且由于底盤CAN控制子系統(tǒng)的數(shù)據(jù)通訊量明顯要高于車身CAN控制子系統(tǒng),因此將連接底盤CAN控制子系統(tǒng)的CAN1接收優(yōu)先級(jí)設(shè)置為最高,而連接車身CAN控制子系統(tǒng)的CAN2接收優(yōu)先級(jí)次之。同時(shí)盡量精簡(jiǎn)中斷服務(wù)程序,使系統(tǒng)的響應(yīng)時(shí)間盡量的短。對(duì)應(yīng)兩路CAN設(shè)置了兩個(gè)FIFO的環(huán)形接收緩沖區(qū),由于CAN1的數(shù)據(jù)通訊量要高,因此CAN1的FIFO環(huán)形接收緩沖區(qū)比CAN2的大,這樣更適合實(shí)際情況。
CAN/CAN網(wǎng)橋的軟件設(shè)計(jì)主要包括:兩路CAN控制器的初始化,F(xiàn)IFO環(huán)形接收緩沖區(qū)的設(shè)置,兩路CAN控制器的全局驗(yàn)收過濾器的設(shè)置,接收中斷服務(wù)程序,CAN發(fā)送程序,主監(jiān)控程序。
CAN控制器的初始化流程如圖3所示。其中全局驗(yàn)收過濾器的配置是一個(gè)難點(diǎn),也是區(qū)別于SJA1000獨(dú)立CAN控制器的一個(gè)地方。有5個(gè)地址寄存器用來指向驗(yàn)收過濾器RAM中的表格:fullCAN標(biāo)準(zhǔn)地址、標(biāo)準(zhǔn)單個(gè)地址、標(biāo)準(zhǔn)地址范圍、擴(kuò)展單個(gè)地址和擴(kuò)展地址范圍。這些表格在存儲(chǔ)器中必須是連續(xù)的。后4個(gè)表格的起始地址分別是各自相鄰的前一個(gè)表格的終止地址。擴(kuò)展地址范圍表格的終止地址在表格終止寄存器中給出。如果一個(gè)表格的起始地址等于下一個(gè)表格的起始地址或表格終止寄存器的值,則該表格為空。
FIFO環(huán)形接收緩沖區(qū)中設(shè)置一個(gè)發(fā)送指針、一個(gè)接收指針和當(dāng)前數(shù)據(jù)幀數(shù)frameCount,當(dāng)frameCount為0時(shí)表明FIFO環(huán)形接收緩沖區(qū)是空的。
接收中斷服務(wù)程序?qū)⒔邮盏降臄?shù)據(jù)放入對(duì)應(yīng)的FIFO環(huán)形接收緩沖區(qū)中并且修改接收指針和當(dāng)前數(shù)據(jù)幀數(shù)frameCount。
主監(jiān)控程序負(fù)責(zé)監(jiān)控兩路CAN的FIFO環(huán)形接收緩沖區(qū)中是否有數(shù)據(jù),如果其中一路CAN的FIFO環(huán)形接收緩沖區(qū)中有數(shù)據(jù)則向另一路CAN發(fā)送數(shù)據(jù)。主監(jiān)控程序不斷查詢兩路CAN的FIFO環(huán)形接收緩沖區(qū)中的當(dāng)前數(shù)據(jù)幀數(shù)frameCount標(biāo)志,如果非零立即向另一路發(fā)送數(shù)據(jù),并且在子程序CAN1SendToCAN2()和CAN2SendToCAN1()中修改發(fā)送指針和當(dāng)前數(shù)據(jù)幀數(shù)。主監(jiān)控程序流程如圖4所示。
4 總結(jié)
本文在LPC2119的基礎(chǔ)上設(shè)計(jì)了一個(gè)CAN/CAN網(wǎng)橋,并從硬件和軟件的角度論述了設(shè)計(jì)過程。作者采用廣州周立功單片機(jī)發(fā)展有限公司的CANalyst-II和USBCAN-II分別模擬客車底盤CAN和車身CAN對(duì)網(wǎng)橋進(jìn)行了大量數(shù)據(jù)的反復(fù)測(cè)試,在向兩路CAN連續(xù)不間斷發(fā)送100000幀數(shù)據(jù)的情況下能夠準(zhǔn)確的轉(zhuǎn)發(fā),說明網(wǎng)橋工作可靠。下一步的研究目標(biāo)將在網(wǎng)橋上移植實(shí)時(shí)多任務(wù)操作系統(tǒng)μC/OS-II來進(jìn)一步提高網(wǎng)橋的實(shí)時(shí)性能。
本文作者創(chuàng)新點(diǎn): 將客車網(wǎng)絡(luò)控制系統(tǒng)劃分為底盤和車身的兩個(gè)網(wǎng)絡(luò)控制子系統(tǒng),并且設(shè)計(jì)了CAN/CAN網(wǎng)橋互連兩個(gè)網(wǎng)絡(luò)控制子系統(tǒng)。
評(píng)論