<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ò ) 收藏

  圖4 SJA1000驅動(dòng)程序流程

 ?。?)SJA1000的初始化。SJA1000在系統上電、硬件復位或主控制器發(fā)出復位命令后需要進(jìn)行初始化,以設定它的工作模式、通信速率、輸出控制方式和標識符屏蔽格式等重要參數。CAN控制器SJA1000的初始化只能在復位模式下才能完成。程序的流程圖如圖4所示。

  首先程序檢測CAN接口是否正常工作,即向SJA1000的測試寄存器寫(xiě)入并讀出,校驗其結果是否一致,如果結果一致則進(jìn)入復位模式進(jìn)行初始化設置。在初始化的過(guò)程中,如果對某個(gè)寄存器的設置超過(guò)規定的時(shí)間還未完成,則認為初始化失敗,初始化程序自動(dòng)發(fā)送錯誤信號。

 ?。?)數據的發(fā)送與接收。SJA1000芯片有一個(gè)報文發(fā)送緩沖區和兩個(gè)報文接收緩沖區,用于CAN報文傳送。數據從CAN控制器SJA1000發(fā)送到 CAN總線(xiàn)首先是由CAN控制器自動(dòng)完成的,發(fā)送數據程序把數據存儲區中待發(fā)送的數據取出,組成信息幀,并將主機的ID地址填人幀頭;然后將信息幀發(fā)送到 CAN控制器的發(fā)送緩沖區;最后啟動(dòng)發(fā)送命令即可。信息從CAN總線(xiàn)到CAN接收緩沖區也是由CAN控制器自動(dòng)完成的。接收程序只需從接收緩沖區讀取要接收的信息,并將其存儲在數據存儲區即可。

  2.2 RTL8019AS驅動(dòng)程序的實(shí)現

  RTL8019AS的驅動(dòng)程序和SJA的驅動(dòng)程序一樣,有3種功能:芯片初始化、收包、發(fā)包。

 ?。?)RTL8019AS的初始化。RTL8019AS的初始化過(guò)程比較復雜,但十分重要,它決定了通信過(guò)程中的一些重要參數。如設置相關(guān)工作模式的寄存器,分配和初始化接收及發(fā)送緩沖區,初始化網(wǎng)卡接收地址等,其流程圖見(jiàn)圖5所示。

  圖5 RTL8019AS的初始化流程圖

 ?。?)數據的發(fā)送與接收。因為在RTL8019AS的初始化程序中已經(jīng)完成了以太網(wǎng)的物理地址設置,并指定了發(fā)送緩沖區起始頁(yè)面地址寄存器TPSR.此外,RTL8019AS的CRC校驗自動(dòng)生成器也被使能,所以RTL8019AS的數據包發(fā)送程序相對要簡(jiǎn)單。在數據包的發(fā)送過(guò)程中,AT89C55只要通過(guò)遠程DMA將待發(fā)送的數據包寫(xiě)至RTL8019AS片內SRAM的發(fā)送緩沖區,并啟動(dòng)發(fā)送過(guò)程即可。

  在接收數據包時(shí),有查詢(xún)和中斷兩種方式,鑒于A(yíng)T89C55的處理能力有限,在該設計中采用查詢(xún)方式,根據判斷CURB==BNRY+1,可以判斷是否收到新的數據包,如果有則通過(guò)DMA讀操作從網(wǎng)卡芯片RAM讀出數據。

  2.3 網(wǎng)關(guān)協(xié)議轉換流程

  嵌入式網(wǎng)絡(luò )接口實(shí)現兩種網(wǎng)絡(luò )的互連。當以太網(wǎng)應用層有數據要發(fā)送到CAN節點(diǎn)時(shí),首先將數據發(fā)送到網(wǎng)關(guān),由以太網(wǎng)控制器協(xié)議轉換模塊解析完整的CAN協(xié)議數據包,通過(guò)CAN控制器發(fā)送到CAN總線(xiàn)。反之,當CAN設備有數據要發(fā)送到用戶(hù)層時(shí),首先將數據發(fā)送到透明網(wǎng)關(guān),由CAN控制器協(xié)議模塊將完整的 CAN協(xié)議數據包存放在緩沖區,再通知主控芯片,由它調用以太網(wǎng)控制協(xié)議轉換模塊,將完整的 CAN協(xié)議數據包作為應用層數據封裝起來(lái),再發(fā)送到以太網(wǎng)的應用層。

  3 結語(yǔ)

  這里介紹的是一種低成本、高可靠性、快捷的CAN以太網(wǎng)網(wǎng)關(guān)的硬件、軟件設計方案,通過(guò)實(shí)際應用證明,該設計可以作為CAN總線(xiàn)節點(diǎn)的一個(gè)模塊,能夠與儀器儀表等設備相結合,使其具有網(wǎng)絡(luò )通信的能力,比較同類(lèi)產(chǎn)品的設計,該設計能大大提高其性?xún)r(jià)比。


上一頁(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>