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

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

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

2.1 微控制器模塊
 本系統(tǒng)采用性價比較高的ATMEL單片機AT89C52,AT89C52是一個低電壓、高性能CMOS 8 bit單片機,片內含8 KB的可反復擦寫的只讀程序存儲器Flash和256 B的隨機存取數(shù)據(jù)存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技術生產,兼容標準MCS-51指令系統(tǒng),內置通用8 bit中央處理器和Flash存儲單元。AT89C52單片機電路如圖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經上拉電阻與J100跳線相連。當不接跳線時,P2.6為高電平,表示進行正常的RS485總線數(shù)據(jù)傳輸;當連接跳線時,P2.6為低電平,表示串口作為配置參數(shù)使用。
2.2 CAN接口模塊
2.2.1 CAN總線接口的結構

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

 

 

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

此內容為AET網站原創(chuàng),未經授權禁止轉載。