CAN總線與以太網互連的嵌入式網關設計
2 通信模塊軟件設計
2.1 SJA1000(圖3)


圖3 RTL8019AS 的初始化流程圖
SJA1000驅動程序是由初始化、發送接收部分組成。
2.1.1 初始化
SJA1000在系統上電、硬件復位或主控制器發出復位命令后需要進行初始化,CAN初始化子程序通過對CAN控制器中相應的寄存器寫入配置控制字來確定CAN控制器的波特率、發送通道、接收通道、標識符碼和標識符屏蔽碼等相關信息。進入初始化程序時必須初始化的寄存器有:通用控制寄存器CANGCON、位定時寄存器CANBT 143、以及15個報文對象郵箱中的報文對象控制寄存器CANc0NCH、報文對象狀態寄存器CANST CH、標識符寄存器
CANIDT1~4、標識符屏蔽寄存器CANIDMl~4和報文數據寄存器CANMSG等。要注意的是,位定時寄存器CANBTI~3僅能在復位期間訪問,因此,在對這些寄存器初始化前,必須確保系統進入復位狀態。
2.1.2 發送與接收
本設計采用中斷方式發送和接收數據,SJA1000芯片有一個報文發送緩沖區和兩個報文接收緩沖區用于CAN報文傳送,接收子程序負責節點報文的接收,在接收中斷處理程序中,先從接收緩沖區讀取要接收的報文,然后發送一個請求信號以啟動協議轉換和發送。發送子程序負責將以太網傳輸過來的CAN 協議格式的數據發送到CAN 總線上,發送數據程序把數據存儲區中待發送的數據取出,組成信息幀送入發送緩沖區,然后啟動發送命令。
2.2 RTL8019AS 驅動
RTL8019AS的驅動程序包含三部分:初始化、接收數據、發送數據。
RTL8019AS的初始化主要包括設置網卡的物理地址、設置相關工作模式的寄存器、接收緩沖區和發送緩沖區的各自起始地址以及大小、是否開中斷等參數等,其流程圖見圖3所示。
在本設計中RTL8019AS采用查詢方式接收和發送數據包,通過判斷對應的標志位來確定是否發送和接收新的數據包。在數據包的發送過程中,單片機只要通過遠程DMA寫操作,將待發送的數據包寫至發送緩沖區,并啟動發送過程。在數據包的接收過程中,單片機只要通過遠程DMA讀操作,從接收緩沖區讀取數據即可。
3 結語
本文提出了一種低成本、高可靠性、適用于工業控制現場的的CAN總線與以太網互連網關的實現方案,該網關可以與工業現場的儀器、儀表等設備相連接在一起,使工業現場的設備具有網絡通訊的能力,大大提高了設備的性價比,從而提供生產效率。


評論