第6章 CAN硬件設(shè)計2014_第1頁
第6章 CAN硬件設(shè)計2014_第2頁
第6章 CAN硬件設(shè)計2014_第3頁
第6章 CAN硬件設(shè)計2014_第4頁
第6章 CAN硬件設(shè)計2014_第5頁
已閱讀5頁,還剩129頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

大家先思考幾個問題CAN總線“長”什么樣?什么是CAN總線?CAN代表什么什么含義?現(xiàn)場總線包括基金會現(xiàn)場總線、Lonworks、PROFIBUS、HART、CAN,為何我們選擇學(xué)習(xí)CAN總線?思考

TheAnswerCAN是控制器局域網(wǎng)絡(luò)(ControllerAreaNetwork,CAN)的簡稱,是由以研發(fā)和生產(chǎn)汽車電子產(chǎn)品著稱的德國BOSCH公司開發(fā)的,并最終成為國際標(biāo)準(zhǔn)(ISO11898),是國際上應(yīng)用最廣泛的現(xiàn)場總線之一。

CAN總線是德國BOSCH公司從80年代初為解決現(xiàn)代汽車中眾多的控制與測試儀器之間的數(shù)據(jù)交換而開發(fā)的一種串行數(shù)據(jù)通信協(xié)議,它是一種多主總線,通信介質(zhì)可以是雙絞線、同軸電纜或光導(dǎo)纖維。通信速率最高可達(dá)1Mbps。是唯一有國際標(biāo)準(zhǔn)的現(xiàn)場總線,被認(rèn)為到目前為止最有前途的現(xiàn)場總線?,F(xiàn)場總線(Fieldbus)本質(zhì)是計算機(jī)控制網(wǎng)絡(luò),因此網(wǎng)絡(luò)技術(shù)是它的重要基礎(chǔ)。計算機(jī)網(wǎng)絡(luò)連接是各個PC,現(xiàn)場總線連接的是生產(chǎn)最底層的受控設(shè)備,傳感器。思考思考思考6CAN的開發(fā)與設(shè)計

6.1概述SJA1000是一種具有高級功能的獨立CAN控制器,它可以應(yīng)用到汽車工業(yè)和其它工業(yè)領(lǐng)域。目前獨立CAN控制器包括SJA1000和MCP2515,SJA1000應(yīng)用比較廣泛,性能較強(qiáng),但是占IO較多。集成CAN控制器的MCU有PIC18F258/2580/4580/P8XC591/STM32/C8051F040等CAN收發(fā)器常用PCA82C250/TJA1050/MCP2551SJA1000是PCA82C200(BasicCAN)替代產(chǎn)品,因此其硬件和軟件與PCA82C200完全兼容;而且SJA1000還增加一種新的操作模式-Pelican,這種模式支持很多新特性的CAN2.0B協(xié)議。概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用

一、CAN總線結(jié)點結(jié)構(gòu)一般而言,每一個CAN模塊可以被分成不同的功能塊;第一層:與CAN總線相聯(lián)的部分,一般由CAN收發(fā)器構(gòu)成。收發(fā)器將CAN控制器的邏輯電平信號轉(zhuǎn)換為CAN總線上的實際電平,同時也將總線上的實際電平轉(zhuǎn)換為CAN控制的邏輯電平。概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用第二層就是CAN控制器,它完成CAN技術(shù)規(guī)范定義的完整的CAN協(xié)議,通常還包括報文的緩沖和認(rèn)可濾波功能。第三層,所有的CAN功能完全由模塊控制器來控制,它完成應(yīng)用公共的控制功能,如控制一個執(zhí)行機(jī)構(gòu),采集傳感器的信息及處理人-機(jī)接口等等。一般是MCU概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用如圖6-1所示,SJA1000獨立CAN控制的器一般均介于微控制器與收發(fā)器之間。

概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用二、功能框圖SJA1000的功能框圖,如圖6-2所示。

1)CAN核心模塊:根據(jù)CAN技術(shù)規(guī)范完成幀的收發(fā)。2)接口管理邏輯單元:完成與外部主控制器的連接,該控制器可以是微控制器或其他裝置,對SJA1000寄存器的讀寫及讀寫脈沖均由此單元來控制,并且增加了除BasicCAN基本功能外的PeliCAN功能,由此而增加的寄存器和控制邏輯也大多在此模塊中完成。概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用3)發(fā)送緩沖器:可以存放一個完整的報文(SFF/EFF)。只要外部控制器初始化一次發(fā)送過程,IML(管理邏輯接口單元)都要迫使CAN核心模塊來讀取發(fā)送緩沖器的報文。4)認(rèn)可濾波器:當(dāng)接收到一組報文CAN核心模塊將其串/并轉(zhuǎn)換后送到認(rèn)可濾波器,利用這些可編程寄存器,SJA1000來確定哪些報文是主控制器要接收的。概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用5)接收棧FIFO

:所有通過認(rèn)可濾波的報文均存放在接收線中,根據(jù)運(yùn)行方式和報文長度的不同,接收棧中最多只能存放32個報文。這給用戶提供了更大的靈活性來處理中斷優(yōu)先權(quán)判定和中斷服務(wù)程序,因此這大大降低了數(shù)據(jù)超載的可能性。

