| 摘要:介紹CAN總線控制器SJA1000;給出其在CAN總線系統(tǒng)節(jié)點中的應(yīng)用方法、節(jié)點電路原理圖及初始化程序;針對用戶SJA1000容易出現(xiàn)的問題進行了解說。 關(guān)鍵詞:CAN總線 SJA1000 節(jié)點 單片機 CAN總線是德國Bosch公司20世紀80年代初,為解決現(xiàn)代汽車中眾多的控制與測試儀器之間的數(shù)據(jù)交換而開發(fā)一種串行數(shù)據(jù)通信協(xié)議。1993年11月,ISO正式頒布了道路交通運載工具,進行數(shù)據(jù)信息交換用的高速通信控制局部網(wǎng)(CAN)的國際標準(ISO11898)。PHILIPS、Intel、MOTOROLA等公司出品了很多支持CAN協(xié)議的集成芯片,如82526、SJA1000、68HC05X4/X16/X32和具有片內(nèi)CAN的電磁兼容微控制器P8XCE598、16位微控制器87C196CA/CB等。下面介紹PHILIPS半導(dǎo)體公司推出的CAN總線控制器SJA1000,并給出其應(yīng)用實例。 1 CAN總線控制器SJA1000芯片介紹 SJA1000是一種獨立的CAN總線控制器。PHILIPS半導(dǎo)體公司將它作為PCA82C200 CAN控制器(Basic CAN)的替代產(chǎn)品。SJA1000增加了一種新的工作模式(Peli CAN),這種模式支持具有很多新特性的CAN 2.0B協(xié)議。 1.1 SJA1000引腳介紹 圖1是SJA1000引腳圖。SJA1000具有28個引腳,下面對部分引腳進行介紹。 MODE:模式選擇輸入,1(高電平)=Intel模式;0(低電平)=Motorola模式。 TX0、TX1:從CAN輸出驅(qū)動器0,1輸出到物理總線上。 RX0、RX1:從物理CAN總線輸入到SJA1000的輸入比較器。 INT:中斷輸出,用于中斷微控制器。INT在內(nèi)部中斷寄存器各位都置位時,低電平有效。INT是開漏輸出。 CLKOUT:SJA1000產(chǎn)生的提供給微控制器的時鐘輸出信號,時鐘信號來源于內(nèi)部振蕩器且通過編程驅(qū)動,時鐘控制寄存器的時鐘關(guān)閉位可禁止該引腳。 SJA1000的其他引腳分別為:AD0~AD7,數(shù)據(jù)/地址復(fù)用總線;ALE/AS,Intel模式/Motorola模式的地址鎖存信號;(RD)/E、WR,讀寫控制信號;CS,片選信號輸入,低電平有效;XTAL1,輸入到振蕩器放大電路,外部振蕩信號由此輸入;XTAL2,振蕩器放大電路的輸出,使用外部振蕩信號時左開路輸出;VDD1、VDD2、VDD3,5V電壓端;VSS1、VSS2、VSS3,與上述電壓端相對的接地端。SJA1000有兩種封裝形式,分別是塑質(zhì)雙列直插封裝和塑質(zhì)小型線外封裝。 1.2 SJA1000芯片功能介紹 SJA1000與它的前一款-PCA82C200獨立控制器是兼容的。SJA1000具有很多新的功能,修改了兩種模式:Basic CAN模式、PCA82C200兼容模式;增加了Peli CAN模式,此模式支持CAN 2.0B協(xié)議規(guī)定的所有功能(29字節(jié)的識別碼)。 SJA1000的主要新功能: *標準結(jié)構(gòu)和擴展結(jié)構(gòu)信息的接收和發(fā)送; *具有64字節(jié)長度的接收隊列; *在標準和擴展格式中,都有單/雙接收過濾器(含屏蔽和代碼寄存器); *讀/寫訪問的錯誤計數(shù)器,可編程的錯誤限制報警,最近一次的誤碼寄存器; *每一個CAN總線錯誤的錯誤中斷; *由功能位定義的仲裁丟失中斷; *一次性發(fā)送(當錯誤或仲裁丟失時不重發(fā)); *只聽模式(CAN總線監(jiān)聽,無應(yīng)答,無錯誤標志); *支持熱插拔(無干擾軟件驅(qū)動位速檢測); *硬件禁止CLKOUT輸出。 下面只介紹Basic CAN模式,對于Peli CAN模式請查看參考文獻[1]。 SJA1000復(fù)位,默認為Basic CAN械,或者通過時鐘分頻寄存器的CAN模式位來選擇模式。此位清零時,為Basic CAN模式;置位時,為Peli CAN模式。在Basic CAN模式下,對SJA1000進行控制以及收發(fā)數(shù)據(jù),都是通過對SJA1000內(nèi)部寄存器的讀/寫訪問來實現(xiàn)的。對于單片機而言,操作SJA1000就像訪問外部RAM一樣簡單。有兩種模式可以對SJA1000的內(nèi)部寄存器訪問,而在這兩種模式下對其寄存器的訪問是有區(qū)別的。這兩種模式分別是復(fù)位模式和工作模式。當硬件復(fù)位,或控制器掉線,或置位復(fù)位請求位時,SJA1000進入復(fù)位模式;而當清除復(fù)位請求位時,SJA1000進入工作模式。SJA1000的寄存器分布于0~31連續(xù)的地址空間中。這32個字節(jié)可分為控制段(10字節(jié))、發(fā)送緩沖器段(10字節(jié))、接收緩沖器段(10字節(jié))、時鐘分頻器和1個無效字節(jié)。在復(fù)位模式下可寫的寄存器為控制段的控制寄存器、命令寄存器、接收代碼寄存器、屏蔽寄存器、總線時序0、總線時序1、輸出控制寄存器,還包括接收緩沖器和時鐘分頻器;而在工作模式下可寫的寄存器為控制寄存器、命令寄存器、發(fā)送緩沖器段、接收緩沖器段和時鐘分頻器。 下面根據(jù)應(yīng)用需要具體介紹SJA1000的控制寄存器、命令寄存器、狀態(tài)寄存器、中斷寄存器。 (1)控制寄存器(CR) 控制寄存器位于SJA1000寄存器區(qū)的0地址,用來設(shè)置CAN總線的模式和各種中斷。其各位的意義如表1所列。 表1 控制寄存器各位說明(CR):CAN地址0 |