新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于CAN總線與以太網的嵌入式網關設計技術

        基于CAN總線與以太網的嵌入式網關設計技術

        作者: 時間:2016-12-20 來源:網絡 收藏

        2 通信模塊軟件設計

        2.1 SJA1000驅動程序的實現

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

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

        SJA1000驅動程序

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

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

        2.2 RTL8019AS驅動程序的實現

        RTL8019AS的驅動程序和SJA的驅動程序一樣,有3種功能:芯片初始化、收包、發包。

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

        RTL8019AS驅動程序

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

        在接收數據包時,有查詢和中斷兩種方式,鑒于AT89C55的處理能力有限,在該設計中采用查詢方式,根據判斷CURB==BNRY+1,可以判斷是否收到新的數據包,如果有則通過DMA讀操作從網卡芯片RAM讀出數據。

        2.3 網關協議轉換流程

        嵌入式網絡接口實現兩種網絡的互連。當以太網應用層有數據要發送到CAN節點時,首先將數據發送到網關,由以太網控制器協議轉換模塊解析完整的CAN協議數據包,通過CAN控制器發送到CAN總線。反之,當CAN設備有數據要發送到用戶層時,首先將數據發送到透明網關,由CAN控制器協議模塊將完整的CAN協議數據包存放在緩沖區,再通知主控芯片,由它調用以太網控制協議轉換模塊,將完整的 CAN協議數據包作為應用層數據封裝起來,再發送到以太網的應用層。

        3 結 語

        這里介紹的是一種低成本、高可靠性、快捷的CAN以太網網關的硬件、軟件設計方案,通過實際應用證明,該設計可以作為CAN總線節點的一個模塊,能夠與儀器儀表等設備相結合,使其具有網絡通信的能力,比較同類產品的設計,該設計能大大提高其性價比。


        上一頁 1 2 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 新干县| 宁都县| 朝阳县| 弋阳县| 合阳县| 西林县| 竹北市| 大余县| 汉中市| 鹿泉市| 沛县| 祁东县| 阳信县| 托克逊县| 台州市| 启东市| 九寨沟县| 汉阴县| 揭西县| 蓬安县| 曲靖市| 仁布县| 永安市| 镇宁| 武定县| 张家港市| 凤城市| 靖远县| 遂宁市| 盖州市| 宁强县| 平遥县| 揭阳市| 哈巴河县| 宜阳县| 金昌市| 图木舒克市| 山阴县| 安远县| 宁乡县| 萨迦县|