概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用6.2系統(tǒng)構(gòu)成

為了與主控制器相連,SJA1000提供了復(fù)用地址/數(shù)據(jù)總線和其他的讀寫控制信號,SJA1000可以被看作為面向存貯器尋址的外設(shè)I/O單元。

概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用由于寄存器和輸出管腳可組態(tài)使得SJA1000可以使用任何種類的集成或分立的

CAN收發(fā)器。在圖3中給出了包括80C51和PCA82C250/1收發(fā)器的SJA1000的應(yīng)用框圖。CAN控制器給8051提供時鐘,由外部復(fù)位電路提供復(fù)位信號。在這個例子中,SJA1000由8051的端口P2.7來控制,也可以將此腳接到Vss。該腳也可以通過地址譯碼器來控制。//定義SJA1000的基址#defineSJA_BaseAdr0X7F00決定CS接到P2口的那個管腳,這樣定義就是P2.7#defineSJA_BaseAdr0XFE00決定CS接到P2口的那個管腳,這樣定義就是P2.0概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用6.2.1SJA1000的應(yīng)用

CAN總線系統(tǒng)智能節(jié)點硬件設(shè)計SJA1000有3組電源腳供給不同的內(nèi)部數(shù)字或模擬功能塊VDD1/VSS1內(nèi)部邏輯(數(shù)字)VDD2/VSS2輸入比較器(模擬)VDD3/VSS3輸出驅(qū)動器(模擬)這組電源是相互獨立的,以提高芯片的抗干擾能力。在某些應(yīng)用場合VDD2可以聯(lián)接一個RC去偶網(wǎng)絡(luò),以抑制比較器的噪聲干擾。概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用6.2.2電源6.2.3復(fù)位SJA1000的正常復(fù)位過程,要求在XTAL1腳上加以穩(wěn)定的振蕩器時鐘脈沖,Pin17上外部復(fù)位信號起同步作用,并在CAN控制器內(nèi)部被延長為15個時鐘周期的脈寬,這樣就可以保證SJA1000內(nèi)部寄存器的可靠復(fù)位。此外在上電復(fù)位時,也應(yīng)將振蕩內(nèi)的起振時間考慮在內(nèi)。

概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用6.2.4振蕩器及時鐘的提供方法SJA1000可使用內(nèi)部振蕩器或外部振蕩器CLKOUT可被置有效,給主控制器提供時鐘,圖6-4給出了4種SJA1000的時鐘供給方法。思考有一幅圖有問題?若CLKOUT不使用,可通過使時鐘分頻寄存器的時鐘關(guān)斷位置1,使之無效,這樣做可提高CAN接點的電磁兼容性。概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用

上電復(fù)位或硬復(fù)位后,時鐘分頻系數(shù)取決于接口方式。接口方式由11腳模式位(Mode)決定。所以若振蕩的頻率為16MHz,在Intel方式,fclkout=8MHz;在Motorola方式,fclkout=1.33MHz。

概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用在沒有總線活動和發(fā)出中斷申請的情況下,在BasicCAN模式中置Gotosleep位;在PeliCAN模式置SleepMode位可使CAN控制器進(jìn)入睡眠狀態(tài),振蕩器要再持續(xù)工作15個系統(tǒng)時鐘時間。這段時間微控制器可用來處理善后事務(wù),并進(jìn)入其低功耗待機(jī)狀態(tài)。喚醒條件之一發(fā)生,振蕩器將起振,并發(fā)出喚醒中斷,并且一旦振蕩器穩(wěn)定,CLKOUT就有有效輸出。概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用6.2.5CPU接口控制

SJA1000可以直接與兩種著名的CPU系列相聯(lián),80C51、68XX,兩種CPU系列的選擇通過模式腳(Mode,Pin11)來選擇。圖6-5給出了Intel和Motorola方式下的地址/數(shù)據(jù)線及讀寫控制信號線的連線圖。概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用6.2.6物理層接口

6.3CAN通信的控制

6.3.1控制SJA1000通信的基本功能和控制寄存器

主控制器通過應(yīng)用程序來設(shè)定SJA1000的功能,因此我們將對SJA1000進(jìn)行編程以滿足不同性能的CAN總線系統(tǒng)的要求。主控制器通過寄存器(控制段)和RAM(報文緩沖器)與SJA1000交換數(shù)據(jù)。這些控制寄存器和接收及發(fā)送緩沖器--RAM的可尋址窗口,對主控制器而言均為外設(shè)寄存器。概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用表2將這些寄存器按使用功能進(jìn)行了分組。要注意,有些寄存器只能在PeliCAN方式中使用,而另一些只能在BasicCAN方式中使用;有些為只讀而另一些為只寫,還有一些寄存器只能在復(fù)位狀態(tài)下才能進(jìn)行讀寫操作。概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用SJA1000獨立的CAN控制器有2個不同的操作模式:

1

BasicCAN模式:和PCA82C200兼容。BasicCAN模式是上電后默認(rèn)的操作模式,因此用PCA82C200開發(fā)的已有硬件和軟件,可以直接在SJA1000上使用而不用作任何修改。

