<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于ENC28J60的嵌入式以太網(wǎng)/CAN網(wǎng)關(guān)設計

基于ENC28J60的嵌入式以太網(wǎng)/CAN網(wǎng)關(guān)設計

作者: 時(shí)間:2009-05-19 來(lái)源:網(wǎng)絡(luò ) 收藏

2.1.2 數據的接收與發(fā)送
LPC2294的每個(gè)控制器中有3個(gè)發(fā)送緩沖區,發(fā)送數據時(shí)先查詢(xún)SR寄存器是否空閑,若空閑才能寫(xiě)入數據,然后判斷報文的類(lèi)型,根據報文類(lèi)型調用相應的發(fā)送函數,即對數據進(jìn)行封裝并寫(xiě)入發(fā)送緩沖區,最后調用發(fā)送命令。為了提高效率,接收數據采用中斷方式,首先在open的初始化程序中要使能接收中斷,當有中斷發(fā)生,讀取CANICR寄存器,判斷接收中斷標志是否置位,如果有則判斷報文的類(lèi)型,根據報文類(lèi)型調用相應的接收函數,處理接收緩沖區的數據。
2.1.3 異常處理
在總線(xiàn)發(fā)生嚴重故障的情況下,CAN節點(diǎn)脫離總線(xiàn),此時(shí)下述寄存器位被置位為CANSR的BS位、CANIR的BEI位和EI位(如果使能)和CAN-MOD的RM位。RM將許多CAN控制器功能復位和禁止。軟件下一步必須置零RM位。發(fā)送錯誤計數器將遞減計數總線(xiàn)釋放條件(11個(gè)連續的隱性位)的第128個(gè)錯誤。軟件通過(guò)讀取Tx錯誤計數器對計數器遞減計數的情況進(jìn)行監測。
2.2 通信軟件
2.2.1 的初始化
LPC2294。對的各種操作均通過(guò)SPI接口進(jìn)行,包括寄存器的設置、數據的發(fā)送和接收。LPC2294的SPI工作在主動(dòng)方式,即的SPI時(shí)鐘信號由LPC2294提供。ENC28J60初始化內容主要有定義ENC28J60發(fā)送緩沖區的大小,設置MAC地址與IP地址、子網(wǎng)掩碼、初始化LEDA、LEDB顯示狀態(tài),設置ENC28J60工作模式。
2.2.2 TCP/IP協(xié)議
采用系統中廣泛應用的LwIP協(xié)議棧。LwIP TCP/IP實(shí)現的特點(diǎn)是在保持協(xié)議主要功能的基礎上減少對RAM的占用,這使協(xié)議棧LwIP適合在低端系統中使用。LwIP協(xié)議棧應用到的協(xié)議有ARP,IP,IcMP,TCP,UDP,其具有滑動(dòng)窗口、擁塞控制和接收分片的分組功能。在LwIP中可以有多個(gè)網(wǎng)絡(luò )接口,每個(gè)網(wǎng)絡(luò )接口都對應一個(gè)strut netif()。netif包含了相應網(wǎng)絡(luò )接口的屬性、收發(fā)函數。采取調用netif的方法netif→inpln()及netif→output()進(jìn)行packet的收、發(fā)等操作。在驅動(dòng)中主要進(jìn)行的就是實(shí)現網(wǎng)絡(luò )口的收、發(fā)、初始化以及中斷處理。LwIP協(xié)議中沒(méi)有提供HTTP協(xié)議,所以需要用原始API函數編寫(xiě)HTTP應用程序。
2.3 /CAN雙向協(xié)議轉換
整個(gè)中最為關(guān)鍵的就是CAN協(xié)議與TCP/IP協(xié)議的相互轉換。協(xié)議轉換流程圖如圖6所示。

本文引用地址:http://dyxdggzs.com/article/152488.htm

具體過(guò)程如下:當接收到數據,首先判斷數據類(lèi)型,如果是從CAN接口接收CAN協(xié)議報文,便分離出數據部分,再將報文數據部分按系統規定的應用層格式進(jìn)行封裝,然后將應用層數據存入以太網(wǎng)接口發(fā)送緩沖區,由該接口在數據前面依次添加TCP或UDP頭、IP頭、以太幀頭,最后封裝成以太幀后,通過(guò)以太網(wǎng)接口發(fā)往以太網(wǎng)。若接收到的以太網(wǎng)數據,數據轉換過(guò)程相反,依次去掉IP頭、TCP或UDP頭和應用層頭,再將應用層數據按CAN報文格式封裝好后存入CAN接口發(fā)送緩沖區,由CAN接口發(fā)往CAN網(wǎng)絡(luò )中相應設備。若應用層數據長(cháng)度大于8 B,則還需將數據以8 B為一組進(jìn)行拆分。


3 結 語(yǔ)
符合IEEE802.3協(xié)議的ENC28J60不僅能提供以太網(wǎng)通信的相應功能,而且體積小,能夠簡(jiǎn)化設計,可以設計出較小的。用上述方法構建的通信可實(shí)現以太網(wǎng)與CAN總線(xiàn)之間的協(xié)議轉換,為以太網(wǎng)與CAN總線(xiàn)網(wǎng)絡(luò )的互聯(lián)提供了一種傳輸速度快,成本低,穩定性和安全性高的解決方案。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

上一頁(yè) 1 2 3 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>