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