《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于AT89C52單片機(jī)的RS485-CAN智能轉(zhuǎn)換器設(shè)計(jì)*
基于AT89C52單片機(jī)的RS485-CAN智能轉(zhuǎn)換器設(shè)計(jì)*
來(lái)源:微型機(jī)與應(yīng)用2012年第3期
姚發(fā)閃,陳志軍
(新疆大學(xué) 電氣工程學(xué)院,新疆 烏魯木齊 830046)
摘要: 基于CAN總線(xiàn)和RS485總線(xiàn)的廣泛應(yīng)用和各自的優(yōu)缺點(diǎn),設(shè)計(jì)了基于AT89C52單片機(jī)的RS485-CAN智能轉(zhuǎn)換器。在保留現(xiàn)有RS485系統(tǒng)硬件的基礎(chǔ)上添加了一個(gè)CAN總線(xiàn)接口,實(shí)現(xiàn)了CAN總線(xiàn)與RS485之間的數(shù)據(jù)傳輸,具有一定的使用價(jià)值。
Abstract:
Key words :

摘  要: 基于CAN總線(xiàn)RS485總線(xiàn)的廣泛應(yīng)用和各自的優(yōu)缺點(diǎn),設(shè)計(jì)了基于AT89C52單片機(jī)的RS485-CAN智能轉(zhuǎn)換器。在保留現(xiàn)有RS485系統(tǒng)硬件的基礎(chǔ)上添加了一個(gè)CAN總線(xiàn)接口,實(shí)現(xiàn)了CAN總線(xiàn)與RS485之間的數(shù)據(jù)傳輸,具有一定的使用價(jià)值。
關(guān)鍵詞: RS485總線(xiàn);CAN總線(xiàn);AT89C52單片機(jī);串口通信

 現(xiàn)場(chǎng)總線(xiàn)是一種應(yīng)用于生產(chǎn)現(xiàn)場(chǎng),在現(xiàn)場(chǎng)設(shè)備之間、現(xiàn)場(chǎng)設(shè)備與控制器之間實(shí)行雙向、串行、多節(jié)點(diǎn)數(shù)字通信的技術(shù)。RS485是一種平衡傳輸方式的串行接口標(biāo)準(zhǔn),采用半雙工異步數(shù)據(jù)通信方式。RS485的共線(xiàn)電路結(jié)構(gòu)是在一對(duì)平衡傳輸線(xiàn)的兩端都配置終端電阻,其收發(fā)器和接收器可以?huà)煸谄胶鈧鬏斁€(xiàn)的任何位置,實(shí)現(xiàn)在數(shù)據(jù)傳輸中多個(gè)驅(qū)動(dòng)器和接收器共用一個(gè)傳輸線(xiàn)的多點(diǎn)應(yīng)用。目前,在我國(guó)應(yīng)用的現(xiàn)場(chǎng)總線(xiàn)中,RS485通信總線(xiàn)也是被廣泛使用的數(shù)據(jù)通信總線(xiàn)。隨著科技的發(fā)展,RS485總線(xiàn)的效率低、系統(tǒng)的實(shí)時(shí)性差、通信的可靠性低、后期不靈活等缺點(diǎn)逐漸暴露出來(lái)。但完全放棄RS485網(wǎng)絡(luò)系統(tǒng)是不可能的,尤其是在已經(jīng)具有現(xiàn)場(chǎng)的硬件網(wǎng)絡(luò)中。而CAN現(xiàn)場(chǎng)總線(xiàn)作為一種由帶CAN控制器組成的高性能串行數(shù)據(jù)通信網(wǎng)絡(luò),是國(guó)際上應(yīng)用最廣泛的現(xiàn)場(chǎng)總線(xiàn)之一,是一種技術(shù)先進(jìn)、可靠性高、功能完善、成本合理的遠(yuǎn)程網(wǎng)絡(luò)通信控制方式。因此,可以考慮一種折中的方法,就是在保留現(xiàn)有RS485系統(tǒng)硬件結(jié)構(gòu)的基礎(chǔ)上,添加一個(gè)CAN總線(xiàn)接口,以實(shí)現(xiàn)CAN總線(xiàn)接口和RS485接口之間的相互轉(zhuǎn)換。
