《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > RS232通信網(wǎng)絡(luò)與CAN總線通信網(wǎng)絡(luò)互聯(lián)設(shè)計
RS232通信網(wǎng)絡(luò)與CAN總線通信網(wǎng)絡(luò)互聯(lián)設(shè)計
來源:電子技術(shù)應(yīng)用2010年第9期
王 強1, 張建喜2
1.許昌職業(yè)技術(shù)學(xué)院信息工程系,河南 許昌461000; 2.蘭州交通大學(xué),甘肅 蘭州 730070
摘要: 基于CAN總線原理,結(jié)合CAN控制器SJA1000、CAN收發(fā)器CTM和ATmega128的特性,針對CAN總線和RS232互聯(lián)問題,提出了RS232-CAN接口模塊的設(shè)計方案,詳細介紹了硬軟件設(shè)計模塊以及本設(shè)計的具體應(yīng)用。
關(guān)鍵詞: 51單片機 CAN Atmega128 SJA1000 RS232
中圖分類號: TP368.1
文獻標識碼: A
文章編號: 0258-7998(2010)09-0158-03
Design of connection between RS232 communication network and CAN bus communication network
WANG Qiang1, ZHANG Jian Xi2
1. Information Engineering Department, Xuchang Vocational Technology College, Xuchang 461000, China;2. Lanzhou Jiaotong University, Lanzhou 730070, China;
Abstract: Based on the principle of CAN and the feature of CAN controller SJA1000,CAN transceiver CTM1050 and MCU ATmega128,the paper provided the communication and connection issues between CAN bus line and RS-232 bus line.The paper also provided the RS232-CAN interface module for the issues.The paper introduced the design and application of the hardware module and the software module.
Key words : CAN; ATmega128; SJA1000; RS232

    目前工業(yè)設(shè)備之間的通信很多采用RS232接口,但由于RS232通信距離短(根據(jù)EAT/TAI-232標準,僅為15 m)、接口易損,而且只能進行點到點通信,不能直接組成多點通信網(wǎng)絡(luò)。為了延長RS232的通信距離,并將RS232節(jié)點組成通信網(wǎng)絡(luò),目前廣泛使用RS232/RS485信號轉(zhuǎn)換器。但是,由于RS485通信本身的局限性,在實際應(yīng)用中存在許多不足:總線效率低、系統(tǒng)的實時性差、通信的可靠性低、網(wǎng)絡(luò)工程調(diào)試復(fù)雜、傳輸距離不理想、單總線可掛接的節(jié)點少、應(yīng)用不靈活等。
    基于CAN通信的優(yōu)越性,本文介紹一種可以將RS232通信網(wǎng)絡(luò)轉(zhuǎn)換成CAN通信網(wǎng)絡(luò)的方法,以更好地解決用戶建立遠程通信網(wǎng)絡(luò)的問題。
1 CAN總線簡介
1.1 CAN總線概述

    控制器局域網(wǎng)絡(luò)CAN(Controller Area Network),屬于現(xiàn)場總線的范疇,它是一種有效支持分布式控制或?qū)崟r控制的串行通信網(wǎng)絡(luò), 最初由德國Bosch公司于20 世紀80 年代用于汽車內(nèi)部測試和控制儀器之間的數(shù)據(jù)通信[1]。其總線規(guī)范已被ISO國際標準組織定為國際標準,CAN 協(xié)議經(jīng)ISO 標準化后有ISO11898 標準和ISO11519標準兩種,這兩種標準對于數(shù)據(jù)鏈路層定義是相同的,但物理層不同。ISO11898是通信速度為125 kb/s-1 Mb/s的CAN高速通信標準; ISO11519是通信速度為125 kb/s以下的CAN低速通信標準。CAN協(xié)議建立在國際標準組織的開放系統(tǒng)互聯(lián)模型基礎(chǔ)上,但其模型結(jié)構(gòu)只有三層:ISO底層的物理層、數(shù)據(jù)鏈路層和應(yīng)用層;其信號傳輸介質(zhì)可采用雙絞線、同軸電纜和光纖等;通信最大距離可達10 km;最大通信波特率可達1 Mb/s,可掛設(shè)備最多達110個。CAN總線具有的特點,越來越廣泛地被應(yīng)用于各種工業(yè)現(xiàn)場,并被公認為是最有前途的現(xiàn)場總線之一。
