新聞中心

CAN總線與RS

作者: 時(shí)間:2016-12-14 來源:網(wǎng)絡(luò) 收藏
1CAN總線RS-485總線簡(jiǎn)介

CAN總線(ControllerAreaNetwork)是由德國Bosch公司于20世紀(jì)80年代專門為汽車電子控制系統(tǒng)開發(fā)的一種串行數(shù)據(jù)通訊協(xié)議,特別適合應(yīng)用于分布式控制或?qū)崟r(shí)控制領(lǐng)域。它的應(yīng)用范圍遍及高速網(wǎng)絡(luò)和低本錢的分布式控制系統(tǒng)。CAN具有以下特點(diǎn):

本文引用地址:http://m.butianyuan.cn/article/201612/329684.htm

(1)無破壞的依據(jù)優(yōu)先權(quán)的仲裁;

(2)多主站點(diǎn)依據(jù)優(yōu)先級(jí)進(jìn)行總線訪問;

(3)嚴(yán)格的錯(cuò)誤檢測(cè)和界定;

(4)支持遠(yuǎn)程數(shù)據(jù)請(qǐng)求;

(5)借助接收濾波的多地址幀傳送;

(6)通訊介質(zhì)多樣,組合方式靈活;

(7)全系統(tǒng)數(shù)據(jù)兼容,系統(tǒng)靈活;

(8)最遠(yuǎn)傳輸間隔為10Km(總線傳輸速率為5kbps),最大傳輸速率為1Mbps(總線傳輸間隔為40m)。

RS-485標(biāo)準(zhǔn)是美國EIA(電子產(chǎn)業(yè)聯(lián)合會(huì))公布的串行通訊協(xié)議。它比RS-232C標(biāo)準(zhǔn)信號(hào)傳輸間隔長(zhǎng)、速度快、抗干擾性能好,廣泛應(yīng)用于各種產(chǎn)業(yè)、樓宇、能源等領(lǐng)域。在實(shí)際應(yīng)用中,很多產(chǎn)業(yè)控制設(shè)備(如PLC)都帶有RS-485接口。因此,有必要設(shè)計(jì)CAN總線與RS-485總線的通訊接口電路。

2硬件設(shè)計(jì)

整個(gè)通訊接口電路由單片機(jī)AT89C52、CAN控制器SJA1000、CAN收發(fā)器82C250、高速光電耦合器6N137和RS-485收發(fā)器MAX485組成。如圖1所示。單片機(jī)AT89C52主要完成SJA1000的初始化,及CAN總線和RS-485總線之間的數(shù)據(jù)通訊任務(wù)。SJA1000是CAN控制器82C200的替換產(chǎn)品。它主要由下列功能模塊構(gòu)成:接口治理邏輯、發(fā)送緩沖器、接收緩沖器、接收過濾器、位流處理器、位時(shí)序邏輯和錯(cuò)誤治理邏輯。除了與82C200兼容之外,它增加了很多新功能:PeliCAN工作模式、讀/寫訪問的錯(cuò)誤計(jì)數(shù)器、標(biāo)準(zhǔn)和擴(kuò)展結(jié)構(gòu)信息的接收和發(fā)送、可編程的錯(cuò)誤限制報(bào)警、只聽模式和仲裁丟失中斷。單片機(jī)對(duì)SJA1000內(nèi)部寄存器的控制是以訪問外部寄存器的方式進(jìn)行的。CAN收發(fā)器82C250是CAN總線控制器和物理總線之間的接口,主要負(fù)責(zé)提供對(duì)總線的差分發(fā)送能力和對(duì)CAN控制器的差分接收能力。它的引腳8(RS)控制3種不同的工作方式的選擇:待機(jī)、斜率控制和高速。

(1)給RS接上高電平,則82C250以低電流待機(jī)方式工作;

(2)若RS通過連接電阻接地,則進(jìn)進(jìn)斜率控制方式,該方式可以通過改變電阻的阻值來調(diào)節(jié)斜率,適用于低速和較短的總線長(zhǎng)度的應(yīng)用場(chǎng)合;

(3)假如RS接地,就選擇了高速工作方式。高速光電耦合器6N137實(shí)現(xiàn)了CAN控制器和收發(fā)器之間的電氣隔離,增強(qiáng)了系統(tǒng)的穩(wěn)定性和抗干擾能力。RS-485收發(fā)器MAX485是一種差分平衡型的小功率收發(fā)器,包含一個(gè)驅(qū)動(dòng)器和一個(gè)接收器,使用單+5V電源供電,專門用于TTL協(xié)議(即通用于各型CPU的通訊協(xié)議)和485標(biāo)準(zhǔn)之間的相互轉(zhuǎn)換,使微控制器可以利用RS-485串行通訊協(xié)議直接進(jìn)行串行通訊。

