基于LPC2294的CAN與以太網網關互聯的設計
摘要 為滿足以太網與CAN總線網絡的互聯,設計了一種以LPC2294為控制芯片,嵌入式μC/OS—II為操作系統的網關模塊,實現了以太網協議與CAN總線協議的相互轉換。給出了網關模塊的軟硬件設計,重點闡述了網關模塊使用的自定義UDP報文結構,該報文結構可提供更多的管理信息,有利于網絡的管理測試表明設計的網關模塊具有一定的實用性和可靠性。
關鍵詞 CAN;以太網;協議轉換;嵌入式
控制器局域網(Controller Area Network,CAN)最先由德國BOSCH公司開發,并成為一種國際標準(IS011898)。由于CAN總線具有靈活、可靠、實時、開放性好、糾錯能力強等優點,成為目前最有前途的現場總線之一。但任何事物都具有兩面性,CAN總線也有不足之處,由于其收發器驅動能力有限,導致總線上可連接的最大節點數和最遠直接傳輸距離受到了限制,無法進行遠程控制,這給系統組網帶來了一定的制約條件。相較而言,以太網憑借著成本低、易于組網、擁有眾多應用軟硬件的支持且根據網絡需求的實際情況,不斷地進行完善和改進,并逐步發展了標準以太網(10 Mbit/s)、快速以太網(100 Mbit/s)千兆以太網和萬兆以太網等,成為目前應用最為廣泛的局域網絡技術。若將以太網與CAN總線互聯,可降低成本,增加系統的最大CAN節點數,擴大系統的組網范圍,還可實現不同傳輸速度的現場總線子網的相互通信,及其設備層到管理層的一體化。所以,文中提出一種以太網與CAN總線互聯的通信網關設計方案。
1 硬件設計
圖1所示為本網關模塊設計與實現的整體方案框圖,網關模塊使用LPC2294作為主控制器,μC/OS—II操作系統為平臺,擴展了兩個網卡接口和CAN接口,并通過軟件設計完成CAN總線協議與以太網協議相互轉換,最終實現CAN網絡與以太網之間的雙冗余通信。
硬件電路可劃分為5個部分:控制電路、存儲電路、輔助電路、以太網接口電路和CAN總線接口電路。下面主要對控制電路、以太網接口電路和CAN總線接口電路進行分析。
1.1 系統控制器
系統選用ARM處理器LPC2294作為控制芯片,主要是LPC2294具有超強的功能、功耗低及豐富的片上資源,更重要的是集成了4個支持CAN 2.0B協議的CAN控制器,并帶有先進的驗收濾波器,提供了系統的集成度和復雜度,還提供了系統的穩定性。為滿足系統的程序和數據存儲需要,外擴了1 MB的16位Flash芯片SST39VF16 0,用于存儲程序代碼。其中Flash的地址線A1~A20連接至LPC2294的A1~A20,數據線ED0~ED15通過一個雙電源供電的雙向收發器連接至LPC2294的DQ0~DQ15,CE#接至LPC2294的CS0,將其分配到Bank0單元,其地址范圍0x8000 0000~0x8000 1000。OE#、OW#分別連接至LC2294的OE#和WE#。同時外接了1 MB的16位SRAM存儲器IS61LV25616AL,用于堆棧和數據的存儲。其中SRAM的地址線A1~A20連接至LPC2294的A0~A19,數據線IO0~IO15通過一個雙電源供電的雙向收發器連接至LPC2294的D0~D15,CE#接至LPC 2294的CS1,將其分配到Bank1單元,該地址范圍0x8100 0030~0x8100 1000。LB#、UB分別與BLS0、BLS1相連,用于控制8位或16位讀寫數據。OE#、OW#分別連接至LC2294的OE#和WE#。
1.2 CAN接口電路設計
系統有兩個CAN接口,其中一個是主接口,另一個是冗余接口,均接入同一個CAN網絡,其目的是增加系統的可靠性。CAN2.0B控制器由LPC2294直接集成,無需外加獨立的CAN控制器,且LPC2294中集成了4個CAN控制器,在此系統中選用第1個和第2個CAN接口。CAN收發器選用了CAT8250T,主要作用是將CAN控制器的邏輯電平轉換為CAN總線的差分電平,但與常用的CAN收發器TJA1050T不同的是該CAN收發器將CAN節點的收發與高速光耦、電源隔離集成在一個電路模塊中,且隔離電壓高達DC2 500 V,接口簡單、使用方便,并對CAN總線有過電壓保護作用。同時還要在CANH和CANL與地之間并聯一個120 Ω的電阻,來匹配傳輸阻抗,吸收總線回波,確保有較低的電磁輻射和通信可靠性。
1.3 以太網接口電路設計
系統由DM9000E以太網控制器,HR601860網卡變壓器,及RJ45接口,組成以太網接口電路。同樣選用了兩個網口電路,一個是主網口,另一個是冗余網口。其中,LPC2294使用16位總線方式對DM9000E進行控制,并使其工作在100 MHz全雙工模式下。對兩個網口的選用,是通過LPC2294的CS3、A22引腳來控制主網口的片選信號,即這兩個引腳與74AC32的引腳1和2相連,而引腳3連接主網口的ANE引腳。同理將LPC2294的CS3、A23,經74AC32與冗余網口的ANE引腳相連。再將DM9000E的CMD引腳與LPC2294的A2連接。可將主網和冗余網卡芯片的數據端口地址與索引端口地址分別配置成0x8380000、0x83800004和0x83400000、0x83400004。DM9000E的物理層發送和接收端口TXO+、TXO-、RXI+、RXI-經網絡變壓器芯片HR601680接到RJ45接口。對于DM9000E的其余引腳可根據Datasheet中的說明,按要求連接即可,如圖2所示。
最終,對DM9000E芯片進行驅動。該芯片的驅動主要由3部分完成:void InitNic()用以對芯片進行初始化,配置片內寄存器等;void Send_P-acket(struct_pkst*TxdData)為數據發送程序,uint8 Rec_Packet(uint8 num)為數據接收程序,上層協議通過調用這兩個函數來發送以太網數據幀。
評論