1.2 CAN總線工作機制
1.2.1 CAN的報文類型

    CAN系統(tǒng)中節(jié)點之間以報文的形式進行通信,其報文有五種類型:數(shù)據(jù)幀、遠程幀、錯誤幀、過載幀和幀空間[2]。每種幀都有相應(yīng)固定的格式,其中數(shù)據(jù)幀和遠程幀與應(yīng)用密切相關(guān),其他類型幀由CAN控制器根據(jù)具體的情況自動傳輸。幀種類及用途如表1所示。

1.2.2  CAN節(jié)點的仲裁機制
    只要總線空閑,任何單元都可以開始發(fā)送報文(多主控制)。最先訪問總線的節(jié)點可獲得總線控制權(quán)。若多個節(jié)點同時開始傳送報文,就會有總線訪問沖突,可使用識別符的位形式仲裁解決這個沖突。仲裁期間,每一個發(fā)送器都對發(fā)送位的電平與被監(jiān)控的總線電平進行比較。如果電平相同,則這個節(jié)點繼續(xù)發(fā)送。若發(fā)送的是隱性電平而監(jiān)控到的是顯性電平,則這個節(jié)點失去了仲裁,必須退出發(fā)送狀態(tài)。ID越小優(yōu)先權(quán)越高,發(fā)送高優(yōu)先級 ID 消息的節(jié)點可獲得發(fā)送權(quán)。
1.2.3  CAN節(jié)點的報文濾波機制
    CAN 控制器監(jiān)聽接收總線上的所有報文,只有通過CAN控制器的報文篩選器篩選的報文才能進入CAN 的報文接收緩沖區(qū),為該節(jié)點所接收并傳送給應(yīng)用程序。
1.2.4  CAN節(jié)點狀態(tài)
    CAN總線上每個節(jié)點都處于“錯誤主動”、“錯誤被動”和“總線關(guān)閉”三種狀態(tài)之一。區(qū)分這幾種狀態(tài)的主要依據(jù)是發(fā)送錯誤計數(shù)器和接收錯誤計數(shù)器的值,并且這三種狀態(tài)可以在一定條件下相互轉(zhuǎn)化。
 處于錯誤主動狀態(tài)的節(jié)點,當發(fā)現(xiàn)總線上有錯誤傳輸時,將向總線上發(fā)“主動出錯幀”;處于錯誤被動狀態(tài)的節(jié)點,當發(fā)現(xiàn)總線上有錯誤傳輸時,將向總線上發(fā)“被動出錯幀”;當節(jié)點進入總線脫離狀態(tài)時,將完全退出總線操作。
2 硬件電路設(shè)計
2.1 硬件設(shè)計原理

   RS232串口通信與CAN通信是兩種不同的傳輸方式,無論是數(shù)據(jù)的傳輸方式還是邏輯電平的電壓表示都是不同的,本設(shè)計主要完成RS232接口與CAN總線協(xié)議之間的轉(zhuǎn)換,以及數(shù)據(jù)的雙向傳輸。設(shè)計原理如圖1所示。
    RS232接口端信號經(jīng)過RS232電平轉(zhuǎn)換成TTL電平,直接輸入到微控制器的通用同步/異步串行接口(USART),微控制器控制CAN控制器讀出有效的數(shù)據(jù)經(jīng)光電隔離的CAN收發(fā)器發(fā)送到CAN總線上。
    本設(shè)計采用的RS232電平轉(zhuǎn)換器為MAX232,微控制器為ATmega128,CAN總線控制器采用SJA1000,CAN總線收發(fā)器采用高速的具有收發(fā)和隔離功能的CTM1050控制器。ATmega128是整個模塊的控制中心,控制著RS232接口和CAN總線的通信。器件連接示意圖如圖2所示。

    RS232接口的發(fā)送數(shù)據(jù)端和接收數(shù)據(jù)端經(jīng)MAX232電平轉(zhuǎn)換分別與Atmega128串口、接收數(shù)據(jù)端PE0/RXD0、發(fā)送數(shù)據(jù)端PE1/TXD0相連;SJA1000的AD0~AD7連接到Atmega128的PA口,INT與Atmega128的INT0相連,ALE與Atmega128的PG2/ALE相連,讀寫端RD、WR分別連接Atmega128的PG1/RD、PG0/WR,CS連接到Atmega128的PC6,Atmega128的時鐘取自SJA1000的振蕩器,即SJA1000的CLKOUT連接到Atmega128的XTAL1;收發(fā)器CTM1050的RX0、TX0分別連接SJA1000T的RX0、TX0, CANH、CANL連接到CAN總線上。
