<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è) > 嵌入式系統 > 設計應用 > 基于CAN總線(xiàn)與以太網(wǎng)的嵌入式網(wǎng)關(guān)設計

基于CAN總線(xiàn)與以太網(wǎng)的嵌入式網(wǎng)關(guān)設計

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

  本文為一種工業(yè)現場(chǎng)總線(xiàn)與以太網(wǎng)互聯(lián)方法,介紹以太網(wǎng)與CAN現場(chǎng)總線(xiàn)之間協(xié)議轉換網(wǎng)關(guān)的設計與實(shí)現,采用AT89C55作為主處理器,通過(guò)兩個(gè)接口芯片實(shí)現CAN總線(xiàn)與以太網(wǎng)的互連,分別給出其硬件結構和軟件設計思想。為企業(yè)信息網(wǎng)絡(luò )與控制網(wǎng)絡(luò )集成提供一種可行的方法。

  1 硬件結構

  目前,對于CAN和以太網(wǎng)相連的嵌入式網(wǎng)關(guān)設計主要有兩種方法:一種是低檔MCU加接口芯片的設計方法,另一種是高檔MCU加EOS(實(shí)時(shí)多任務(wù)操作系統)再加接口芯片的設計方法。因CAN只采用了ISO/OSI參考模型的一、二層,協(xié)議相對簡(jiǎn)單,比較適合用于低成本、速率要求不高的離散控制系統。從合理的成本和有效利用處理能力這兩方面考慮,該設計采用低檔MCU加接口芯片的方法,其硬件框圖見(jiàn)圖1。

  圖1 硬件原理圖

  1.1 主控芯片及以太網(wǎng)接口模塊

  根據要求,該系統選擇了性能價(jià)格比較高的Atmel公司生產(chǎn)的AT89C55單片機。它是面向測控對象和嵌入式應用的,所以它的體系結構以及CPU、指令系統、外圍單元電路都是按照這種要求專(zhuān)門(mén)設計的。它內部帶高達20 KB的FLASH程序存儲器,AT89C55完全兼容8051指令集,片上FLASH方便了使用者進(jìn)行在線(xiàn)編程,工作速率最高可達33 MHz,256 B的內部RAM,32個(gè)可編程的I/O口,3個(gè)16位的定時(shí)/計數器,8個(gè)中斷源,支持低功耗的空閑工作模式。以太網(wǎng)接口選用的是RTL8019AS芯片,它是由Realtek公司生產(chǎn)的一種高度集成的以太網(wǎng)控制器,能實(shí)現以太網(wǎng)媒介訪(fǎng)問(wèn)層(MAC)和物理層(PHY)的全部功能。RTL8019AS內部有兩個(gè)RAM區域:一是16 KB,地址為0x4000~0x7fff,要接收和發(fā)送數據包必須通過(guò)DMA讀寫(xiě)RTL8019AS內部的16 KB的RAM,它實(shí)際上是雙端口RAM,即有兩條總線(xiàn)與其連接,一條總線(xiàn)用于RTL8019AS讀/寫(xiě)或寫(xiě)/讀該RAM,即本地DMA;另一條總線(xiàn)用于單片機讀或寫(xiě)該RAM,即遠程DMA;二是32個(gè)字節,地址為0x0000~0x001F,用于存儲以太網(wǎng)物理地址。主控芯片和以太網(wǎng)接口芯片的硬件接口原理圖見(jiàn)圖2。值得注意的是由于以太網(wǎng)的包最大可以超過(guò)1 500個(gè)字節,AT89C55的片內RAM只有256個(gè)字節,因此無(wú)法存儲這么大的包,所以這里擴展了一個(gè)32 KB的外部RAM,這樣同時(shí)也能提高單片機的數據傳輸速度。

  圖2 以太網(wǎng)接口電路原理圖

  1.2 CAN接口模塊

  組成CAN系統的主要器件是CAN控制器和收發(fā)器。該設計中,CAN接口模塊選用SJA1000芯片和PCA82C250芯片。SJA1000是一個(gè)獨立的CAN控制器,它是Philips公司另一個(gè)CAN控制器PCA82C200的替代產(chǎn)品,且增加了一種新的工作模式(Peli CAN),這種模式支持CAN 2.0B協(xié)議。SJA1000主要完成CAN的通信協(xié)議,實(shí)現報文的裝配和拆分、接收信息的過(guò)濾和校驗等。

  PCA82C250是CAN控制器與物理總線(xiàn)之間的接口,主要用于增強系統的驅動(dòng)能力。采用收發(fā)器的系統中,節點(diǎn)數至少可以達到110個(gè),同時(shí)還具有降低射頻干擾(RFI)和很強的抗電磁干擾 (EMI)能力。在處理這部分電路時(shí),有幾個(gè)地方要特別注意:

 ?。?)晶振電路的問(wèn)題。89C55和SJA1000都應該有各自獨立的晶振電路,不能夠用SJA1000的時(shí)鐘輸出信號CLKOUT來(lái)驅動(dòng)單片機。

 ?。?)復位引腳的問(wèn)題。雖然SJA1000的復位是低電平,但不能通過(guò)一個(gè)非門(mén)直接連接單片機的復位引腳。一般對解決復位引腳問(wèn)題有兩種方式:第一種是使用單片機的I/O引腳控制SJA的復位引腳,其好處是單片機可以完全控制SJA的復位過(guò)程;第二種是采用適當的復位芯片,為了降低成本,該設計采取的是第一種方法。

 ?。?)RX1引腳的電位必須維持在約0.5 VCC上,否則將不能形成CAN協(xié)議所要求的邏輯電平。

 ?。?)一定要注意電纜的終端阻抗匹配,它直接影響CAN總線(xiàn)是否能正常工作和網(wǎng)絡(luò )性能。CAN接口模塊的硬件電路圖見(jiàn)圖3,在PCA82C250的RS腳上接有一個(gè)斜率電阻R,可根據總線(xiàn)通信速度適當調整電阻的大小。

  圖3 CAN接口模塊的硬件電路圖

  2 通信模塊軟件設計

  2.1 SJA1000驅動(dòng)程序的實(shí)現

  SJA1000驅動(dòng)程序是由SJA的初始化函數、發(fā)送函數、接收函數組成的,圖4所示為其流程圖。


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

評論


技術(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>