2PeliCAN模式:是新的操作模式。它能夠處理所有CAN2.0B規(guī)范的幀類型。而且它還提供一些增強(qiáng)功能,使SJA1000能應(yīng)用于更寬的領(lǐng)域。PeliCAN

中文含義?53工作模式通過時鐘分頻寄存器中的CAN模式位來選擇,復(fù)位時默認(rèn)模式是BasicCAN模式。(1)BasicCAN模式地址分配SJA1000對微處理器而言是存儲器尋址方式的I/O裝置,由于寄存器的設(shè)計是按RAM方式設(shè)計的。SJA1000的地址范圍包括控制段和報文緩沖器。在初始化時對控制段進(jìn)行編程,以便組態(tài)通信參數(shù)。位處理器也是通過此段實現(xiàn)對CAN總線通信的控制。在初始化時位處理器還可對CLKOUT信號的頻率進(jìn)行編程。要發(fā)送的報文,必須寫入SJA1000的發(fā)送緩沖器;正確接收的報文,微處理器可以從接收緩沖器中讀取,并將接收緩沖器釋放以備將來使用。概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用BasicCAN模式微處理器與SJA1000的狀態(tài)、控制和命令信號的交換都是在控制段完成的。此段的地址分配如表5-12所示,在初始化完成后,認(rèn)可碼寄存器、認(rèn)可碼屏蔽寄存器、總線定時寄存器0和1以及輸出控制寄存器的內(nèi)容不應(yīng)再發(fā)生變化,所以這些寄存器只能在控制寄存器的復(fù)位請求位被置為高時,才可對其寫操作。概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用對寄存器的操作必須區(qū)分兩種模式:復(fù)位模式運(yùn)行模式在硬件復(fù)位或總線關(guān)斷狀態(tài)(見表5-16,狀態(tài)寄存器)時,芯片自動進(jìn)入復(fù)位模式(見表5-14,控制寄存器);將控制寄存器中的復(fù)位請求位清零就可進(jìn)入運(yùn)行模式。

概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用(2)復(fù)位值若檢測到‘復(fù)位請求’位為1,芯片將終止當(dāng)前報文的發(fā)送/接收而進(jìn)入復(fù)位狀態(tài);在‘復(fù)位請求’位的‘1-0’跳變,CAN控制器返回到運(yùn)行模式。(3)控制寄存器(CR)控制寄存器的內(nèi)容可以改變CAN控制器的響應(yīng),寄存器的內(nèi)容可以由與其相接的微處理器來改變。

概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用注:1、CR.7:對控制寄存器的任何寫操作此位必須置零(復(fù)位值為0)。2、CR.6:在PCA82C200中此位被用來選擇同步模式,由于SJA1000中不再使用此模式,設(shè)置該位對微處理器沒有任何影響。但為了軟件的兼容性,將此位置1是允許的,硬件或軟件復(fù)位對此位沒有影響。讀操作的返回值為用戶軟件的寫入值。3、CR.5:此位讀回的值為1概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用4、復(fù)位請求:

在硬件復(fù)位或總線狀態(tài)被置1(總線離線)期間,復(fù)位請求位被置為1。復(fù)位請求位被置零后SJA1000將等待:a)若復(fù)位請求是由硬件或CPU的上電復(fù)位引起的,SJA1000將等待一個總線空閑信號(連續(xù)11個隱性電平);b)若復(fù)位請求是由CAN控制器的總線離線狀態(tài)引起的,SJA1000要重新進(jìn)入總線在線狀態(tài),必須等待128個總線空閑狀態(tài)。應(yīng)注意的是在復(fù)位請求過程中,幾個寄存器的內(nèi)容被改變了。概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用(4)命令寄存器(CMR)一個命令位引發(fā)SJA1000傳輸層的一個過程,命令寄存器對微處理器而言是一個只寫寄存器,若對命令寄存器執(zhí)行讀操作,其返回值為‘11111111’。兩個命令之間至少需要一個內(nèi)部時鐘周期對命令進(jìn)行處理。概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用注:1、進(jìn)入睡眠GTS被置1,若沒有中斷申請及總線無活動,SJA1000將進(jìn)入睡眠狀態(tài);2、清除數(shù)據(jù)過載CDO命令位用來清除由數(shù)據(jù)過載位指示的數(shù)據(jù)過載狀態(tài);一旦數(shù)據(jù)過載位置1,就不再產(chǎn)生其它的過載中斷了。清除數(shù)據(jù)過載命令也可作為接收緩沖器釋放命令來使用。概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用3、釋放接收緩沖器RRB讀出接收緩沖器的內(nèi)容后,微處理器可以將釋放接收緩沖器置1,以釋放RX棧的存儲空間,此命令可以使接收緩沖器中的報文立即有效。如果中斷開放,該事件會引發(fā)另外一個接收中斷。若接收緩沖器中沒有報文存在,就不會產(chǎn)生其它的接收中斷,接收緩沖器狀態(tài)位將被清零。概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用4、終止發(fā)送ATCPU需要推遲以前的發(fā)送請求時,也就是有更緊急的報文發(fā)送前,使用終止發(fā)送位。此命令不會終止已開始的發(fā)送過程,我們通過讀取發(fā)送完成狀態(tài)位的值,可以檢驗原報文是被成功發(fā)送還是被終止。這個檢驗過程應(yīng)在發(fā)送緩沖器狀態(tài)位置1或發(fā)送中斷發(fā)出后進(jìn)行。5、發(fā)送請求TR若第一個命令為使發(fā)送請求位置1,不能用使發(fā)送請求位清零來取消第一個命令。請求的發(fā)送過程可以用使終止發(fā)送位置1來取消。

