基于CAN控制器SJA1000的智能高速控制系統(tǒng)設(shè)計(jì)
關(guān)鍵詞:CAN總線;SJA1000;智能控制;系統(tǒng)設(shè)計(jì)
SJA1000的特點(diǎn)及功能
SJA1000是一種應(yīng)用于汽車和一般工業(yè)環(huán)境的獨(dú)立CAN總線控制器,經(jīng)過簡單總線連接可完成CAN總線的物理層和數(shù)據(jù)鏈路層的所有功能。其硬件與軟件設(shè)計(jì)和PCA82C200的基本CAN模式BasicCAN兼容。同時,新增加的增強(qiáng)CAN模式PeliCAN還可支持CAN2.0B協(xié)議。SJA1000的主要特性如下 :1、管腳及電氣特性與獨(dú)立CAN總線控制器PCA82C200兼容 ;2、軟件與PCA82C200兼容(缺省為基本CAN模式);3、擴(kuò)展接收緩沖器(64字節(jié)FIFO);4、支持CAN2.0B時支持11和29位標(biāo)識符;5、位通訊速率為1Mbits/s;6、增強(qiáng)CAN模式(PeliCAN);7、采用24MHz時鐘頻率;8、支持多種微處理器接口;9、可編程CAN輸出驅(qū)動配置;10、工作溫度范圍為-40~+125℃。
CAN控制模塊構(gòu)成
CAN控制模塊由接口管理邏輯、發(fā)送緩沖器、接收緩沖器(RXFIFO)、接收過濾器、位流處理器 (BSP)、位時序邏輯 (BTL)和錯誤管理邏輯(EML)組成。
圖1 智能控制系統(tǒng)硬件原理圖
新增功能
PeliCAN模式,將識別碼從11位擴(kuò)展到29位,使CAN總線的節(jié)點(diǎn)數(shù)大大地?cái)U(kuò)大,從而使得CAN總線的適用范圍更加廣泛。除了擴(kuò)展了識別碼,PeliCAN模式還有以下擴(kuò)展功能:1、可讀 /寫訪問的錯誤計(jì)數(shù)器;2、可編程的錯誤計(jì)數(shù)器;3、最近一次錯誤代碼寄存器;4、對每一個CAN總線錯誤的中斷;5、具體控制為控制的仲裁丟失中斷;6、單次發(fā)送 (無重發(fā));7、只聽模式 (無確認(rèn),無活動的出錯標(biāo)志);8、支持熱插拔 (軟件位速率檢測);9、接收過濾器擴(kuò)展 (4字節(jié)代碼,4字節(jié)屏蔽);10、自身信息接收 (自接收請求)。以上擴(kuò)展功能為用戶更好地識別和處理發(fā)送和接收錯誤、更好地應(yīng)用和調(diào)試CAN控制器提供了方便。
智能控制系統(tǒng)硬件電路設(shè)計(jì)
根據(jù)SJA1000的功能特點(diǎn)以及課題的實(shí)際需要,我們選用SJA1000作為CAN控制器,并且使用了CAN控制器接口芯片PCA82C250,PCA82C250是CAN協(xié)議控制器和物理總線之間的接口。此器件對總線提供差動發(fā)送能力,對CAN控制器提供差動接收能力。整個系統(tǒng)以Intel 16位單片機(jī)80C196KC為核心。INTEL 80C196KC采用68腳PLCC封裝形式,內(nèi)部尋址采用寄存器結(jié)構(gòu),從而避免了以往8位單片機(jī)只能用累加器參與尋址而產(chǎn)生的瓶頸效應(yīng),大大提高了工作效率。其內(nèi)部設(shè)有256個字節(jié)的RAM,帶有28個中斷源,可形成16個中斷矢量。在16MHz的晶振下,16乘16位的乘法只需1.75ms,32除16位除法指令只需3.2ms,尤其適合于高采樣頻率快速控制系統(tǒng),它本身還帶有3路PWM輸出引腳,可直接驅(qū)動三相電動機(jī),內(nèi)部設(shè)有3個H窗口和1個V窗口,使特殊功能寄存器的數(shù)量和保護(hù)功能倍增。由于采用的是CMOS工藝,其功耗小,并有掉電保護(hù)和閑置功能。因此,采用INTEL公司生產(chǎn)的16位單片機(jī)80C196KC機(jī)作為控制系統(tǒng)的主控制器是十分理想的選擇。SJA1000在智能控制系統(tǒng)中的硬件配置與CAN總線接口的電路如圖 1所示。硬件電路中使用 PCA82C250的目的是為了增大通信距離,提高系統(tǒng)的瞬間抗干擾能力,保護(hù)總線,降低射頻干擾,實(shí)現(xiàn)熱防護(hù)等。
SJA1000在電路中是一個總線接口芯片,實(shí)現(xiàn)從上位機(jī)PC-CAN接口到現(xiàn)場微處理器之間的數(shù)據(jù)通信。對于微處理器而言,SJA1000是一個總線接口,SJA1000片內(nèi)的存儲單元相對80C196KC來說是片外的數(shù)據(jù)存儲器,因此,可以按照擴(kuò)展片外數(shù)據(jù)存儲器的形式來訪問SJA1000的寄存器地址。80C196KC是CAN控制器的微處理器,把80C196KC的ALE、RD、WR和 SJA1000的ALE、RD、WR相連就構(gòu)成一個最小系統(tǒng)節(jié)點(diǎn)。80C196KC通過地址總線經(jīng)GAL譯碼來選通 SJA1000,并由此決定CAN控制器各寄存器的地址,通過讀、寫外部數(shù)據(jù)存儲器的形式來訪問 SJA1000。在系統(tǒng)中我們將SJA1000的TX1腳懸空,RX1引腳接地,形成CAN協(xié)議所要求的電平邏輯。該電路的主要功能就是通過CAN總線接收來自上位機(jī)的數(shù)據(jù)進(jìn)行分析組態(tài),然后下傳給下位機(jī)的控制電路實(shí)現(xiàn)控制功能,當(dāng)智能控制系統(tǒng)接收到下位機(jī)的上傳數(shù)據(jù),SJA1000的中斷輸出INT腳就會被激活,出現(xiàn)一個由高電平到低電平的躍變,產(chǎn)生一個中斷,從而引發(fā)微處理器80C196KC產(chǎn)生中斷,通過中斷處理程序接收每一幀信息并通過CAN總線上傳給上位機(jī)進(jìn)行分析,以便及時糾正誤碼、錯碼。
在進(jìn)行電路設(shè)計(jì)時應(yīng)當(dāng)注意:為進(jìn)一步提高系統(tǒng)抗干擾能力,在CAN控制器SJA1000和CAN控制器接口82C250之間加接6N137光電隔離芯片,并采用DC-DC變換器隔離電源;通信信號傳輸?shù)綄?dǎo)線的端點(diǎn)時會發(fā)生反射,反射信號會干擾正常信號的傳輸,因而總線兩端兩個124W的電阻對匹配總線阻抗起著相當(dāng)重要的作用,忽略掉它們,會使數(shù)據(jù)通信的抗干擾性和可靠性大大降低,甚至無法通信;82C250第8腳與地之間的電阻RS稱為斜率電阻,它的取值決定了系統(tǒng)處于高速工作方式還是斜率控制方式。把該引腳直接與地相連,系統(tǒng)將處于高速工作方式。在這種方式下,為避免射頻干擾,建議使用屏蔽電纜作總線;而在波特率較低、總線較短時,一般采用斜率控制方式,上升和下降的斜率取決于RS的阻值。通常情況下,15KW~200KW為RS較理想的取值范圍。在這種方式下,可以使用平行線或雙絞線作總線。
系統(tǒng)軟件設(shè)計(jì)
系統(tǒng)軟件設(shè)計(jì)的指導(dǎo)思想是系統(tǒng)上電后首先對80C196KC和SJA1000進(jìn)行初始化,以確定工作主頻、波特率、輸出特性等,然后通過查詢方式獲取模數(shù)轉(zhuǎn)換采樣值,并把該值通過SJA1000傳送到CAN總線上由上位PC機(jī)進(jìn)行顯示控制,而對CAN總線上來的信息則采用中斷方式,系統(tǒng)每接收到一幀信息,便產(chǎn)生一次中斷以觸發(fā)微處理器進(jìn)入中斷,在中斷服務(wù)程序中讀取該幀信息并傳送到現(xiàn)場。為防止出現(xiàn)死機(jī)和干擾,程序中還采用看門狗技術(shù)進(jìn)行定時監(jiān)控。以下CAN總線的初始化設(shè)計(jì),假設(shè)SJA1000的首址是A000H:
CR EQU A 0 0 0H ;控制寄存器
CMR EQU A 0 0 1H ;命令寄存器
SR EQU A 0 0 2H ;狀態(tài)寄存器
IR EQU A 0 0 3H ;中斷寄存器
ACR EQU A 0 0 4H ;驗(yàn)收碼寄存器
AMR EQU A 0 0 5H ;驗(yàn)收屏蔽寄存器
BTR0 EQU A 0 0 6H ;總線定時寄存器 0
BTR1 EQU A 0 0 7H ;總線定時寄存器 1
OCR EQU A 0 0 8H ;輸出控制寄存器
DI
LDB CL , # 03H
STB CL ,CR ;開放接收中斷,復(fù)位
請求位置1,以開始初始化。
LDB CL , # 01H
STB CL ,ACR ;將節(jié)點(diǎn)1標(biāo)識符送ACR
LDB CL , # 0FEH
STB CL ,AMR ;驗(yàn)收濾波
LDB CL , # 0 0H
STB CL ,BTR0 ;傳送波特率為
250kbps
LDB CL , # 1 4H
STB CL ,BTR1 ;定義位周期寬度 ,
采樣點(diǎn)位置及采樣次數(shù)選
LDB CL , # 0AAH
STB CL ,OCR ;選擇正常輸出方式
,建立輸出驅(qū)動器的配置。
LDB CL, # 1AH
STB CL,CR ;復(fù)位請求位置0,初
始化結(jié)束
EI
對CAN控制器進(jìn)行初始化,實(shí)際上就是對ACR、AMR、BTR0、BTR1、OCR這些寄存器進(jìn)行訪問。只有當(dāng)控制寄存器CR中的復(fù)位請求位為高時,訪問才被允許,否則既寫不進(jìn)去,也讀不出正確的內(nèi)容。對CR進(jìn)行第一次寫操作,要設(shè)定將要開放的中斷類型,并置位復(fù)位請求,允許初始化開始。對ACR、AMR進(jìn)行寫操作,要界定對什么樣的報(bào)文予以接收,因此有時稱它們?yōu)轵?yàn)收濾波器。當(dāng)滿足以下兩個條件之一,并存在空的接收緩存器(RBF)時,完整報(bào)文可被正確接收。
條件一 :ACR與報(bào)文標(biāo)識符的高 8位在AMR為“0”相關(guān)位上對應(yīng)相等。
條件二 :AMR=0FFH,即ACR的所有位均為不相關(guān)(或屏蔽)位。
這兩個寄存器也是編排標(biāo)識符的基本依據(jù)。
對BTR0進(jìn)行操作,可決定波特率預(yù)分頻器 (BRP)和同步跳轉(zhuǎn)寬度(SJW)的數(shù)值;對BTR1進(jìn)行寫操作,可決定位周期的寬度,采樣點(diǎn)的位置及在每個采樣點(diǎn)進(jìn)行采樣的次數(shù)。這兩個寄存器的內(nèi)容,可唯一確定波特率及同步跳轉(zhuǎn)寬度。例如:程序中BTR0 =00H ,BTR1=14H ,晶振頻率為16MHz時,采樣時鐘周期tSCL等于兩倍的振蕩器時鐘周期。波特率剛好為1Mbps,同步跳轉(zhuǎn)寬度為一個tSCL。
在編寫程序時,還需特別注意的是,一個系統(tǒng)中的所有節(jié)點(diǎn)BTR0和BTR1的內(nèi)容都應(yīng)相同,否則控制系統(tǒng)將無法和上位機(jī)進(jìn)行通信。對OCR進(jìn)行寫操作,可確定CAN控制器的輸出方式,并建立起CAN總線要求的電平邏輯所需輸出驅(qū)動器的配置。對CR進(jìn)行第二次操作主要是清復(fù)位請求位,使SJA1000返回正常運(yùn)行狀態(tài)。成功的初始化SJA1000后,系統(tǒng)就可以應(yīng)用它來傳輸報(bào)文。系統(tǒng)總體程序框圖及中斷服務(wù)程序框圖見本刊網(wǎng)站。
結(jié)語
實(shí)踐表明,SJA1000是一種較好的CAN總線控制器件,在PeliCAN模式下,其識別碼達(dá)29位,因而可滿足各種應(yīng)用場合。在自動化控制系統(tǒng)中,合理安排這29位識別碼可以使許多問題得以簡化。此外PeliCAN模式增加的各種功能,如:各種錯誤處理功能大大地提高了用戶程序處理各種通信錯誤的能力;支持熱插拔和自身信息接收功能,使用戶不必事先知道預(yù)設(shè)的波特率,從而大大地方便了通信的調(diào)試。■
參考文獻(xiàn)
1 PHLIPS Semiconductor公司. DATA HANDBOOK 80C51-based 8-bit Microcontrollers,1995.
2 肖海榮 周風(fēng)余.基于SJA1000的CAN總線系統(tǒng)智能節(jié)點(diǎn)設(shè)計(jì) 計(jì)算機(jī)自動測量與控制 2001、9(2)
3 鄔寬明.CAN總線原理和應(yīng)用系統(tǒng)設(shè)計(jì),北京航空航天大學(xué)出版社
4 SJA1000獨(dú)立CAN控制器介紹,廣州周立功單片機(jī)發(fā)展有限公司.
5 獨(dú)立CAN器件SJA1000的應(yīng)用,南京工程學(xué)院學(xué)報(bào),2002年3月.
dc相關(guān)文章:dc是什么
分頻器相關(guān)文章:分頻器原理 晶振相關(guān)文章:晶振原理 雙絞線傳輸器相關(guān)文章:雙絞線傳輸器原理
評論