1 系統(tǒng)整體設(shè)計(jì)方案
 RS485-CAN智能轉(zhuǎn)換器實(shí)現(xiàn)了RS485總線(xiàn)網(wǎng)絡(luò)與CAN總線(xiàn)的網(wǎng)絡(luò)互連,這種連接方法一般作為過(guò)渡性的方案,適合那些新舊系統(tǒng)并存,性能要求不高,新系統(tǒng)與舊系統(tǒng)有相同運(yùn)行機(jī)制的地方。該設(shè)計(jì)有1個(gè)RS485通道和1個(gè)CAN通道,可以很方便地嵌入使用RS485接口通信的網(wǎng)絡(luò)接口、工業(yè)現(xiàn)場(chǎng)控制單元、智能網(wǎng)絡(luò)接口中。原有系統(tǒng)中的RS485網(wǎng)絡(luò)與CAN網(wǎng)絡(luò)是相互獨(dú)立的,現(xiàn)在可以在不改變?cè)杏布Y(jié)構(gòu)的前提下,使用RS485總線(xiàn)設(shè)備通過(guò)RS485-CAN智能嵌入式網(wǎng)關(guān),經(jīng)由CAN總線(xiàn)網(wǎng)絡(luò)與上位機(jī)進(jìn)行通信。
2 硬件設(shè)計(jì)
 RS485-CAN智能轉(zhuǎn)換器由微控制器模塊、基本模塊、CAN接口模塊、RS485接口模塊和儲(chǔ)存模塊組成。如果選擇的微處理器中集成了CAN控制器,則無(wú)需外接CAN控制器;否則需要外接CAN控制器。硬件設(shè)計(jì)框圖如圖1所示。

2.1 微控制器模塊
 本系統(tǒng)采用性?xún)r(jià)比較高的ATMEL單片機(jī)AT89C52,AT89C52是一個(gè)低電壓、高性能CMOS 8 bit單片機(jī),片內(nèi)含8 KB的可反復(fù)擦寫(xiě)的只讀程序存儲(chǔ)器Flash和256 B的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),內(nèi)置通用8 bit中央處理器和Flash存儲(chǔ)單元。AT89C52單片機(jī)電路如圖2所示。

 D100為電源指示燈;P0口連接CAN控制器SJA1000的總線(xiàn);P2.0控制SJA1000片選信號(hào),SJA1000向微控制器發(fā)送數(shù)據(jù)通過(guò)INT0外部中斷的方式通知,微控制器的RD、WD分別與SJA1000的讀寫(xiě)信號(hào)相連;TXD、RXD與RS485收發(fā)器相連;P1.0~P1.3與儲(chǔ)存器AT93C46相連;P2.6經(jīng)上拉電阻與J100跳線(xiàn)相連。當(dāng)不接跳線(xiàn)時(shí),P2.6為高電平,表示進(jìn)行正常的RS485總線(xiàn)數(shù)據(jù)傳輸;當(dāng)連接跳線(xiàn)時(shí),P2.6為低電平,表示串口作為配置參數(shù)使用。
2.2 CAN接口模塊
2.2.1 CAN總線(xiàn)接口的結(jié)構(gòu)

 一個(gè)CAN總線(xiàn)接口由微控制器、CAN控制器和CAN收發(fā)器三部分組成,它們分別對(duì)應(yīng)于CAN總線(xiàn)的物理層、數(shù)據(jù)鏈路參和應(yīng)用層。微控制器主要負(fù)責(zé)上層應(yīng)用及系統(tǒng)控制,包括CAN協(xié)議的應(yīng)用層協(xié)議的實(shí)現(xiàn),協(xié)調(diào)系統(tǒng)各設(shè)備的工作。中間層為CAN控制器,主要負(fù)責(zé)處理數(shù)據(jù)幀,完成數(shù)據(jù)的打包、解包和錯(cuò)誤界定,并提供報(bào)文緩沖和傳輸濾波。底層是CAN收發(fā)器,主要是接口電平的轉(zhuǎn)換及接口電氣特征的處理。