2.2 主要芯片
   RS232用正負電壓來表示邏輯狀態(tài),與TTL以高低電平表示邏輯狀態(tài)的規(guī)定不同。因此,為了能夠同計算機接口或終端的TTL器件連接,必須在RS232接口與TTL電路之間進行電平和邏輯關(guān)系的變換。MAX232芯片可完成TTL⇔RS232電平的雙向轉(zhuǎn)換。
   ATmega128單片機是基于AVR RISC結(jié)構(gòu)的8位低功耗CMOS微處理器,為AVR單片機系列中的高性能單片機。ATmega128單片機內(nèi)部帶有128 KB的系統(tǒng)內(nèi)可編程Flash程序存儲器,具有同時讀寫能力;4 KB的E2PROM;4 KB的SRAM;53個通用I/O端口線;32個通用工作寄存器;4個靈活的具有比較模式和PWM功能的定時器/計數(shù)器(T/C);2個USART;串行外圍設(shè)備接口(SPI);與IEEE1149.1規(guī)范兼容的JTAG測試接口,可以用于片上調(diào)試;6種省電模式;53個可編程I/O端13線;由于其先進的指令集以及單周期指令執(zhí)行時間,數(shù)據(jù)吞吐率高達1 MIPS/MHz等。
   SJA1000是一種獨立的CAN控制器,主要用于移動目標和一般工業(yè)環(huán)境中的區(qū)域網(wǎng)絡(luò)控制,具有新的PeliCAN操作模式,這種模式兼容CAN2.0A 和CAN2.0B 兩種技術(shù)規(guī)范[3]。SJA1000可完成CAN總線的物理層和數(shù)據(jù)鏈路層的所有功能,由CAN核心模塊、發(fā)送緩沖區(qū)、接收FIFO、驗收濾波器和接口管理邏輯組成[4]。
   CTM1050是一款帶隔離的高速CAN收發(fā)器芯片,該芯片內(nèi)部集成了所有必需的CAN隔離及CAN收、發(fā)器件,其主要功能是將CAN 控制器的邏輯電平轉(zhuǎn)換為CAN總線的差分電平并且具有直流2 500 V的隔離功能及ESD 保護作用。該芯片符合ISO 11898標準,可與其他遵從ISO 11898標準的CAN 收發(fā)器互連。
3 軟件設(shè)計
    本設(shè)計程序主要包括:串口初始化程序、SJA1000初始化程序、單片機接收串口中斷服務(wù)子程序、單片機發(fā)送數(shù)據(jù)到串口中斷服務(wù)子程序、單片機接收CAN數(shù)據(jù)子程序、單片機發(fā)送CAN數(shù)據(jù)程序以及一些異常錯誤處理子程序等等。程序流程圖如圖3所示。

    本設(shè)計可以將RS232通信網(wǎng)絡(luò)轉(zhuǎn)換成CAN通信網(wǎng)絡(luò),能夠很方便地實現(xiàn)RS232多點組網(wǎng)、遠程通信,且不需要更改原有RS232通信軟件,用戶可直接嵌入原有的應(yīng)用領(lǐng)域,使系統(tǒng)設(shè)計達到更先進的水平。
參考文獻
[1]  王黎明,夏立,邵英,等.CAN現(xiàn)場總線系統(tǒng)的設(shè)計與應(yīng)用[M]. 北京:電子工業(yè)出版社,2008.
[2]  饒運濤,鄒繼軍,鄭勇蕓,等.現(xiàn)場總線CAN 原理與應(yīng)用技術(shù)[M].北京:北京航空航天大學(xué)出版社,2003.
[3]  PHILIPS Corporation.SJA 1000 stand-alone CAN controller product specification[S].2000.
[4]  夏繼強.現(xiàn)場總線工業(yè)控制網(wǎng)絡(luò)技術(shù)[M].北京:北京航空航天大學(xué)出版社,2005.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。