概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用(5)狀態(tài)寄存器(SR)狀態(tài)寄存器的內(nèi)容反映了SJA1000的工作狀態(tài),狀態(tài)寄存器對微處理器而言為只讀存儲器。

概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用(6)中斷寄存器(IR)中斷寄存器用來識別中斷源。此寄存器的一位或多位置1,將變?yōu)榈碗娖?。微處理器對此寄存器讀出后,此寄存器的所有位將清零,使變?yōu)閼腋‰娖健4思拇嫫鳛橹蛔x寄存器。

概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用(7)發(fā)送緩沖器布局表5-18給出了發(fā)送緩沖器的總體布局,發(fā)送緩沖器用來存放從微處理器來并將被SJA1000發(fā)送的報文。發(fā)送緩沖器可分為描述符區(qū)和數(shù)據(jù)區(qū),微處理器只能在運(yùn)行模式讀/寫發(fā)送緩沖器,若在復(fù)位模式下讀發(fā)送緩沖器其返回值為‘FFH’。

概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用①

標(biāo)示符(ID)標(biāo)示符由11位組成(ID.10~ID.0),ID.10為最高位,在仲裁過程中它首先被發(fā)送到總線上。標(biāo)示符的作用類似于報文的名字,在接收端它被用來進(jìn)行認(rèn)可濾波;在仲裁過程中它也用來決定訪問總線的優(yōu)先權(quán)。標(biāo)示符所代表的二進(jìn)制數(shù)值越小,其優(yōu)先權(quán)越高,這是由于二進(jìn)制數(shù)越小,其高位的顯性位就越多。概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用②

遠(yuǎn)程發(fā)送請求(RTR)如果此位置1,將通過總線發(fā)送一遠(yuǎn)程幀。在遠(yuǎn)程幀中不包含數(shù)據(jù)字節(jié),雖然這樣,也必須給出與具有相同標(biāo)示符的數(shù)據(jù)幀相同的數(shù)據(jù)長度碼。如果RTR沒有置1,將發(fā)送一幀數(shù)據(jù)幀。

概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用③

數(shù)據(jù)長度碼(DLC)報文數(shù)據(jù)區(qū)中的數(shù)據(jù)字節(jié)數(shù)由數(shù)據(jù)長度碼給出編碼。在開始發(fā)送遠(yuǎn)程幀時,由于RTR為1,這強(qiáng)制發(fā)送/接收的數(shù)據(jù)字節(jié)為零,所以不需要考慮數(shù)據(jù)長度碼。概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用

數(shù)據(jù)長度的有效字節(jié)數(shù)為0~8,數(shù)據(jù)長度編碼由下式給出:

考慮到兼容性,不能使用大于8的數(shù)據(jù)長度編碼。如果選擇了大于8的DLC編碼,在后續(xù)的數(shù)據(jù)幀中只發(fā)送8個字節(jié)的數(shù)據(jù)。概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用④

數(shù)據(jù)區(qū)發(fā)送的數(shù)據(jù)字節(jié)數(shù)由數(shù)據(jù)長度碼確定。發(fā)送數(shù)據(jù)的第一位是位于CAN地址12的數(shù)據(jù)字節(jié)1的最高位。概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用(8)接收緩沖器接收緩沖器的總體布局與5.3.7節(jié)描述的發(fā)送緩沖器的類似。接收緩沖器是RX棧的可訪問的部分,CAN地址范圍為20~29。標(biāo)示符、遠(yuǎn)程發(fā)送請求位和數(shù)據(jù)長度編碼所處的位置和意義與發(fā)送緩沖器的完全一樣,只是所處的地址范圍為20~29。RX棧共有64字節(jié)。在任何時刻棧中所存儲的報文個數(shù),由報文的長度決定。如果RX棧中沒有足夠的空間來存放一個新的報文,CAN控制器將發(fā)出數(shù)據(jù)過載信息。當(dāng)發(fā)生數(shù)據(jù)過載時,部分已寫入RX棧中的報文將被刪除。概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用(9)認(rèn)可濾波器具有認(rèn)可濾波器,CAN控制器就可以只讓那些標(biāo)示符與認(rèn)可濾波寄存內(nèi)容相符的報文進(jìn)入RX棧中。認(rèn)可濾波器由認(rèn)可碼寄存器(ACR)和認(rèn)可屏蔽寄存器(AMR)組成。①

認(rèn)可碼寄存器(ACR)

概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用