2.2.2 CAN總線(xiàn)控制器和收發(fā)器
 CAN控制器選用飛利浦公司生產(chǎn)的SJA1000 CAN總線(xiàn)控制模塊。SJA1000是一種獨(dú)立控制器,用于工業(yè)環(huán)境中的CAN總線(xiàn)。SJA1000的基本特征有:管腳及電氣特性與獨(dú)立CAN總線(xiàn)控制器PCA82C200兼容;軟件與PCA82C200兼容(缺省為基本CAN模式);擴(kuò)展接收緩沖器(64 B FIFO);支持CAN2.0B協(xié)議,同時(shí)支持11 bit和29 bit標(biāo)識(shí)符;通信速率為1 Mb/s;增強(qiáng)CAN模式(PeliCAN),支持具有很多特性的CAN2.0協(xié)議;采用24 MHz時(shí)鐘頻率;支持多種微處理器接口。
 本設(shè)計(jì)選擇TJA1050作為CAN總線(xiàn)收發(fā)器。TJA1050是CAN協(xié)議控制器和物理總線(xiàn)之間的接口,是一種標(biāo)準(zhǔn)的高速CAN收發(fā)器,可以為總線(xiàn)提供不同的發(fā)送性能,也為CAN控制器提供不同的接收性能。TJA1050的主要特征有[3]:完全符合ISO 11898標(biāo)準(zhǔn);速率最高達(dá)1 Mb/s;電磁輻射(EME)極低;電磁抗干擾EMI性極高;不上電的節(jié)點(diǎn)不會(huì)對(duì)總線(xiàn)造成擾動(dòng);TXD引腳有防止箝位在顯性總線(xiàn)電平的超時(shí)功能;靜音模式中提供了只聽(tīng)模式和Babbling Idiot保護(hù);保護(hù)總線(xiàn)引腳防止汽車(chē)環(huán)境中的瞬態(tài)干擾;輸入級(jí)和3.3 V以及5 V的器件兼容;輸出驅(qū)動(dòng)器受到溫度保護(hù)。
 CAN總線(xiàn)收發(fā)器TJA1050與CAN總線(xiàn)控制器SJA1000連接的電路圖如圖3所示。

 

 

 SJA1000的AD0~AD7與單片機(jī)的數(shù)據(jù)總線(xiàn)相連,P2.0引腳作為SJA1000的片選使能端,由ALE、WR、RD控制SJA1000數(shù)據(jù)的接收和發(fā)送;SJA1000的11腳MODE接高電平;SJA1000的16引腳是中斷信號(hào)輸出,與單片機(jī)的外部中斷INT0引腳相連,在中斷允許的情況下,當(dāng)有中斷發(fā)生時(shí),16引腳出現(xiàn)由高電平到低電平的跳變,從而通知單片機(jī)進(jìn)行相應(yīng)處理;SJA1000的TX1腳懸空;RX1引腳的電位必須維持在0.5VCC以上,否則,將不能形成CAN總線(xiàn)所要求的電平邏輯;SJA1000的TD1和RD1分別通過(guò)高速光耦6N137與SJA1000的TXD和RXD相連,以提高CAN總線(xiàn)節(jié)點(diǎn)的抗干擾能力,保證各節(jié)點(diǎn)之間在電氣上是完全隔離和獨(dú)立的。
