1 引言 作為當今最具發展前途的網絡技術,自20世紀70年代末出現以來,以超出所有人預期的速度迅猛發展,現在己滲透進科學技術的方方面面。在測控系統應用網絡技術將極大提高系統的性能,計算機測控技術與網絡技術的結合已是大勢所趨。如今,互聯網應用正在轉到以嵌入式設備為中心。IA(Internet Appliance)概念現在甚為流行,這表明互聯網應用進入嵌人式互聯網的時代已經來臨。本文設計了一個嵌入式網關用于Ethernet之間的互連。 2 系統硬件分析與設計 系統使用嵌入式微控制器作為處理器,以太網驅動芯片RTLS019AS經耦合隔離濾波器HR61101G和RJ45接口接入以太網,可以將采用CAN總線協議通信的設備連到以太網上。CAN總線控制器采用SJAl000芯片.CAN收發器則采用了PCA82C250。 為適應上網需求.嵌入式微控制器不僅要能執行傳統的控制功能,還要能執行與連接因特網相關的功能.而SX52芯片能比較容易地實現TCP/IP協議,所以我們選擇它作為微控制器。實現嵌入式設備接入Internet,從原則上來講最關鍵的就是要實現TCP/IP協議,還有一個關鍵的問題就是傳輸信息媒質的選擇嵌入式系統應用最廣泛的網絡驅動芯片就是NE2000兼容系列網絡芯片,它具有接El方便、驅動簡單、占用資源少等優點,特別適合嵌入式系統。我們選用RTL8019AS芯片。 2.1 CAN總線網絡設備接口設計 CAN總線網絡設備接口設計較網關設計簡單。它是在完成設備功能的基礎上加入一個CAN通信控制器接口芯片,實現與CAN總線網絡的連接。 2.2 網關設計 嵌入式透明網關設計是整個系統設計的核心。它由CAN控制器協議轉換模塊和以太網控制器協議轉換模塊兩部分組成。網關硬件中微處理器起核心作用。 數據的流向為:請求和控制信息從局域網中來,通過RJ45送到RTL8019AS,RTL8019AS負責將以太網幀的首部和尾部信息剝離,將處理后的數據包送人TCP/IP協議棧,由協議棧對數據報進行解析,得到原始的請求和控制信息。請求和控制信息再經過SJA1000進行CAN協議格式的數據封裝,再和現場的CAN總線設備進行通信。請求和控制的回復領先局域網的過程與上面正好相反。如圖1。 ![]() 圖1硬件結構框圖 圖中AT24C64為8K EEPROM主要是用來保存嵌入式透明SX-52網關的配置信息,如網關IP地址、MAC地址和SJAl000的功網絡標示符、網絡掩碼MAR和總線定時(BTR0,BTR1)等.這樣.我們就能夠靈活方便地修改網關參數,適應不同環境。同時也考慮到以后的擴展。硬件電路圖如圖2所示: ![]() 圖2硬件電路圖 3 系統軟件設計 整個系統的軟件設計可以分為三個部分:CAN總線設備接口通信模塊、透明網關協議轉換模塊和以太網層應用模塊。 3.1 協議轉換模型 透明網關協議轉換模型的設計整體思路為:當以太網應用層有數據要發送到CAN節點時,首先,數據發送到透明網關由以太網控制器協議轉換模塊從傳輸層數據報文中解析出完整的CAN協議數據包.存放在數據緩沖區A,再通知總調度模塊,由它調用CAN控制器協議模塊將它發送到CAN總線上。反過來,當CAN設備有數據要發送到用戶層時,首先,數據發送到透明網關由CAN控制器協議模塊將完整的CAN協議數據包存放在數據緩沖區B,再通知總調度模塊,由它調用以太網控制器協議轉換模塊將完整的CAN協議數據包作為應用層數據封裝起來.再發送到以太網的應用層。其模型結構圖如圖3所示 ![]() 圖3透明網關協議轉換模型結構圖 3.2 CAN控制器協議驅動模塊 CAN控制器協議轉換模塊稃序主要由SJAl000的寄存器讀程序CANRead().寫程序CANWrite(),初始化程序CANWrite()、總線狀態查詢CANStatus()和發送、接收程序txdsub(),rxdsub()組成。之所以要編寫單獨的.SJAl000的寄存器讀、寫子程序,這是由SX52芯片只有I/O端口的特點決定的。 3.2.1以太網控制器協議驅動模塊 要將系統接入以太網.就要對RTL801A9S進行編程.完成以太網幀的數據收發.相當于實現PC機中網卡的驅動程序功能。以太網控制器驅動程序用于設置RTL8019AS的工作狀態和工作方式.分配收發數據的緩沖區.通過對地址及數據口的讀寫來完成以太網幀的接收與發送。首先要對RTLS019AS進行復位,并將其設置為跳線模式:然后對RTL8019AS的工作參數進行設置,以使其開始工作;接下來就讀寫RTL8019AS的RAM以完成數據包的接收和發送。程序流程如圖4所示。 ![]() 圖4 RTL8019AS工作流程 以太網控制器RTLS019AS工作在網絡中的數據鏈路層,對于它的應用主要有3個基本函數,即RTL8019AS初始化,狀態檢測函數、數據幀發送和接收函數。其中狀態檢測函數用來監測是否有數據幀到達以及總線占用狀態。RTLS019AS有兩個DMA通道,一個是本地DMA,用做緩沖RAM與FIFO之間的數據交換,具有較高優先級,遠程DMA用作外部存儲器與RTL8019AS內部緩沖RMA之間的數據交換。SX52通過遠程DMA將一個數據幀放入RTC8019AS內部的緩沖區RAM中后,利用加方式將發送起始地址送到TPRS.幀長度送到TBRC然后將命令寄存器RC中TXR置位開始一個數據幀的發送。當網絡上有數據到達RTL8019AS時。它的CURR將不等于BNRY,如果采用中斷方式。則RTL8019AS將會自動通知MCU。然后可采用包發送將緩沖環中的數據取出,這里我們采用查詢方式來處理。 3.2.2 CAN-Ethemel協議轉換模塊 主程序工作流稗圖如圖5所示,單片機首先初始化網絡設備。網卡IP地址和物理地址存于單片機的EEPROM中,單片機復位后首先讀取這些數據以初始化網卡。 網卡初始化完成以后.當有數據從RJ45過來時,單片機對數據包進行分析.如果是ARP(物理地址解析協議)數據包,則程序轉入ARP處理程序。如果足IP(網間協議)數據包且傳輸層使用UDP(用戶數據報協議).端口正確,則認為數據報正確,數據解包后.送入數據緩沖區A,最后把數據部分通過CAN接口輸出。反之.如果單片機從CAN接口收到數據.則將數據按照UDP協議格式打包,送人數據緩沖區B,由RTL8019AS將數據輸出到局域網中。 ![]() 圖5 主程序工作流程圖 這里,我們在通信傳輸層采用UDP協議是考慮到CAN協議數據報為短幀形式(每個數據幀最多為8個字節)如果采用TCP傳輸協議,我們要傳輸8個字節CAN協議數據,就要先通過3次握手建立連接,再傳輸數據,之后還要通過握手釋放連接,這樣傳輸效率對有限的網絡資源來說無疑是一種浪費。而UDP是無連接的傳輸.這樣可以提高網絡傳輸效率.同時,也減輕網關的處理任務。當然.UDP傳輸協議是不可靠的,對于控制網絡來說.這是不允許的。 以太網控制器協議轉換模塊主要由以太網卡驅動、ARP、ICMP、UDP、TCP協議的若干個API函數組成。 本文作者創新點:本文設計了一個嵌入式多協議CAN網關,選用8位微控制器作為核心控件,通過控制以太網控制芯片和CAN總線控制芯片與CAN總線相連。 本項目經濟效益為125萬元。 作者:鐘家民,王國才 來源:《微計算機信息》(嵌入式與SOC)2009年第3-2期 |