此寄存器只能在復(fù)位模式下才可進(jìn)行讀/寫操作。當(dāng)一個報文通過了認(rèn)可檢驗,并且接收緩沖器中空間足夠,則該報文的描述區(qū)和數(shù)據(jù)區(qū)將被順序地存儲到RX棧中。當(dāng)一個報文完整無誤的接收下來,CAN控制器將完成下述工作:

?接收狀態(tài)位置1;

?若中斷開放,將產(chǎn)生接收中斷。概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用報文標(biāo)示符的8個高位(ID.10~I(xiàn)D.3)必須與(AC.7~AC.0)相等,而這些位是被驗收屏蔽位(AM.7~AM.0)相應(yīng)位屏蔽的,即滿足下式給出的條件之一,報文就通過了認(rèn)可,被接受:

概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用

此寄存器只能在復(fù)位狀態(tài)才可對其讀/寫操作。認(rèn)可屏蔽寄存器確定相應(yīng)的認(rèn)可碼位的相關(guān)性(AM.X=0),或無關(guān)性(AM.X=1)。概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用②

認(rèn)可屏蔽寄存器(AMR)概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用(1)總線定時寄存器0(BTR0)總線定時寄存器0(BTR0)定義波特率預(yù)分頻和同步跳轉(zhuǎn)寬度的數(shù)值。BTR0在復(fù)位方式下,為讀/寫方式;在運(yùn)行模式下為:5.3.1.5通用寄存器

概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用①

波特率予分頻器(BRP)

CAN系統(tǒng)時鐘周期tSCL的大小是可編程的,該數(shù)值也用來確定CAN的位定時。CAN的系統(tǒng)時鐘的周期由下式給出:

同步跳轉(zhuǎn)寬度(SJW)為了補(bǔ)償不同CAN控制器時鐘振蕩器的相移,任何總線控制器都必須根據(jù)當(dāng)前傳送報文相關(guān)邊沿進(jìn)行重同步,同步跳轉(zhuǎn)寬度定義了在一次重同步操作中,位周期縮短或延長的最大系統(tǒng)時鐘數(shù)目。同步跳轉(zhuǎn)寬度由下式給出:

概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用(2)總線定時寄存器1(BTR1)所謂總線定時寄存器1(BTR1)定義了位周期的長度和數(shù)據(jù)采樣點的位置和個數(shù)。在復(fù)位模式下BTR1為讀/寫方式;在運(yùn)行模式下,若為PeliCAN模式,該寄存器為只讀方式;

在BasicCAN模式下,對此寄存器進(jìn)行讀操作,其返回值為0FFH。概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用②

時間段1(TSEG1)和時間段2(TSEG2)TSEG1和TSEG2定義了每個位周期中含有的系統(tǒng)時鐘的個數(shù)和采樣點的位置。其中:

BTR0和BTR1主要涉及到波特率,具體使用時候建議大家直接利用計算軟件。(3)輸出控制寄存器(OCR)輸出控制寄存器(OCR)使總線控制器通過軟件控制輸出驅(qū)動器的不同組合。在復(fù)位模式下OCR為讀/寫方式;在運(yùn)行模式下,若為PeliCAN模式,該寄存器為只讀方式,在BasicCAN模式下,對此寄存器進(jìn)行讀操作,其返回值為0FFH。概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用若SJA100在睡眠狀態(tài),TX0和TX1腳上輸出隱性電平,在復(fù)位狀態(tài)或者在外部復(fù)位腳為低時,TX0與TX1處于懸浮態(tài),根據(jù)輸出控制寄存器設(shè)置的內(nèi)容不同,發(fā)送的輸出級可以工作在不同的運(yùn)行方式

①正常輸出方式在正常輸出方式,位流序列TXD通過TX0和TX1輸出,輸出驅(qū)動器腳TX0和TX1的電平值不僅取決于可編程位OCTPx和OCTNx,而且也取決于輸出極性位OCPOLx的編程值。②時鐘輸出模式在這種方式下,TX0與正常輸出模式一樣,輸出位流序列,而TX1則輸出發(fā)送時鐘(TXCLK),發(fā)送時鐘的上升沿標(biāo)注一個位周期的開始,時鐘的輸出寬度為一個系統(tǒng)時鐘tSCL

。概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用③雙相輸出模式與正常輸出模式不同,在雙相輸出模式時,位的輸出是隨時間變化的,而且TX0和TX1交替輸出。若總線控制器是用變壓器與線路隔離的,則位流中就不允許包含有直流成份,這一點可以通過下述方法實現(xiàn):在發(fā)送隱性位時,所有的輸出被關(guān)閉(懸浮態(tài)),而顯性位則交替地輸出到TX0和TX1,即第一個顯性位送到TX0,第二個顯性位則送到TX1,第三個又送到TX0,依次類推。

概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用④