整個(gè)轉(zhuǎn)換過程可分為:CAN總線轉(zhuǎn)換到RS-485總線和RS-485總線轉(zhuǎn)換到CAN總線。CAN總線轉(zhuǎn)換到RS-485總線的流程如下:微控制器接收到CAN總線節(jié)點(diǎn)發(fā)送的報(bào)文,根據(jù)CAN總線規(guī)定的數(shù)據(jù)格式取出報(bào)文的有用信息,然后由微控制器通過MAX485將信息發(fā)送到RS-485總線。而RS-485總線轉(zhuǎn)換到CAN總線則是上述流程的逆過程。

3軟件設(shè)計(jì)

軟件設(shè)計(jì)的主要任務(wù)是實(shí)現(xiàn)數(shù)據(jù)和控制命令在CAN總線網(wǎng)絡(luò)和RS-485總線之間的傳輸。它主要包括RS-485和CAN接口的初始化程序、報(bào)文發(fā)送和接收程序、中斷服務(wù)程序和錯(cuò)誤處理程序等。其中,SJA1000的初始化程序是軟件設(shè)計(jì)中的難點(diǎn),需要完成各種工作參數(shù)的設(shè)置。其中,控制寄存器用來改變CAN控制器的行為,包括進(jìn)進(jìn)復(fù)位狀態(tài),激活不同類型的中斷源,如接收中斷、發(fā)送中斷和數(shù)據(jù)溢出中斷等。驗(yàn)收代碼寄存器和驗(yàn)收屏蔽寄存器共同作用定義了能被節(jié)點(diǎn)所接收?qǐng)?bào)文的條件:所收信息的標(biāo)識(shí)符的相應(yīng)位與驗(yàn)收代碼寄存器驗(yàn)收碼的相應(yīng)位相等。驗(yàn)收屏蔽寄存器的作用是確定驗(yàn)收碼的哪些位對(duì)于驗(yàn)收濾波是相關(guān)的或不相關(guān)的??偩€時(shí)序寄存器0定義了波特率的預(yù)設(shè)值及同步跳轉(zhuǎn)寬度;總線時(shí)序寄存器1則定義了位周期的長(zhǎng)度、采樣點(diǎn)的位置和采樣數(shù)目。輸出控制寄存器可以設(shè)置不同的輸出模式(如正常輸出模式、雙相輸出模式和時(shí)鐘輸出模式等)。時(shí)鐘分頻寄存器不僅可以控制SJA1000的輸出頻率及屏蔽CLKOUT引腳,而且還能夠?qū)asicCAN和PeliCAN模式進(jìn)行選擇。具體的SJA1000初始化程序流程如圖2所示。


CAN總線轉(zhuǎn)換到RS-485總線的程序如下:


CAN-RS485_TRANSITION:


MOVDPTR,#SR;狀態(tài)寄存器


MOVXA,@DPTR;


JNBACC.0,CAN_QUIT;


是否接收到信息,無數(shù)據(jù)則退出轉(zhuǎn)換程序


CAN-RS485_HANDLE:


MOVDPTR,#CANR;接收緩沖區(qū)首地址


MOVXA,@DPTR;接收幀的格式


JNBACC.6,RECEIVE_FRAME


;RTR=1則報(bào)文是遠(yuǎn)程請(qǐng)求幀


LCALLTRANSMIT_DATA


;發(fā)送對(duì)方請(qǐng)求的數(shù)據(jù)


LJMPCAN_QUIT;退出轉(zhuǎn)換程序


RECEIVE_FRAME:MOVXA,@DPTR;


ANLA,#0FH;


ADDA,#05H


;獲得接收數(shù)據(jù)的長(zhǎng)度


MOVR7,A


MOVR0,#43H


;設(shè)定MCU接收數(shù)據(jù)緩沖區(qū)


DATAFRAME:MOVXA,@DPTR


;接收數(shù)據(jù)


MOV@R0,A


LCALLRS485_SEND;將有效信息通過MAX485轉(zhuǎn)發(fā)到RS-485總線


INCDPTR


INCR0


DJNZR7,DATAFRAME;判定接收是否結(jié)束


RECOUT:MOVDPTR,#CMR


MOVA,#04H


;開釋接收緩沖區(qū)


MOVX@DPTR,A


CAN_QUIT:RET;退出轉(zhuǎn)換程序


4結(jié)束語

CAN總線是當(dāng)前應(yīng)用最為廣泛的現(xiàn)場(chǎng)總線之一,而RS-485總線則是常用的串行總線,兩者之間的相互轉(zhuǎn)換具有很高的實(shí)用價(jià)值。本文設(shè)計(jì)的CAN-RS485通訊接口電路能夠很好地解決這兩種串行數(shù)據(jù)總線之間的相互轉(zhuǎn)換題目,并已成功應(yīng)用于某地區(qū)的智能交通控制系統(tǒng)。



關(guān)鍵詞: CAN總線R

評(píng)論


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

關(guān)閉
  1. <span id="m7whc"><dfn id="m7whc"></dfn></span>