2.3 RS485接口模塊和儲(chǔ)存模塊
 在RS485接口電路中采用MAX485芯片作為總線(xiàn)接收器,它是+5 V低功耗半雙工器件。MAX485的驅(qū)動(dòng)器輸出是差分輸出,完全滿(mǎn)足RS485串行協(xié)議的要求,兼容工業(yè)標(biāo)準(zhǔn)規(guī)范。系統(tǒng)對(duì)儲(chǔ)存模塊的要求比較低,掉電不丟失,僅用來(lái)儲(chǔ)存系統(tǒng)的配置信息,要求的儲(chǔ)存空間較小,因此選用ATMEL公司的AT93C46芯片作為存儲(chǔ)模塊。
3 系統(tǒng)軟件設(shè)計(jì)
 軟件設(shè)計(jì)由主程序模塊、初始化程序和中斷程序三部分組成。CAN總線(xiàn)通信模塊和RS485通信模塊的主程序可以分為初始化部分和循環(huán)部分。CAN通信模塊和RS485通信模塊的接收和發(fā)送采用的是中斷方式。CAN總線(xiàn)和RS485總線(xiàn)的數(shù)據(jù)接收和發(fā)送采用的是中斷方式,在中斷程序中設(shè)置相應(yīng)的接收中斷標(biāo)志,然后在主程序中用查詢(xún)的方式根據(jù)不同的標(biāo)志進(jìn)入到相應(yīng)的中斷程序。CAN控制器接收到數(shù)據(jù)后輸出中斷信號(hào)到微控制器,引起中斷,RS485則利用微控制器的串口中斷。初始化部分包括單片機(jī)初始化和SJA1000的初始化。AT89C52的初始化主要是對(duì)總線(xiàn)片選、串口工作方式、串口波特率、中斷等寄存器賦初值。SJA1000初始化主要是對(duì)模式寄存器、時(shí)鐘分頻寄存器、驗(yàn)收濾波寄存器、驗(yàn)收屏蔽寄存器、總線(xiàn)定時(shí)器以及輸出控制器進(jìn)行設(shè)置。在設(shè)置前要檢查SJA1000是否為復(fù)位模式,因?yàn)橐玫脚渲眯畔⒌募拇嫫鲀H在復(fù)位模式可寫(xiě)。中斷服務(wù)程序CAN總線(xiàn)的接收分為查詢(xún)控制接收和中斷控制接收兩種,為了更好地處理實(shí)時(shí)數(shù)據(jù)和實(shí)時(shí)響應(yīng)控制命令,CAN采用中斷控制命令,主流程在中斷控制的數(shù)據(jù)接收之前必須使能SJA1000的接收中斷和全局中斷,接收中斷使能表示位于中斷使能控制器中。首先讀取SJAQ000的中斷寄存器,然后判斷是接收中斷、發(fā)送中斷、總線(xiàn)錯(cuò)誤中斷還是數(shù)據(jù)超載中斷。判斷出是哪種中斷后進(jìn)入該中斷服務(wù)程序進(jìn)行處理。
本文通過(guò)RS485-CAN智能轉(zhuǎn)換器實(shí)現(xiàn)了RS485總線(xiàn)和CAN總線(xiàn)這兩種串行數(shù)據(jù)總線(xiàn)之間的數(shù)據(jù)通信,而且可以設(shè)置CAN和RS485的波特率,并將參數(shù)保存到儲(chǔ)存器中,具有一定的通用性。但本文在軟件設(shè)計(jì)方面沒(méi)有更多地考慮人機(jī)交互界面的設(shè)計(jì),還需要不斷完善。
參考文獻(xiàn)
[1] 丁元杰.單片微機(jī)原理與應(yīng)用技術(shù)[M].北京:北京航空航天大學(xué)出版社,2003.
[2] 廣州周立功單片機(jī)發(fā)展有限公司.CJA1000獨(dú)立CAN控制器[Z].2003.
[3] 廣州周立功單片機(jī)發(fā)展有限公司.TJA1050CAN高速收發(fā)器應(yīng)用指南[Z].2003.
[4] 劉澤祥.現(xiàn)場(chǎng)總線(xiàn)技術(shù)[M].北京:機(jī)械工業(yè)出版社,2011.

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