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

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

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

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

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

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

 

 

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

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