智能儀表的CAN接口設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:目前現(xiàn)場(chǎng)總線有以下十幾種,各總線之間規(guī)范不一樣,都有自己的適用范圍,其中CAN (Controller Area Network)總線以其高性能、高可靠性及更獨(dú)特的設(shè)計(jì)越來(lái)越受到人們的重視,并已被公認(rèn)為幾種最有前途的現(xiàn)場(chǎng)總線之一。本文給出了智能儀表中通用的CAN通信接口的硬件設(shè)計(jì)與軟件實(shí)現(xiàn)框圖。
1 前言
在計(jì)算機(jī)數(shù)據(jù)傳輸領(lǐng)域內(nèi),長(zhǎng)期以來(lái)使用RS-232通信標(biāo)準(zhǔn),盡管它們被廣泛的使用,但卻是一種低數(shù)據(jù)速率和點(diǎn)對(duì)點(diǎn)的數(shù)據(jù)傳輸標(biāo)準(zhǔn),無(wú)能力支持更高層次的計(jì)算機(jī)之間的功能操作。同時(shí),在復(fù)雜或大規(guī)模應(yīng)用中(如工業(yè)現(xiàn)場(chǎng)控制或生產(chǎn)自動(dòng)化領(lǐng)域),需要使用大量的傳感器、執(zhí)行器和控制器等,它們通常分布在非常廣的范圍內(nèi),所以,在最底層上的確需要設(shè)計(jì)出一種造價(jià)低廉而又能經(jīng)受工業(yè)現(xiàn)場(chǎng)環(huán)境的通信系統(tǒng),現(xiàn)場(chǎng)總線(Field Bus)在這種背景下產(chǎn)生了。
CAN是一種有效支持分布式控制或?qū)崟r(shí)控制的串行通信網(wǎng)絡(luò),最初是由德國(guó)BOSCH公司為汽車監(jiān)測(cè)、控制系統(tǒng)而設(shè)計(jì)的。由于CAN總線本身的特點(diǎn),其應(yīng)用范圍目前己不再局限于汽車行業(yè),而向過(guò)程工業(yè)、機(jī)械工業(yè)、紡織機(jī)械、農(nóng)用機(jī)械、機(jī)器人、數(shù)控機(jī)床、醫(yī)療器械、傳感器及智能儀表等領(lǐng)域發(fā)展。
智能儀表是自動(dòng)化學(xué)科的重要組成部分。隨著科學(xué)技術(shù)的迅速發(fā)展,尤其是微電子、計(jì)算機(jī)和通信技術(shù)日新月異的變化,智能儀表向著數(shù)字化、網(wǎng)絡(luò)化和智能化方向發(fā)展,智能儀表一方面可以進(jìn)行人機(jī)對(duì)話及與外部?jī)x器設(shè)備對(duì)話,通過(guò)現(xiàn)場(chǎng)總線接連入自動(dòng)測(cè)試系統(tǒng)。另一方面,使用者借助面板上的鍵盤(pán)和顯示屏,可用對(duì)話方式選擇測(cè)量功能、設(shè)置參數(shù)。當(dāng)然,通過(guò)總線中的工業(yè)計(jì)算機(jī)也可獲得測(cè)量節(jié)點(diǎn)的數(shù)據(jù)。
2 CAN的接口設(shè)計(jì)
CAN總線是一種串行數(shù)據(jù)通信協(xié)議,在CAN總線通信接口中集成了CAN協(xié)議的物理層和數(shù)據(jù)鏈路層功能,可以完成對(duì)通信數(shù)據(jù)成幀處理。CAN總線接口的具體的電路設(shè)計(jì)如圖1所示。
筆者用SJA1000作為流量計(jì)的CAN控制器,與CPU(單片機(jī))的I/O口直接相連,再通過(guò)PCA82C250組成CAN總線。這種結(jié)構(gòu)很容易實(shí)現(xiàn)CAN網(wǎng)絡(luò)節(jié)點(diǎn)中的信息收發(fā),從而實(shí)現(xiàn)對(duì)現(xiàn)場(chǎng)的控制。
SJA1000的AD0~AD7連接到MSP420F149的P0口,INT接到P1.0,/CS接到P1.1,/RD連接到P1.2,/WR連到P1.3,ALE連到P1.4,SJA1000的RX0與TX0分別通過(guò)兩個(gè)高速光耦CNW137與PCA82C250相連后,連到CAN總線上。
PCA82C250為CAN總線收發(fā)器,是CAN控制器與CAN總線的接口器件,對(duì)CAN總線差分方式發(fā)送,其RS引腳用于選擇PCA82C250的工作方式:高速方式、斜率方式。RS接地為高速,RS引腳串接一個(gè)電阻后再接地,用于控制上升和下降斜率,從而減小射頻干擾。RS引腳接高電平,PCA82C250處于等待狀態(tài)。此時(shí),發(fā)送器關(guān)閉,接收器處于低電流工作,可以對(duì)CAN總線上的顯性位做出反應(yīng),通知CPU。實(shí)驗(yàn)數(shù)據(jù)表明15~200K為較理想的取值范圍,在這種情況下,可以使用平行線或雙絞線作總線,本文中PCA82C250的斜率電阻為取30K。
CNW137為高速光耦,最高速度為10Mbps,用于保護(hù)CAN總控制器SJA1000。CAN總線的終端匹配電阻起相當(dāng)重要的作用,不合適的電阻會(huì)使數(shù)據(jù)通信的抗干擾性及可靠性大大降低,甚至無(wú)法通信,范圍為108~132Ω,本文使用的電阻為124Ω。
2.1 SJA1000的功能
CAN通信協(xié)議主要由CAN控制器完成。SJA1000是適用于汽車和一般工業(yè)環(huán)境控制器局域網(wǎng)(CAN)的高集成度獨(dú)立控制器,具有完成高性能通信協(xié)議所要求的全部必要特性,具有簡(jiǎn)單總線連接的SJA1000可完成物理層和數(shù)據(jù)鏈路層的所有功能,應(yīng)用層功能可由微控制器完成,SJA1000為其提供了一個(gè)多用途的接口。
SJA1000是一個(gè)獨(dú)立的CAN控制器,它是Philips公司另一個(gè)CAN控制器PCA82C200的后繼產(chǎn)品,在軟件和引腳上均與PCA82C200兼容。但它不僅僅是PCA82C200的一個(gè)簡(jiǎn)單替代產(chǎn)品,它增加了許多新的功能,使得其性能更佳,尤其適用于對(duì)系統(tǒng)優(yōu)化、診斷和維護(hù)要求比較高的場(chǎng)合。
SJA1000的功能框圖如圖2所示,由以下幾部分構(gòu)成:接口管理邏輯;發(fā)送緩沖器,能夠存儲(chǔ)1個(gè)完整的報(bào)文(擴(kuò)展的或標(biāo)準(zhǔn)的);驗(yàn)收濾波器;接收FIFO;CAN核心模塊。
2.2 82C250
SJA1000的一端與單片機(jī)相連,另一端與CAN總線相連。但是,為了提高單片機(jī)對(duì)CAN總線的驅(qū)動(dòng)能力,可以把82C250作為CAN控制器和物理總線間的接口,以提供對(duì)總線的差動(dòng)發(fā)送能力和對(duì)CAN控制器的差動(dòng)接收能力。82C250的主要特性如下:
·與ISO/DIS11898標(biāo)準(zhǔn)兼容;
·高速(最高可達(dá)1 Mb/s );
·具有抗汽車環(huán)境下的瞬間干擾和保護(hù)總線能力;
·降低射頻干擾的斜率控制
·熱保護(hù);
·防護(hù)電池與地之間發(fā)生短路
·低電流待機(jī)方式;
·某個(gè)節(jié)點(diǎn)掉電不會(huì)影響總線
3 CAN通信程序框圖
SJA1000操作期間,在上電之前必須配置控制線路(中斷、復(fù)位、片選等)用于建立與CAN控制器之間進(jìn)行通信的硬件連接。初始化、CAN通信采用中斷方式數(shù)據(jù)發(fā)送和接收子程序,其流程如圖3、圖4和圖5所示。
如果在上電后獨(dú)立CAN控制器在引腳17得到1個(gè)復(fù)位脈沖(低電平),它能夠進(jìn)入復(fù)位模式。在對(duì)SJA1000寄存器設(shè)置前,CAN控制器通過(guò)讀復(fù)位模式/請(qǐng)求標(biāo)志來(lái)檢查是否已達(dá)到復(fù)位模式,因?yàn)橐渲眯畔⒌募拇嫫鲀H在復(fù)位模式才能寫(xiě)入,涉及對(duì)控制寄存器(CR),驗(yàn)收碼寄存器(ACR ),驗(yàn)收屏蔽寄存器(AMR ),總線定時(shí)寄存器(BTRO和BTR1)和輸出控制寄存器(OCR)的初始化編程。
時(shí)鐘分頻寄存器,可以選擇BasicCAN或PeliCAN工作模式,設(shè)置CLKOUT管腳使能用來(lái)選擇頻率,設(shè)置是否使用旁路CAN輸入比較器和是否使用TX 1輸出被用作專門(mén)的接收中斷輸出。
驗(yàn)收代碼和驗(yàn)收屏蔽寄存器的設(shè)置可以過(guò)濾信息,為收到的信息定義驗(yàn)收代碼為和驗(yàn)收代碼相關(guān)位比較定義驗(yàn)收屏蔽代碼。
4 結(jié)論