新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 一種CAN總線―PROFIBUS-DP總線網關的實現方法

        一種CAN總線―PROFIBUS-DP總線網關的實現方法

        作者: 時間:2012-11-07 來源:網絡 收藏


        盡管SPC3已經集成了物理層的數據傳輸功能,但它不具備RS-485的驅動接口,因此添加了RS-485的驅動電路。




        另外為了避免總線上的信號對電路的影響,在SPC3與RS485總線驅動電路之間采用光電隔離。TxD、RxD信號的隔離器件選用Hewlett Packard公司的12M高速光耦HCPL710,RTS信號的隔離器件選用了6N137。

        3.3 雙口RAM的接口電路

        兩種總線數據的共享與傳遞是通過雙口RAM實現的,系統里選用了器件IDT7130。它是高速的1K雙口靜態RAM。該器件提供兩個獨立的端口,分別有獨立的控制、地址和I/O引腳,并允許獨立的異步讀寫訪問內存的任何地址,自動的電源管理特性由CE控制,允許芯片上的每一個端口電路進入一個非常低的電源模式。IDT7130的片內總線仲裁電路具有BUSY和INT兩種總線仲裁方式。基于所采用的單片機型號,在系統里采用了中斷仲裁方案,這種方式的工作原理是一個內存地址(郵箱或者信息中心)被指派給每個端口。左端口的中斷標志被宣稱當右端口寫到內存地址3FEH時,左端口通過訪問3FE內存地址清除中斷。相似的,當左端口寫內存地址3FFH時右端口標志被宣稱,為了清除這個中斷標志,右端口必須訪問內存地址3FFH,系統里3FE和3FF兩個單元的內容賦予新的內涵,即定義兩個碼0FFH和00H。其中0FFH代表發送命令要求對方傳送數據,而00H代表發送的是對方所要求的數據。系統里兩個CPU與雙口RAM的連接如圖3。雙口RAM的剩余的存儲單元被分為四大部分,其中0000H-00FFH這256個單元用來存儲上傳來的數據或地址,并且相鄰的兩個單元用于存儲一個CAN子站的數據信息;0100H-01F9H這250個單元用來存儲PROFIBUS總線上傳來的數據或地址,相鄰的兩個單元用于存儲一個PROFIBUS子站的信息,另外03FCH單元用于存放設備所要讀的PROFIBUS站點的ID號,03FDH單元用于存放PROFIBUS總線設備所要讀的CAN站點的ID號。




        由圖可知雙口RAM在負責通信的微處理器的映射地址為0x7C00H-0x7FFFH,在負責PROFIBUS總線通信的微處理器的映射地址為0x2C00H-0x2FFFH。

        4 系統軟件設計
        網關的軟件可分為兩大部分,一部分用于負責CAN總線的數據通信,另一部分用于負責PROFIBUS線的數據通信。

        每側的程序根據功能又可以分為三個子模塊:協議芯片初始化程序,接受數據接受子程序,數據發送子程序。其中數據接受子程序考外部中斷觸發執行。下面以網關的CAN總線接口側程序為例,列出程序流程圖,PROFIBUS側的接口程序與之相似,就不再贅述。

        CAN總線側的初始化與發送程序流程如圖4:




        因為SJA1000的初始化只有在復位模式下才可以進行,因此程序首先將SJA1000的中斷屏蔽,使它進入復位模式,然后對它進行初始化。初始化內容主要包括工作方式的設置、接受濾波方式的設置、接受屏蔽寄存器和接受代碼寄存器的設置、波特率參數設置和中斷允許寄存器的設置等。 SJA1000完成初始化設置后,再讓它返回到工作狀態,進行正常的通信任務。


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 闸北区| 合作市| 沙洋县| 宽甸| 改则县| 宁晋县| 普洱| 武胜县| 永善县| 中牟县| 夹江县| 五河县| 邢台县| 孝感市| 辽阳市| 凯里市| 南通市| 称多县| 枞阳县| 塔城市| 峡江县| 巫山县| 门源| 怀宁县| 诸城市| 红原县| 绵阳市| 师宗县| 绵竹市| 连州市| 万山特区| 五家渠市| 高雄县| 班玛县| 冕宁县| 微山县| 黑龙江省| 方山县| 永善县| 新民市| 夹江县|