測試輸出模式在測試輸出方式,RX的接收電平將在下一個系統(tǒng)時鐘的上升沿輸出到TXn,而且此輸出電平要受輸出控制寄存器可編程極性位的控制。概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用時鐘分頻器寄存器(CDR)控制時鐘輸出腳CLKOUT的輸出頻率,并且允許關(guān)斷此位的輸出。另外,該寄存器還可以控制是否在TX1上增加了一個接收中斷脈沖、旁路接收比較器、選擇BasicCAN還是PeliCAN模式。在硬件復(fù)位后時鐘分頻數(shù)的默認(rèn)值為00000101、12分頻(Motorola)或為00000000、2分頻(Intel)。軟復(fù)位對此寄存器沒有影響,保留位CDR.4在寫入時必須為0,以便與將來的功能上保持兼容。

概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用(4)時鐘分頻器寄存器(CDR)②

時鐘關(guān)斷將此位置1可以使CLKOUT腳輸出無效,此位的寫操作只能在復(fù)位模式。將此位置1,CLKOUT腳在睡眠狀態(tài)輸出低電平,否則輸出高電平。

RXINTEN(接收增強(qiáng)位)此位置1可允許TX1作為一個專用的接收中斷輸出腳,當(dāng)一個報文通過認(rèn)可濾波,在幀結(jié)束符的最后一位期間,TX1輸出一位寬度的接收中斷脈沖。發(fā)送輸出級應(yīng)該工作在正常模式,輸出極性和輸出驅(qū)動控制由輸出控制寄存器來決定。此位只能在復(fù)位狀態(tài)下寫入。概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用④CBP(比較器旁路位)將CDR.6(CBP)位置1,可以使CAN的輸入比較器旁路,此位只能在復(fù)位方式下寫入。一般當(dāng)SJA1000聯(lián)接有一個外部收發(fā)器電路時,才使用此功能。這樣可以減少SJA1000的內(nèi)部延時,并能延長總線的最大長度。若CBP=1,則只有RX0有效,而未使用的RX1輸入端應(yīng)聯(lián)接到一個固定電平(如VSS)。概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用⑤CAN模式

CDR.7定義了CAN的運(yùn)行方式:此位只能在復(fù)位模式下寫入。

概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用發(fā)送/接收緩沖器

要通過CAN總線發(fā)送的數(shù)據(jù),存貯在SJA1000的發(fā)送緩沖器,而CAN總線上接收到的報文存放在接收緩沖器。這些緩沖器包含有2、3或5個標(biāo)示符和幀信息字節(jié)(依據(jù)不同的模式和幀結(jié)構(gòu))和至多8個字節(jié)的數(shù)據(jù)。BasicCAN模式

緩沖器10字節(jié):

2字節(jié)標(biāo)示符

至多8個字節(jié)數(shù)據(jù)PeliCAN模式

緩沖器13字節(jié):

1字節(jié)幀信息

2~4字節(jié)標(biāo)示符

至多8字節(jié)數(shù)據(jù)概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用認(rèn)可濾波器

CAN控制器SJA1000配備有一個通用的認(rèn)可濾波器,該濾波器能夠自動檢驗標(biāo)示符和數(shù)據(jù)字節(jié)。利用這種濾波方法,可以有效的防止不需要接收的報文或報文組進(jìn)入接收緩沖器,就可以減少主控制器數(shù)據(jù)處理的負(fù)荷。概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用若認(rèn)可碼和認(rèn)可碼屏蔽寄存器根據(jù)一定的算法來控制濾波器的工作,接收到的數(shù)據(jù)與認(rèn)可碼寄存器的內(nèi)容逐位比較,而認(rèn)可碼屏蔽寄存器定義接收數(shù)據(jù)的那些位與比較相關(guān)(0=相關(guān)、1=不相關(guān))。只有接收到的所有相關(guān)位與認(rèn)可碼寄存器的對應(yīng)位相同,接收的報文才通過了認(rèn)可濾波。

概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用BasicCAN模式的接收濾波在這種模式下,SJA1000可以直接代替PCA82C200。接收濾波器由兩個8位寬度的寄存器-接收碼寄存器和接收碼屏蔽寄存器組成,接收報文標(biāo)示符的高8位與ACR和AMR的位進(jìn)行比較,見圖6-8。概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用

AMR=1的位對應(yīng)的ID符可為任意值,最低位的三個ID符也可為任意值,所以在此例中共有64個不同的標(biāo)示符(ID符)可以被該節(jié)點接收。

PeliCAN的認(rèn)可濾波在PeliCAN方式下,認(rèn)可濾波器進(jìn)行了擴(kuò)展,有4個8位寬的認(rèn)可碼寄存器(ACR0、ACR1、ACR2、ACR3)和認(rèn)可碼屏蔽寄存器(AMR0、AMR1、AMR2、AMR3)都參與報文的濾波。

概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用6.4CAN的通信功能的應(yīng)用

通過CAN總線建立通信的過程:系統(tǒng)上電后設(shè)置主控制器與SJA1000相關(guān)的硬件及軟件在SJA1000上電復(fù)位后,設(shè)置CAN控制器的通信功能,包括方式選擇、認(rèn)可濾波器的設(shè)置、位定時信息等。在應(yīng)用主程序中準(zhǔn)備要發(fā)送的數(shù)據(jù)并激活SJA1000將數(shù)據(jù)發(fā)出處理CAN控制器接收到的報文處理在通信過程中發(fā)生的錯誤

