由于can總線具有諸多優(yōu)點(diǎn),它的應(yīng)用范圍遍及從高速網(wǎng)絡(luò)到低成本的多線路網(wǎng)絡(luò)。在自動化電子領(lǐng)域的汽車發(fā)動機(jī)控制部件、傳感器、抗滑系統(tǒng)、工業(yè)自動化、建筑物環(huán)境控制、機(jī)床、電梯控制、醫(yī)療設(shè)備等領(lǐng)域得到了較為廣泛的應(yīng)用。
sja1000是一種獨(dú)立的can控制器" title="控制器">控制器,主要用于移動目標(biāo)和一般工業(yè)環(huán)境中的區(qū)域網(wǎng)絡(luò)控制。它是philips半導(dǎo)體公司pca82c200can控制器(basiccan)的替代產(chǎn)品,而且它增加了一種新的操作模式——pelican,這種模式支持具有很多新特性的can2.0b協(xié)議。sja1000的基本特性以及電氣參數(shù)均與pca82c200獨(dú)立can控制器兼容,具有pca82c200模式(即默認(rèn)的basiccan模式),有擴(kuò)展的接收緩沖器64字節(jié),先進(jìn)先出(fifo),支持can2.0a和can2.0b協(xié)議,支持11位和29位標(biāo)識碼,通信位速率可達(dá)1mbps。
獨(dú)立的can控制器芯片需要外接一個處理器,接受外部cpu的控制才能運(yùn)行。如果處理器內(nèi)帶有can控制器,那么無疑會大大簡化應(yīng)用系統(tǒng)的硬件設(shè)計(jì),系統(tǒng)的可靠性也會有很大的提高。所以出現(xiàn)了很多帶有can控制器的處理器,philips公司的p8xc591單片機(jī)就是其中的一種,它完全履行can2.0b規(guī)范,并提供一個直接從sja1000獨(dú)立can控制器的軟件移植路徑。
2 兩種通信方式介紹
2.1 獨(dú)立的can控制器sja1000通信方式
sja1000是一種獨(dú)立的can控制器,主要用于移動目標(biāo)和一般工業(yè)環(huán)境中的區(qū)域網(wǎng)絡(luò)控制。它是philips公司pca82c200can控制器(basiccan)的替代產(chǎn)品,它在完全兼容pca82c200的基礎(chǔ)上,增加了一種新的工作模式pelican,sja1000完全支持具有很多新特性的can2.0b協(xié)議。sja1000的工作模式通過其內(nèi)部的時(shí)鐘分頻寄存器(cdr)中的can模式位來選擇,硬件復(fù)位時(shí)默認(rèn)模式是basiccan工作模式[1]。
sja1000可以支持多種微處理器的時(shí)序特性,如intel模式或motorola模式。sja1000與微處理器的接口非常簡單,微處理器以訪問外部存儲器的方式來訪問sja1000,在設(shè)計(jì)接口電路時(shí),sja1000的片選地址應(yīng)與其他外部存儲器的片選地址在邏輯上無沖突。
sja1000有2種模式可以供微處理器訪問其內(nèi)部寄存器,2種模式下的訪問是有區(qū)別的,這2種模式分別是復(fù)位模式和工作模式,當(dāng)硬件復(fù)位、控制器掉線、置位請求位時(shí),sja1000進(jìn)入復(fù)位模式。當(dāng)清楚其內(nèi)部控制寄存器(cr)中的復(fù)位請求位時(shí),sja1000進(jìn)入工作模式,有些內(nèi)部的寄存器只能在復(fù)位模式下訪問,有些寄存器只能在工作模式下訪問,而有些寄存器在這2種模式下都可以訪問。
2.2 philips單片機(jī)p8xc591的通信方式
philips半導(dǎo)體公司的p8xc591是一個用先進(jìn)的coms工藝制造的高性能8位單片機(jī),具有片內(nèi)can控制器。它從mcs-51微控制器家族派生而來,采用了強(qiáng)大的80c51指令集,并成功的包括了philips半導(dǎo)體sja1000,can控制器的pelican功能,提供了專用的硬件,其方框圖如圖1所示。全靜態(tài)內(nèi)核提供了擴(kuò)展的節(jié)電方式。振蕩器可停止和恢復(fù)而不會丟失數(shù)據(jù)。改進(jìn)的1:1內(nèi)部時(shí)鐘分頻器在12mhz外部時(shí)鐘速率時(shí)實(shí)現(xiàn)500ns指令周期[1]。
圖1 p8xc591的方框圖
p8xc591是一個高性能的微控制器,其專注的硬件結(jié)構(gòu)及增強(qiáng)型的philips“rx+內(nèi)核”使得其可以廣泛用于工業(yè)控制和汽車領(lǐng)域。片上自帶的can控制器為can的應(yīng)用提供許多專用的硬件功能。p8xc591完全履行can2.0b規(guī)范并提供一個直接從sja1000獨(dú)立can控制器的軟件移植路徑。p8xc591具有can的擴(kuò)充特性,其中包括增強(qiáng)型接收濾波器、支持系統(tǒng)維護(hù)、診斷、系統(tǒng)優(yōu)化以及接收fifo特性等,使得p8xc591具有非常廣泛的應(yīng)用領(lǐng)域。
p8xc591包含的嵌入式can控制器具有下列功能模塊:can內(nèi)核模塊,根據(jù)can2.0b規(guī)范控制can幀的發(fā)送和接收;can接口模塊,包含了5個實(shí)現(xiàn)cpu與can控制器連接的特殊功能寄存器,對重要can寄存器的訪問通過快速自動增加的尋址特性和對特殊功能寄存器的位尋址來實(shí)現(xiàn);can控制器的發(fā)送緩沖區(qū)模塊,能夠保存一個完整的can信息擴(kuò)展或標(biāo)準(zhǔn)幀格式,只要通過cpu啟動發(fā)送信息,字節(jié)就從發(fā)送緩沖區(qū)傳輸?shù)絚an內(nèi)核模塊,當(dāng)接收一個信息時(shí),can內(nèi)核模塊將串行位流轉(zhuǎn)換成并行數(shù)據(jù)輸入到接收濾波器,通過該可編程濾波器,p8xc591確定實(shí)際接收到的信息,所有由接收濾波器接收的數(shù)據(jù)都保存在接收fifo(64字節(jié))中,取決于操作模式和數(shù)據(jù)長度的不同該接收緩沖區(qū)最多可保存21個can信息。這使用戶在指定系統(tǒng)的中斷服務(wù)和中斷優(yōu)先級時(shí)有更多的靈活性,因?yàn)閿?shù)據(jù)溢出的可能性大大降低。
除了普通的can特性以外,p8xc-591還提供增強(qiáng)型pelican。pelican具有4個獨(dú)立可配置的接收濾波器組,每個組都有4個可選的接收濾波器配置;每個接收濾波器都有32位區(qū)分符、32位代碼和32位屏蔽;所有濾波器配置都可在運(yùn)行中改變;支持更高層協(xié)議的接收濾波器;接收fifo特性;只聽模式及自檢測模式;只有達(dá)到fifo接收中斷級才能產(chǎn)生接收中斷;在接收到高優(yōu)先級數(shù)據(jù)幀時(shí)立即產(chǎn)生接收中斷;支持系統(tǒng)維護(hù)、診斷和優(yōu)化等特性[2]。
3 兩種通信方式比較
當(dāng)獨(dú)立的can控制器進(jìn)行數(shù)據(jù)的接收和發(fā)送時(shí),在設(shè)計(jì)微處理器與sja1000的接口電路時(shí),首先要選擇微處理器和sja1000的接口模式,其次要注意sja1000的片選地址應(yīng)與其他的外部存儲器無沖突,還應(yīng)注意sja1000的復(fù)位電路應(yīng)為低電平有效等一些問題,其硬件電路的設(shè)計(jì)相對來說是非常復(fù)雜的。如果有一點(diǎn)問題沒有注意到,就有可能造成數(shù)據(jù)無法發(fā)送和接收。
sja1000內(nèi)部寄存器分布于0~31連續(xù)的地址空間中,包括控制段和信息緩沖區(qū)??刂贫卧诔跏蓟d入時(shí)可被編程來配置通訊參數(shù)(例如:波特率、位時(shí)序等)。微控制器也是通過這個段來控制can總線上的通訊狀態(tài)。信息緩沖區(qū)分為發(fā)送緩沖區(qū)和接收緩沖區(qū)。微處理器將要發(fā)送的信息寫入發(fā)送緩沖區(qū),然后啟動發(fā)送命令后,可進(jìn)行報(bào)文的發(fā)送。符合接收條件的接收到的信息放入接收緩沖區(qū),微處理器可以讀出這些信息,并進(jìn)行處理。
硬件電路的設(shè)計(jì)如果采用了philips公司的自帶can控制器的單片機(jī)p8xc591,就不會存在以上的問題。由于p8xc591含有片上的can控制器,透過txdc、rxdc兩個管腳,p8xc591就可以直接和外部的can節(jié)點(diǎn)交換數(shù)據(jù)。p8xc591自帶的can控制器在軟件上是向上兼容sja1000的。p8xc591所連接的can節(jié)點(diǎn)電路所需要的外部元件僅僅是一個晶振加兩個電容驅(qū)動片內(nèi)振蕩器、一個連接到復(fù)位腳的電阻、電容。使用片內(nèi)上電復(fù)位電路以及一個收發(fā)器pca82c250用于將p8xc591連接到can總線。所以我們能夠很方便的使用,而且不必考慮很多外部電路的連接,使我們能夠避免很多容易出現(xiàn)的錯誤。
p8xc591通過對can的特殊功能寄存器如地址寄存器(canadr)、數(shù)據(jù)寄存器(candat)、模式寄存器(canmod)、控制寄存器(cancon)、狀態(tài)寄存器(cansta)、總線定時(shí)寄存器(btr0,btr1)等的設(shè)置以及對收發(fā)緩沖區(qū)的讀寫,從而完成和其它c(diǎn)an節(jié)點(diǎn)的數(shù)據(jù)交換。
4 結(jié)束語
通過本文的介紹,我們對獨(dú)立can控制器sja1000和philips公司的p8xc591單片機(jī)有了進(jìn)一步的了解,通過后者,我們可以把硬件電路連接兩個處理器所完成的任務(wù),簡化為只用一個微控制器就可以完成。這樣大大簡化了電路的硬件連接,而且也提高了系統(tǒng)的可靠性。