技術頻道

      一種低成本的Ehternet嵌入式系統的設計

      隨著互聯網中硬件的迅猛發展,網絡用戶呈指數增長。在使用計算機進行網絡互聯的同時,各種家電設備、儀器儀表以及工業生產中的數據采集與控制設備也逐步地走向網絡化,以便共享網絡中龐大的信息資源。
      本設計是以全電子化鐵路車站控制系統為背景,任務是實現鐵路車站執行機與遠程監測機之間的信息交換。其中,執行機包括各個執行單元,采用CAN總線接口。監測機為遠程的PC控制機,采用以太網接口。本設計指在實現CAN通信鏈路和以太網通信鏈路的透明連接,最終形成通用的CAN總線以太網網關。
      CAN總線與以太網通信,通常采用兩種方案,一種是采用工控機加網卡來實現。這種連接方式成本高,開發周期長。另一種是采用32位MCU+RTOS的方案,這種方案采用32位高檔單片機,在RTOS(實時多任務操作系統)的平臺上進行軟件開發,在嵌入式系統中實現TCP/IP的協議處理。它的缺點是:單片機價格較高,開發周期較長,需要購買昂貴的RTOS開發軟件,對開發人員的開發能力要求較高。鑒于上述方案的優缺點,筆者設計一種單獨的以太網網關互連系統,成功地實現了以太網與CAN總線的直接互聯。
      1 硬件設計
      系統電路原理如圖1所示。本系統以單片機為界,為了兩部分:CAN總線控制部分和以太網控制部分。系統提供RJ45接口連接Ethernet網絡,并且提供一個CAN總線接口供用戶使用。系統可以把從Ethernet上過來的IP數據報解包送給CAN總線接口,也可把從CAN總線接口過來的數據封裝為IP包送到局域網中。
      1.1 單片機及其外部存儲器
      單片機W78E58B為主要控制部分,實現對網絡芯片和CAN控制器的控制。在微處理器內嵌入TCP/IP協議和CAN協議,完成兩者之間的協議轉換,實現CAN接口和以太網接口之間數據的透明傳輸。
      62256是32K的外部RAM,用來緩存以太網數據包和CAN總線傳來的數據,使用它的目的是提高單片機的數據傳輸速度和處理復雜的TCP/IP協議。由于以太網最大的數據包有1514字節,而單片機W78E58B只能256字節的RAM,無法存儲這么大的數據包,只能放在外部RAM里,以使單片機能夠高速地吞吐數據。P2.7為低電平時,62256被選通,因此其尋址范圍為0000H~7FFFH。
      單片機W78E58B內部有32K的EEPROM,可用來存儲一些配置信息,如網關IP地址、MAC地址、SJA1000的ID網絡標識符、網絡掩碼和總線定時(BTR0、BTR1)等。這樣可以靈活方便地修改網關參數,適應不同的環境,同時也有利于以后的擴展。
      1.2 以太網控制部分
      RTL8019AS是臺灣Realtek公司制造的一種高集成度的全雙工10M/S以太網控制芯片,可實現基于Ethernet協議的MAC層的全部功能,內置16KB的SRAM、雙DMA通道和FIFO,可完成數據包的接收和發送功能。
      在該設計中,RTL8019AS使用跳線模式(JP置為高),數據線使用八位模式(IOCS16B用27kΩ電阻下拉接地),RTL8019AS的低五位地址線SA0~SA4對應接到單片機的P2.0~P2.4,SA6和SA9接VCC,其它地址線全部接地。當P2.6和P2.7同時為高電平時RTL8019AS的片選信號AEN使能。RTL8019AS的I/O地址需要映射為單片機的I/O地址,這樣單片機才能操作RTL8019AS。根據電路設計,該系統中單片機的I/O地址與RTL8019AS的I/O地址之間的映射關系為:0XC000H~240H,0XC100H~241H…)XDF00H~25FH,共32個字節。RTL8019AS除與單片機連接外,還將其網絡收發器的四根引腳HD、LD、TRIN+、TPIN-通過外部的隔離濾波器LPF與以太網相連,目的是提高網絡通信的抗干擾能力。
      1.3 CAN總線控制部分
      SJA1000為CAN總線控制器,具有多主結構、總線訪問優先權、廣播報文功能及硬件濾波功能,具有簡單總線連接的SJA1000可完成物理層和數據鏈路層的所有功能。它具有兩種工作模式BasicCAN和PeliCAN。BasicCAN僅支持標準模式(本文僅介紹BasicCAN模式),支持錯誤分析功能,對CAN收發器進行控制,為微控制器提供控制CAN總線的簡單接口。單片機對SAJ1000的讀寫就像讀寫自己的外部RAM一樣。P2.7取反后作為其片選信號線。因此,SJA1000對應地址為8000H~807FH。SJA1000的/INT引腳接單片機的INT1引腳,使單片機能夠實時響應CAN的中斷請求。
      TJA1050為CAN收發器,是CAN協議控制器和物理總線之間的接口,可以對CAN總線提供差動發送和接收能力。微控制器對CAN控制器進行相應配置后,收發器自動完成相應的CAN總線動作。有較強的抗干擾能力,最多節點數可達110個。
      采用高速光耦6N137實現SJA1000與TJA1050之間的電氣隔離,保護控制系統電路,以滿足在最高速率1M/s下的電氣響應。
      2 軟件設計
      整個系統的軟件分為兩部分:CAN控制器協議轉換模塊和以太網控制器協議轉換模塊。其程序結構如圖2所示。
      當以太網應用層有數據要發送到CAN節點時,首先由以太網控制器協議轉換模塊從傳輸層數據報文中解析出完整的CAN協議數據包,存放在數據緩沖區A中,再通知總調度模塊,由它調用CAN控制器協議模塊將CAN協議數據包發送到CAN總線上。反過來,當CAN設備有數據要發送到用戶層時,先由CAN控制器協議轉換模塊將完整的CAN協議數據包存放在數據緩沖區B中,再通知總調度模塊,由它調用以太網控制器協議轉換模塊,將完整的CAN協議數據包作為應用層數據封裝起來,再發送到以太網的應用。
      2.1 CAN控制器協議轉換模塊
      CAN通信協議有四種不同的幀格式,本系統中使用標準幀格式,其格式如表1所示。CAN首先接收仲裁域,根據仲裁域的內容判斷所接收的信號是哪種幀格式,然后用戶將相應的數據寫入數據域中進行發送,或從數據域中讀取接收到的數據。
      表1 幀傳送格式
      幀起始 仲裁域 控制域 數據域 CRC域 應答域 幀結尾
      SOF ID RTR IDE RO DLC DATA CRC ACK END
      CAN控制器協議轉換模塊主要由SJA1000的寄存器讀程序CANRead()、寫程序、CANWrite()、初始化程序CANInit()、發送程序Txdsub()和接收程序Rxdsub()組成。
      選用CAN2.0A協議構建CAN總線控制網絡,對SJA1000的初始化主要包括對控制寄存器CR、驗收代碼寄存器ACR、驗收屏蔽寄存器AMR、總線定時寄存器BTR0/1和輸出控制寄存器OCR的設置。初始化完成后,由總調度模塊監控SJA1000控制器。當CAN總線上有數據到達時,通過中斷方式調用接收子程序Rxdsub(),把這一幀數據存入數據緩沖區B中,然后翻譯接收緩沖器。同樣,當有按CAN2.0A協議格式組合成的一幀數據報文在數據緩沖區A中要發送到CAN總線上去時,總調度模塊調用CAN發送子程序Txdsub()發送。
      2.2 以太網控制器協議轉換模塊
      一個標準的以太網物理傳輸幀如表2所示(單位:字節)。
      表2 以太網的物理傳輸幀結構表

      同步位 分隔位 目的地址 源地址 類型字段 數據段 幀校驗序列
      PR SD DA SA TYPE DATA FCS
      7 1 6 6 2 46~1500 4

      除數據段的長度不定外,其它部分的長度都固定不變。以太網規定整個傳輸包的最大長度不能超過1514字節(14字節為DA、SA、TYPE),最小大能小于60字節。除去DS、SA、TYPE14字節外,還必須傳輸46字節的數據,當數據段的數據不足46字節時需填充,填充字符的個數不包括在長度字段里;超過1500個字節時,需拆成多個幀傳送。
      以太網控制器協議轉換模塊主要負責從UDP數據包中解析出完整的CAN協議報文,存入數據緩沖區A中。同時,也可以將數據緩沖區B中的完整CAN協議報文封裝成UDP數據報,然后將其發送到以太網上。
      主程序工作流程圖如圖3所示,單片機首先初始化網絡設備。網卡IP地址和物理地址存于單片機的EEPROM中,單片機復位后首先讀取這些數據以初始化網卡。
      網卡初始化完成以后,當有數據從RJ45過來時,單片機對數據包進行分析,如果是ARP(物理地址解析協議)數據包,則程序轉入ARP處理程序。如果是IP(網間協議)數據包且傳輸層使用UDP(用戶數據報協議),端口正確,則認為數據報正確,數據解包后,送入數據緩沖區A,最后把數據部分通過CAN接口輸出。反之,如果單片機從CAN接口收到數據,則將數據按照UDP協議格式打包,送入數據緩沖區B,由RTL8019AS將數據輸出到局域網中。
      本系統在通信傳輸層來采UDP協議是考慮到CAN協議數據報為短幀形式(每個數據幀最多為8字節)。如果采用TCP傳輸協議,要傳輸8個字節CAN協議數據,需先通過三次握手建立連接,再傳輸數據,之后還要通過握手釋放連接。這樣的傳輸效率對有限的網絡資源來說無疑是一種浪費。而UDP是無連接的傳輸,可以提高網絡傳輸效率,同時也可以減輕網關的處理任務壓力。UDP傳輸協議可靠性的不足之處可以采用加傳校驗機制來改善。通過實驗測試,表明這種方法是行之有效的。
      本文介紹了種低成本、高可靠性、快捷的嵌入式CAN總線與以太網互連的軟硬件實現方法。

      文章版權歸西部工控xbgk所有,未經許可不得轉載。

      主站蜘蛛池模板: 亚洲av乱码一区二区三区| 国产一区二区在线| 日韩精品一区二区三区老鸦窝| 日本免费一区二区三区最新| 无码人妻久久一区二区三区免费 | 精品爆乳一区二区三区无码av| 日本免费精品一区二区三区| 亚洲欧美日韩中文字幕在线一区| 久久久久久综合一区中文字幕| 亚洲日韩国产一区二区三区| 国产日韩综合一区二区性色AV| 无码人妻一区二区三区一| 少妇激情AV一区二区三区| 亚洲综合无码AV一区二区| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 黑巨人与欧美精品一区| 老熟女高潮一区二区三区| 一夲道无码人妻精品一区二区| 亚洲爽爽一区二区三区| 国产精品成人一区二区| 亚洲一区视频在线播放| 一区二区国产精品| 久久久久国产一区二区三区| 久久精品人妻一区二区三区| 精品日韩在线视频一区二区三区| 日本一区二区在线免费观看| 一区在线观看视频| 国产午夜精品一区二区三区嫩草| 久久精品综合一区二区三区| 制服中文字幕一区二区| 亚洲一区二区影院| 五十路熟女人妻一区二区| 福利国产微拍广场一区视频在线| 国产成人午夜精品一区二区三区| 少妇一晚三次一区二区三区| 久久蜜桃精品一区二区三区| 国产伦精品一区二区三区免.费 | 波多野结衣AV一区二区三区中文| 精品日韩一区二区| 国产乱码精品一区二区三| 国产精品女同一区二区|