概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用打開ppt2概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用6.4.1初始化

SJA1000在上電或硬復(fù)拉后,必須對其初始化以便進(jìn)行通信。而且在運(yùn)行過程中還可以通過主控制器對其組態(tài)進(jìn)行修改(重新組態(tài)),在進(jìn)行重新組態(tài)時,首先要進(jìn)入復(fù)位狀態(tài)。圖6-12給出了初始化程序的流程。概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用

上電復(fù)位后,主控制器要運(yùn)行其復(fù)位子程序,然后進(jìn)入初始化SJA1000的子程序,因為要組態(tài)的寄存器只有在復(fù)位模式(ResetMode)下,才能被寫入。1)主控制器必須在復(fù)位模式下對控制段的下列寄存器進(jìn)行設(shè)置。模式寄存器(僅對PeliCAN模式)選擇下列運(yùn)行方式:接收濾波器方式自檢模式監(jiān)聽模式概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用時鐘分頻寄存器:BasicCAN或PeliCAN模式時鐘輸出(CLKOUT)是否有效接收比較器是否旁路TX1輸出腳是否用作專用接收中斷輸出認(rèn)可碼與認(rèn)可碼屏蔽寄存器:定義要接收報文的認(rèn)可碼定義認(rèn)可碼與報文進(jìn)行比較的相關(guān)位

概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用總線定時寄存器定義總線的波特率定義在位周期中的采樣點位值定義采樣點數(shù)目輸出控制寄存器定義CAN總線輸出腳

TX0和TX1的輸出方式正常輸出方式

時鐘輸出方式

雙相輸出方式或測試方式。概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用采用的是最典型的CAN控制器芯片SJA1000。SJA1000CAN控制器的CAN通訊波特率由寄存器BTR0、BTR1晶振等參數(shù)共同決定。下表A.1列出了一組推薦的BTR0、BTR1設(shè)置值。標(biāo)注*符號的值是由國際CiA協(xié)會推薦的標(biāo)準(zhǔn)值。將上述的組態(tài)信息寫入SJA1000的控制段后,就可以通過清除R/R標(biāo)志進(jìn)入運(yùn)行狀態(tài),但必須檢驗這個標(biāo)志位是否真正被清除了,并且確已進(jìn)入運(yùn)行模式,否則程序不應(yīng)繼續(xù)往下執(zhí)行。在設(shè)置SJA1000寄存器前,主控制器應(yīng)該通過讀R/R(Resetmode/Request)標(biāo)志來確認(rèn)SJA1000確在復(fù)位方式,因為要組態(tài)的寄存器只有在復(fù)位模式(ResetMode)下,才能被寫入。(RR復(fù)位請求在控制寄存器(CR)中)概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用報文的發(fā)送是CAN控制器SJA1000依據(jù)CAN協(xié)議規(guī)范自動進(jìn)行的;主控制器要將發(fā)送的報文寫入SJA1000的發(fā)送緩沖區(qū),并將發(fā)送請求位(TransmitRequest)置1;發(fā)送過程既可以采用中斷方式,也可以采用查詢方式(查詢SJA1000控制段的狀態(tài)標(biāo)志)。概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用6.4.2數(shù)據(jù)的發(fā)送1)采用中斷方式的數(shù)據(jù)發(fā)送

根據(jù)圖6-13給出的主流程,CAN的發(fā)送中斷和主控制器的外部中斷(用來聯(lián)接SJA1000的INT信號)應(yīng)在報文發(fā)送開始前開放。中斷允許標(biāo)志在控制寄存器中定義(BasicCAN)或在中斷允許寄存器中定義(PeliCAN方式)。一旦SJA1000開始發(fā)送報文,發(fā)送緩沖器就被封鎖,不能寫入新的報文。因此主控制器必須查詢“發(fā)送緩沖器的狀態(tài)標(biāo)志”(狀態(tài)寄存器)是否可以將新的報文寫入。

概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用發(fā)送緩沖器閉鎖

主控制器將新報文暫存在它自己的存貯器中,并設(shè)置一個標(biāo)志,標(biāo)明一個報文等待發(fā)送。如何處理報文暫存器,由程序設(shè)計決定。這個暫存器也可以設(shè)計為暫存多個報文。當(dāng)發(fā)送完當(dāng)前報文后,CAN控制器將發(fā)出中斷請求,并進(jìn)入中斷服務(wù)程序處理暫存報文的發(fā)送。

概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用

針對CAN控制器中斷的響應(yīng),主控制器要查詢中斷的類型,是否是發(fā)送中斷,要查詢是否還有報文要發(fā)送。等待發(fā)送的一個報文將拷貝到發(fā)送緩沖器,并清除報文等待標(biāo)志。置發(fā)送請求標(biāo)志,啟動SJA1000的發(fā)送過程。發(fā)送緩沖器釋放主控制器將要發(fā)送的新報文寫入發(fā)送緩沖器,并置“發(fā)送請求“標(biāo)志,啟動SJA1000的發(fā)送過程。當(dāng)成功發(fā)送完一個報文后,CAN控制器就會發(fā)出一個發(fā)送中斷。

