基于ENC28J60的嵌入式以太網(wǎng)/CAN網(wǎng)關設計
2.1.2 數(shù)據(jù)的接收與發(fā)送
LPC2294的每個CAN控制器中有3個發(fā)送緩沖區(qū),發(fā)送數(shù)據(jù)時先查詢CANSR寄存器是否空閑,若空閑才能寫入數(shù)據(jù),然后判斷報文的類型,根據(jù)報文類型調用相應的發(fā)送函數(shù),即對數(shù)據(jù)進行封裝并寫入發(fā)送緩沖區(qū),最后調用發(fā)送命令。為了提高效率,接收數(shù)據(jù)采用中斷方式,首先在CANopen的初始化程序中要使能接收中斷,當有中斷發(fā)生,讀取CANICR寄存器,判斷接收中斷標志是否置位,如果有則判斷報文的類型,根據(jù)報文類型調用相應的接收函數(shù),處理接收緩沖區(qū)的數(shù)據(jù)。
2.1.3 異常處理
在總線發(fā)生嚴重故障的情況下,CAN節(jié)點脫離總線,此時下述寄存器位被置位為CANSR的BS位、CANIR的BEI位和EI位(如果使能)和CAN-MOD的RM位。RM將許多CAN控制器功能復位和禁止。軟件下一步必須置零RM位。發(fā)送錯誤計數(shù)器將遞減計數(shù)總線釋放條件(11個連續(xù)的隱性位)的第128個錯誤。軟件通過讀取Tx錯誤計數(shù)器對計數(shù)器遞減計數(shù)的情況進行監(jiān)測。
2.2 以太網(wǎng)通信軟件設計
2.2.1 ENC28J60的初始化
LPC2294。對ENC28J60的各種操作均通過SPI接口進行,包括寄存器的設置、數(shù)據(jù)的發(fā)送和接收。LPC2294的SPI工作在主動方式,即ENC28J60的SPI時鐘信號由LPC2294提供。ENC28J60初始化內容主要有定義ENC28J60發(fā)送緩沖區(qū)的大小,設置MAC地址與IP地址、子網(wǎng)掩碼、初始化LEDA、LEDB顯示狀態(tài),設置ENC28J60工作模式。
2.2.2 TCP/IP協(xié)議
該設計采用嵌入式系統(tǒng)中廣泛應用的LwIP協(xié)議棧。LwIP TCP/IP實現(xiàn)的特點是在保持協(xié)議主要功能的基礎上減少對RAM的占用,這使協(xié)議棧LwIP適合在低端嵌入式系統(tǒng)中使用。LwIP協(xié)議棧應用到的協(xié)議有ARP,IP,IcMP,TCP,UDP,其具有滑動窗口、擁塞控制和接收分片的分組功能。在LwIP中可以有多個網(wǎng)絡接口,每個網(wǎng)絡接口都對應一個strut netif()。netif包含了相應網(wǎng)絡接口的屬性、收發(fā)函數(shù)。采取調用netif的方法netif→inpln()及netif→output()進行以太網(wǎng)packet的收、發(fā)等操作。在驅動中主要進行的就是實現(xiàn)網(wǎng)絡口的收、發(fā)、初始化以及中斷處理。LwIP協(xié)議中沒有提供HTTP協(xié)議,所以需要用原始API函數(shù)編寫HTTP應用程序。
2.3 以太網(wǎng)/CAN雙向協(xié)議轉換
整個設計中最為關鍵的就是CAN協(xié)議與TCP/IP協(xié)議的相互轉換。協(xié)議轉換流程圖如圖6所示。本文引用地址:http://www.ex-cimer.com/article/152488.htm
其具體過程如下:當網(wǎng)關接收到數(shù)據(jù),首先判斷數(shù)據(jù)類型,如果是從CAN接口接收CAN協(xié)議報文,便分離出數(shù)據(jù)部分,再將報文數(shù)據(jù)部分按系統(tǒng)規(guī)定的應用層格式進行封裝,然后將應用層數(shù)據(jù)存入以太網(wǎng)接口發(fā)送緩沖區(qū),由該接口在數(shù)據(jù)前面依次添加TCP或UDP頭、IP頭、以太幀頭,最后封裝成以太幀后,通過以太網(wǎng)接口發(fā)往以太網(wǎng)。若接收到的以太網(wǎng)數(shù)據(jù),數(shù)據(jù)轉換過程相反,依次去掉IP頭、TCP或UDP頭和應用層頭,再將應用層數(shù)據(jù)按CAN報文格式封裝好后存入CAN接口發(fā)送緩沖區(qū),由CAN接口發(fā)往CAN網(wǎng)絡中相應設備。若應用層數(shù)據(jù)長度大于8 B,則還需將數(shù)據(jù)以8 B為一組進行拆分。
3 結 語
符合IEEE802.3協(xié)議的ENC28J60不僅能提供以太網(wǎng)通信的相應功能,而且體積小,能夠簡化設計,可以設計出較小的嵌入式網(wǎng)關。用上述方法構建的通信網(wǎng)關可實現(xiàn)以太網(wǎng)與CAN總線之間的協(xié)議轉換,為以太網(wǎng)與CAN總線網(wǎng)絡的互聯(lián)提供了一種傳輸速度快,成本低,穩(wěn)定性和安全性高的解決方案。
評論