新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 一種CAN總線―PROFIBUS-DP總線網(wǎng)關(guān)的實(shí)現(xiàn)方法

一種CAN總線―PROFIBUS-DP總線網(wǎng)關(guān)的實(shí)現(xiàn)方法

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


盡管SPC3已經(jīng)集成了物理層的數(shù)據(jù)傳輸功能,但它不具備RS-485的驅(qū)動(dòng)接口,因此添加了RS-485的驅(qū)動(dòng)電路。




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

3.3 雙口RAM的接口電路

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




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

4 系統(tǒng)軟件設(shè)計(jì)
網(wǎng)關(guān)的軟件可分為兩大部分,一部分用于負(fù)責(zé)CAN總線的數(shù)據(jù)通信,另一部分用于負(fù)責(zé)PROFIBUS線的數(shù)據(jù)通信。

每側(cè)的程序根據(jù)功能又可以分為三個(gè)子模塊:協(xié)議芯片初始化程序,接受數(shù)據(jù)接受子程序,數(shù)據(jù)發(fā)送子程序。其中數(shù)據(jù)接受子程序考外部中斷觸發(fā)執(zhí)行。下面以網(wǎng)關(guān)的CAN總線接口側(cè)程序?yàn)槔?,列出程序流程圖,PROFIBUS側(cè)的接口程序與之相似,就不再贅述。

CAN總線側(cè)的初始化與發(fā)送程序流程如圖4:




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


評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