概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用查詢方式的報文發(fā)送圖6-14是查詢方式的報文發(fā)送流程,在查詢方式下CAN發(fā)送中斷應(yīng)被屏蔽。一但報文開始發(fā)送,發(fā)送緩沖器寫閉鎖,因此主控制器要查詢“發(fā)送緩沖器狀態(tài)”標(biāo)志,確定是否可以將一個新的報文寫入發(fā)送緩沖器(TXBuffer)

。

概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用若發(fā)送緩沖器寫閉鎖循環(huán)查詢狀態(tài)寄存器,主控制器進(jìn)入等待狀態(tài),直到發(fā)送緩沖器空。若發(fā)送緩沖器空主控制器將新報文寫入發(fā)送緩沖器TXBuffer,并置發(fā)送請求標(biāo)志TR=1,啟動報文的發(fā)送過程。發(fā)送狀態(tài)TS和接收狀態(tài)RS可以用來檢測CAN控制器是否在空閑狀態(tài),發(fā)送緩沖器狀態(tài)TBS和發(fā)送完成狀態(tài)TCS標(biāo)志可以用來檢測報文是否成功發(fā)送。概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用6.4.3中止發(fā)送

請求發(fā)送的報文可以用“中止發(fā)送”命令來中止發(fā)送過程,這一特性可以用來發(fā)送一個比已寫入發(fā)送緩沖器TXBuff中的報文更緊急的報文。圖6-15給出了中斷方式下的中止發(fā)送程序流程圖,這個流程圖演示了中止當(dāng)前報文而發(fā)送一個優(yōu)先級別高的報文,由于其它原因也要中止發(fā)送報文的程序流程可能有所不同。

概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用

6.4.4接收報文接收報文是CAN控制器依據(jù)CAN協(xié)議規(guī)范自動進(jìn)行,接收報文被放在接收緩沖器RXBuffer中。一個報文是否可以傳送給主控制器,由狀態(tài)寄存器的接收緩沖器狀態(tài)RBS和接收中斷標(biāo)志確定(若中斷開放)。主控制器要將有效數(shù)據(jù)讀入其內(nèi)存,釋放接收緩沖器RXBuffer,并對報文進(jìn)行處理。傳送過程既可由中斷控制,也可通過查詢狀態(tài)寄存器標(biāo)志來完成。

概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用1)查詢方式的接收過程圖6-16給出了查詢方式接收報文程序流程圖。CAN控制器的接收中斷應(yīng)屏蔽,主控制器讀SJA1000狀態(tài)寄存器(周期性的)、查詢接收緩沖器狀態(tài)標(biāo)志RBS,看接收緩沖器中是否有報文存在。

·若接收緩沖器空,主控制器繼續(xù)其它的程序,直到下一個查詢接收緩沖器狀態(tài)命令?!と艚邮站彌_器狀態(tài)標(biāo)志指示“滿”,則接收緩沖器中已接收到一個或多個報文。

概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用主控制器,讀取第一個報文然后發(fā)送釋放接收緩沖器RXbuffer命令,主控制器可以在處理完一個報文后,再查詢其他報文的存在,如圖6-16所示。但是主控制器也可以將所有報文通過查詢讀出后,再一起對報文進(jìn)行處理。在這種情況下,主控制器內(nèi)的報文存貯器應(yīng)有足夠的空間,可以存入多個報文。在傳輸并處理一個報文或所有報文后,主控制器可以繼續(xù)執(zhí)行其它的程序。

概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用2)中斷方式的接收由圖6-17給出的程序流程圖可以看出,CAN控制器的接收中斷和主控制器用于連接CAN控制器接收中斷信號的外部中斷源,應(yīng)在接收報文開始前開放。接收中斷允許標(biāo)志在控制寄存器(BasicCAN模式)或在中斷允許寄存器(PeliCAN模式)。

概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用若SJA1000已經(jīng)接收到了報文,也就是說該報文已經(jīng)通過認(rèn)可濾波并已存放到接收棧中,此時就會產(chǎn)生接收中斷。主控制器可以立即響應(yīng)中斷,將接收報文讀入主控制器的報文緩沖器中,發(fā)出釋放CAN接收緩沖器命令。若接收棧(ReceiveFIFO)中還有報文,CAN控制器將產(chǎn)生新的接收中斷。因此,我們沒有必要在一次接收中斷響應(yīng)中,將接收棧中的所有報文一次性讀出。

概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用圖6-18中給出的程序流程是在一次接收中斷響應(yīng)循環(huán)中,將接收棧中的所有報文讀出。與圖6-17給出的流程不同之處在于,該程序流程在發(fā)出釋放緩沖器命令后,檢驗狀態(tài)寄存器中接收緩沖器狀態(tài)位RBS,若狀態(tài)位為1(滿狀態(tài)),則繼續(xù)讀出下一報文,而不是直接中斷返回。正如圖6-17中所示,報文的全部接收過程均可以在中斷子程序中完成,不需要與主程序交換信息。如果方便的話,對接收報文的處理程序也可以在中斷子程序中完成。

概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用數(shù)據(jù)過載處理如果接收棧已滿,而此時

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論