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