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