張國志 齊曉娜
【摘要】 介紹了一種基于C8051F502單片機的CAN總線和串口轉(zhuǎn)換電路,介紹了電路的基本器件選型,并對軟件的設計思路與流程進行了詳細描述。通過測試,證明此種轉(zhuǎn)換方式高速可靠,可廣泛應用。
【關鍵詞】 C8051F502 CAN總線 串口
Based on MCU of CAN bus and serial port conversion circuit design
Zhang Guo-zhi Qi Xiao-na(The 54th Research Institute of CETC,Shijiazhuang Hebei 050081,China)
Abstract: Introduced a C8051F502 microcontroller based on the CAN bus and serial port conversion circuit, this paper introduces the basic components of the circuit selection, and the design idea and process of software were described in detail. Through test that this kind of transformation way high-speed and reliable, and can be widely used.
Keywords: C8051F502:CAN Bus; serial port
一、引言
CAN總線[1] 是國際上應用最廣的現(xiàn)場總線之一,適用于大數(shù)據(jù)量短距離或者長距離小數(shù)據(jù)量通信,實時性要求比較高的現(xiàn)場中使用。目前CAN總線已經(jīng)廣泛應用于工業(yè)控制領域。在工業(yè)控制領域還有一種應用的相當廣泛的通信方式即串口通信,串口有多種通信標準和接口形式,如RS-232、RS-422、RS-485等,各種形式接口的管腳數(shù)量和定義也不盡相同。不論哪種形式,均用來進行設備通信。相比較CAN總線方式,串口通信只能實現(xiàn)點對點通信,多個設備需要互相通信時需要有專門設備實現(xiàn)協(xié)議轉(zhuǎn)換,而CAN總線則不存在此問題,總線上的所有設備均能互相通信,因此設計一種CAN總線到串口轉(zhuǎn)換電路,可將沒有CAN總線接口的串口設備轉(zhuǎn)換為CAN總線,減少設備數(shù)量,降低走線復雜程度。
二、硬件設計
本電路由單片機模塊、CAN接口模塊、串口轉(zhuǎn)換模塊組成,模塊框圖如圖1所示:
單片機模塊選用Silicon Labs公司的C8051F502單片機[2] ,該單片機是完全集成的混合信號片上系統(tǒng)型MCU,其集成了CAN控制器和串行接口,因此只需要很少的外圍電路就可實現(xiàn)系統(tǒng)功能。該單片機具有看門狗,能夠防止程序跑飛,提高系統(tǒng)健壯性。
CAN接口模塊選用TJA1040,將C8051F502單片機的CAN信號轉(zhuǎn)換為差分信號以便接入系統(tǒng)總線當中。為提高抗干擾能力,使用光電隔離芯片(6N137)進行信號隔離 。
串口轉(zhuǎn)換芯片選用Max3160,通過進行端口配置,即可方便的實現(xiàn)RS232,RS422和RS485電平的轉(zhuǎn)換。
三、系統(tǒng)軟件設計
系統(tǒng)軟件主要劃分為系統(tǒng)初始化模塊、CAN接口收發(fā)模塊、串口收發(fā)模塊和協(xié)議轉(zhuǎn)換模塊。程序編寫使用了 C8051F502單片機提供的Silicon Laboratories IDE開發(fā)套件,集成KEIL的C語言編譯器進行編譯。程序編寫完成后使用下載器直接進行程序加載與在線調(diào)試。
3.1系統(tǒng)初始化
系統(tǒng)上電后首先進行初始化,單片機初始化流程如圖2所示:
系統(tǒng)初始化包括看門狗設置、時鐘源設置、輸入輸出端口設置、串口初始化、CAN初始化等。具體如下:
a)看門狗初始化:允許看門狗,設置復位時間;
b)時鐘初始化:在本系統(tǒng)中將內(nèi)部晶振作為系統(tǒng)時鐘(24MHz);
c)輸入輸出端口初始化:C8051F502的端口可配置為推挽式和開漏式兩種,在本系統(tǒng)中設置為推挽方式,當配置為推挽方式工作時向端口寫邏輯“0”,引腳被拉倒數(shù)字地;
d)串口初始化:設置串行口工作方式、設置波特率,校驗方式,起始位,停止位,允許響應中斷;
e)CAN初始化:設置CAN總線波特率,發(fā)送和接收消息對象初始化;
f)定時器初始化:設置定時器0為10ms定時,程序中所有的定時任務均由定時器0完成;
g)完成初始化,開啟中斷。
3.2 CAN總線接收和發(fā)送處理
CAN總線的接收處理采用中斷方式,中斷處理流程如圖2所示。
3.3串口接收和發(fā)送處理
串口接收處理同樣采用中斷方式,中斷處理流程如圖3所示。
3.4協(xié)議轉(zhuǎn)換處理
協(xié)議轉(zhuǎn)換模塊主要是實現(xiàn)串口和CAN口的數(shù)據(jù)協(xié)議重新封裝。在CAN接收模塊中,接收到的數(shù)據(jù)幀是由發(fā)送者ID和具體協(xié)議內(nèi)容組成,協(xié)議轉(zhuǎn)換模塊將ID和具體內(nèi)容進行打包,組成一幀數(shù)據(jù)交由串口發(fā)送模塊進行發(fā)送。在串口接收模塊中,根據(jù)串口收到的數(shù)據(jù)內(nèi)容,將數(shù)據(jù)組成CAN標準幀,并通過CAN總線發(fā)送的指定ID上去。
四、結(jié)語
本文使用了帶CAN控制器的C8051F502單片機,搭建了一款CAN總線與串口轉(zhuǎn)換電路,并編寫了相應的程序。經(jīng)過實際測試,可實現(xiàn)串口與CAN總線的數(shù)據(jù)互通,且總線頻率在250K是無丟幀現(xiàn)象。此設計電路簡單,抗干擾能力強,故可廣泛應用于工業(yè)控制領域。
參 考 文 獻
[1] 鄔寬明. CAN總線原理和應用系統(tǒng)設計[M]. 北京航空航天大學出版社, 1996.
[2] 蔡華鋒, 廖冬初, 潘健. C8051F040中CAN控制器的應用[J]. 單片機與嵌入式系統(tǒng)應用. 2005(1): 55-58.