基于單片機(jī)的CAN總線接口轉(zhuǎn)換卡設(shè)計(jì)
控制器局域網(wǎng)(Controller Area Network,簡(jiǎn)稱CAN)是德國(guó)奔馳公司20世紀(jì)80年代為解決汽車眾多控制設(shè)備與儀器儀表之間的數(shù)據(jù)交換開發(fā)的一種串行通信協(xié)議。它作為現(xiàn)場(chǎng)總線的一種廣泛應(yīng)用于各種工業(yè)現(xiàn)場(chǎng),根據(jù)不同的需要或以主從方式、或以多主方式工作。CAN總線使用的通信介質(zhì)為雙絞線或其他電纜,傳輸速率可達(dá)lMb/s。CAN總線與其他通信網(wǎng)的不同之處有二:一是報(bào)文傳送中不包含目標(biāo)地址,它是以全網(wǎng)廣播為基礎(chǔ),各接收站根據(jù)報(bào)文中反映數(shù)據(jù)性質(zhì)的標(biāo)識(shí)符過濾報(bào)文,該收的收下,不該收的棄而不用。其好處是可在線上網(wǎng)下網(wǎng)、即插即用和多站接收;二是特別強(qiáng)化了對(duì)數(shù)據(jù)安全性的關(guān)注,滿足控制系統(tǒng)及其他較高數(shù)據(jù)要求的系統(tǒng)需求。鑒于其極高的可靠性、獨(dú)特的設(shè)計(jì)、高速率和傳輸距離較長(zhǎng)等,特別適合于工業(yè)現(xiàn)場(chǎng)監(jiān)控設(shè)備的互連。
2 系統(tǒng)簡(jiǎn)介
CAN總線采用總線式網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),如圖l所示。采用CAN總線特有的多主傳送方式,各個(gè)分機(jī)根據(jù)需要有數(shù)據(jù)時(shí)才主動(dòng)發(fā)送,無需主機(jī)不停的輪詢,從而節(jié)省網(wǎng)絡(luò)上的數(shù)據(jù)流量,提高傳輸效率。
現(xiàn)有的監(jiān)控設(shè)備大多采用的是RS一232或RS一485串行通信,為在此基礎(chǔ)上組建CAN通信網(wǎng)絡(luò),筆者設(shè)計(jì)了一款便攜式CAN總線接口轉(zhuǎn)換卡,該轉(zhuǎn)換卡可采用鋰電池作為供電電源,功耗低、體積小、重量輕,可滿足便攜式需要。
3 系統(tǒng)硬件結(jié)構(gòu)設(shè)計(jì)
德州儀器公司的MSP430系列單片機(jī)是一種超低功耗微控制器,電壓范圍為1.8V~3.6V。該處理器通過16位RISC系統(tǒng)、16位CPU、集成寄存器和常量發(fā)生器來獲得最大代碼效率。MSP430系列超低功耗微控制器是應(yīng)用于工業(yè)控制、數(shù)字化電機(jī)控制、手持式儀表等設(shè)備中的理想微控制器。本設(shè)計(jì)選用MSP430F449型單片機(jī),它具有豐富的片上模塊:最多8路12位A/D轉(zhuǎn)換器、48個(gè)I/O端口、2個(gè)UART看門狗、2個(gè)內(nèi)置16位定時(shí)器、可在線仿真的Flash內(nèi)存、7路PWM輸出、LCD驅(qū)動(dòng)等。
便攜式CAN總線接口轉(zhuǎn)換卡的電氣結(jié)構(gòu)原理框圖如圖2所示,它由電源模塊、CAN通信接口電路、串口電平轉(zhuǎn)換電路、緩存和LCD模塊組成。
3.1 CAN通信接口電路
系統(tǒng)硬件以Philips公司的SJA1000型CAN總線控制器為核心,它是一款獨(dú)立的CAN總線控制器,主要用于工業(yè)環(huán)境中。它也是Philips半導(dǎo)體PCA82C200型CAN控制器(Basic CAN)的替代產(chǎn)品,經(jīng)過簡(jiǎn)單總線連接的SJA1000可完成CAN總線的物理層和數(shù)據(jù)鏈路層的所有功能。SJA1000由CAN核心模塊、發(fā)送緩沖區(qū)、接口FIFO、驗(yàn)收濾波器和接口管理邏輯組成。CAN核心模塊主要負(fù)責(zé)CAN信息幀的收發(fā)和CAN協(xié)議的實(shí)現(xiàn),接口管理邏輯負(fù)責(zé)SJA1000與主控制器的接口。在進(jìn)行數(shù)據(jù)傳輸時(shí),主控制器把標(biāo)識(shí)符和數(shù)據(jù)送入發(fā)送緩沖區(qū)后請(qǐng)求發(fā)送,從而啟動(dòng)CAN核心模塊讀取發(fā)送緩存區(qū)中的數(shù)據(jù),再按CAN協(xié)議封裝成完整的CAN信息幀,通過收發(fā)器發(fā)往總線,發(fā)送緩存區(qū)的容量為13字節(jié)。驗(yàn)收濾波器單元對(duì)接收到的信息進(jìn)行處理后送到接收FIFO中,接收FIFO為64字節(jié)。PCA82C250型CAN總線收發(fā)器是CAN控制器與物理總線之間的接口,它提供了CAN控制器向總線的差動(dòng)發(fā)送、接收能力。該收發(fā)器依靠引腳8(RS)的不同連接可以選擇3種不同的工作方式:高速、斜率控制和待機(jī)方式。通過RS引腳對(duì)地連接的電阻器可對(duì)總線進(jìn)行斜率控制,斜率正比于引腳RS上的電流輸出。對(duì)于傳輸速率要求較高的應(yīng)用場(chǎng)合,通常將引腳8直接接地以選擇高速方式。在此方式下,發(fā)送器輸出晶體管簡(jiǎn)單地以盡可能快的速度啟閉,不采取任何措施限制上升和下降斜率,因此必須采用屏蔽電纜以避免射頻干擾。CAN控制器的發(fā)送和接收端口分別通過1個(gè)光電隔離電路與PCA82C250連接,有效地抑制了總線引入的干
擾。
3.2 串口電平轉(zhuǎn)換模塊
在本設(shè)計(jì)中,MSP430F449只用1個(gè)USART接口,而CAN轉(zhuǎn)換卡集成了RS232、RS485 2個(gè)通信模塊,設(shè)計(jì)中通過DIP開關(guān)選擇接口類型。RS232和RS485串口電平轉(zhuǎn)換模塊分別選用Maxim公司的MAX3221和MAX3485。
3.3 電源模塊
整個(gè)系統(tǒng)除由鋰電池供電外,還可以用小型變壓器等外部電源供電,以滿足不同場(chǎng)合的需求。選用TPS7333作為MSP430F449的穩(wěn)壓電源輸出3.3V的系統(tǒng)供電電壓。為保證數(shù)據(jù)正常傳輸,電源電路中還配有bq24012型電池充電管理電路,以便在電池電量較低、可能會(huì)影響正常數(shù)據(jù)傳輸時(shí)及時(shí)報(bào)警,提醒更換電池或充電。
3.4 緩存和LCD模塊
為了節(jié)省PC的工作時(shí)間,設(shè)計(jì)時(shí)用TMS44400型動(dòng)態(tài)存儲(chǔ)器擴(kuò)展動(dòng)態(tài)存儲(chǔ)區(qū)間,傳輸數(shù)據(jù)時(shí)首先讀取報(bào)頭信息以決定是實(shí)時(shí)傳輸還是緩存操作。MSP430F449帶有液晶驅(qū)動(dòng)模塊,設(shè)計(jì)中選用東顯公司的EDS805型液晶顯示模塊,用它實(shí)時(shí)顯示系統(tǒng)的狀態(tài)特性、數(shù)據(jù)的傳輸速度、剩余時(shí)間等,它還可以進(jìn)行電源欠壓報(bào)警。
4 軟件設(shè)計(jì)
MSP430的內(nèi)核結(jié)構(gòu)采用具有高透明格式的精簡(jiǎn)指令(RSIC)設(shè)計(jì)。CAN信息的接收和發(fā)送一樣,是由CAN控制器自動(dòng)完成的,程序只需從相應(yīng)的緩存器中讀取相應(yīng)的數(shù)據(jù),再進(jìn)行相應(yīng)的處理即可。在此系統(tǒng)中,單片機(jī)完成初始化任務(wù)后進(jìn)入低功耗睡眠狀態(tài),任一中斷均可將其喚醒,轉(zhuǎn)而執(zhí)行相應(yīng)的中斷服務(wù)子程序。系統(tǒng)的2個(gè)中斷源分別為PC串口發(fā)送和下位機(jī)CAN信息接收,這樣做的好處是盡可能地避免由于數(shù)據(jù)超限而引起的數(shù)據(jù)重發(fā)。圖3示出系統(tǒng)CAN初始化流程,圖4示出發(fā)送中斷服務(wù)程序流程。由于篇幅關(guān)系,本文略去接收中斷服務(wù)程序流程,其流程大致與發(fā)送流程相反。
5 結(jié)束語(yǔ)
本文介紹了CAN總線通信接口轉(zhuǎn)換卡的軟硬件設(shè)計(jì),期望給研究CAN總線應(yīng)用的設(shè)計(jì)人員提供一些借鑒和幫助。所介紹的CAN總線通信接口轉(zhuǎn)換卡的結(jié)構(gòu)簡(jiǎn)單且抗干擾能力強(qiáng),非常適用于構(gòu)成中小型分布式測(cè)控網(wǎng)絡(luò)。隨著支持CAN協(xié)議的器件不斷增多,CAN器件的價(jià)格會(huì)進(jìn)一步降低,在自動(dòng)化領(lǐng)域中的應(yīng)用也會(huì)越來越廣泛。
評(píng)論