第5章-CAN-器件及開(kāi)發(fā)實(shí)例教材課件_第1頁(yè)
第5章-CAN-器件及開(kāi)發(fā)實(shí)例教材課件_第2頁(yè)
第5章-CAN-器件及開(kāi)發(fā)實(shí)例教材課件_第3頁(yè)
第5章-CAN-器件及開(kāi)發(fā)實(shí)例教材課件_第4頁(yè)
第5章-CAN-器件及開(kāi)發(fā)實(shí)例教材課件_第5頁(yè)
已閱讀5頁(yè),還剩79頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1第五章CAN器件及開(kāi)發(fā)實(shí)例

與其他現(xiàn)場(chǎng)總線相比,CAN總線得到多家芯片廠商的支持。制造商產(chǎn)品型號(hào)器件功能及特點(diǎn)INTEL82526825278XC196CA/CBCAN通信控制器,符合CAN2.0ACAN通信控制器,符合CAN2.0B擴(kuò)展的8XC196+CAN通信控制器,符合CAN2.0BPHILIP82C200SJA100082C15082C250P51XA-C3CAN通信控制器,符合CAN2.0ACAN通信控制器,符合CAN2.0A/B帶數(shù)字及模擬I/O的CAN擴(kuò)展器件,符合CAN2.0A高性能的CAN總線收發(fā)器16位微處理器+CAN通信控制器,符合CAN2.0BMOTOROLA68HC05X4系列68HC05X4微控制器+CAN通信控制器,符合CAN2.0ASINMENS81C90/91C167CCAN通信控制器,符合CAN2.0A微控制器+CAN通信控制器,符合CAN2.0A/B2

CAN器件既有獨(dú)立CAN控制器,也有包含CAN內(nèi)核的微控制器和DSP等,還有CAN收發(fā)器、CAN遠(yuǎn)程I/O等。器件的工作電壓范圍也已從傳統(tǒng)的5V拓展到3V/3.3V

說(shuō)明了CAN總線的諸多突出優(yōu)點(diǎn)已得到人們的認(rèn)可,另一方面,豐富價(jià)廉的CAN器件又進(jìn)一步促進(jìn)了CAN總線技術(shù)的迅速推廣。。本章將重點(diǎn)介紹兩種常用的CAN器件:CAN控制器SJA1000和收發(fā)器82C250,并結(jié)合一個(gè)開(kāi)發(fā)實(shí)例,幫助讀者理解在前面CAN技術(shù)規(guī)范中提到的標(biāo)識(shí)符、屏蔽碼、位定時(shí)、數(shù)據(jù)域及故障界定等內(nèi)容是如何實(shí)現(xiàn)的。35.1獨(dú)立CAN控制器SJA1000

SJA1000是適用于汽車和一般工業(yè)環(huán)境的獨(dú)立CAN控制器。它是PHILIPS公司生產(chǎn)。

SJA1000有兩種工作模式:

BasicCAN模式,

PeliCAN工作模式。

SJA1000的BasicCAN模式是PHILIPS公司生產(chǎn)的PCA82C200的替代品品,引腳兼容,電氣兼容。PeliCAN工作模式支持CAN2.0B協(xié)議。在PeliCAN模式下,SJA1000具有與BasicCAN模式下完全不同的寄存器結(jié)構(gòu)。SJA1000的PeliCAN模式一些新增特性:(詳見(jiàn)教材并在PeliCAN模式下解釋)4SJA1000的PeliCAN模式具有以下新增特性:接收和發(fā)送標(biāo)準(zhǔn)和擴(kuò)展格式報(bào)文;達(dá)64字節(jié)的接收FIFO;對(duì)于標(biāo)準(zhǔn)和擴(kuò)展幀都有單/雙接收過(guò)濾器,接收過(guò)濾器包括屏蔽碼和接收碼寄存器;可讀/寫訪問(wèn)的錯(cuò)誤計(jì)數(shù)器;可編程的錯(cuò)誤報(bào)警限;最近一次錯(cuò)誤代碼寄存器;對(duì)于每一種CAN總線錯(cuò)誤都能產(chǎn)生不同的出錯(cuò)中斷;仲裁丟失中斷,并帶有詳細(xì)丟失仲裁位置的信息;允許單次發(fā)送,當(dāng)出錯(cuò)或丟失仲裁時(shí)不重發(fā);只聽(tīng)模式(監(jiān)視CAN總線,無(wú)應(yīng)答,無(wú)出錯(cuò)標(biāo)志);支持熱插拔(對(duì)總線無(wú)干擾的傳輸速率檢測(cè));自身發(fā)送報(bào)文接收(自接收請(qǐng)求);硬件禁止CLKOUT輸出。5CAN控制模塊SJA1000功能框圖解釋來(lái)自CPU的命令,控制SJA1000內(nèi)部尋址,向CPU提供中斷信息和狀態(tài)信息。發(fā)送緩沖器是CPU和位流處理之間的接口,能夠存儲(chǔ)發(fā)送到CAN總線上的完整報(bào)文,。接收緩沖器是接收過(guò)濾器和CPU之間的接口,用于儲(chǔ)存從CAN總線上接收并采用的報(bào)文6SJA1000CAN控制器由下述幾部分組成:1.接口管理邏輯(IML)

接口管理邏輯完成對(duì)外部主控制器的連接,外部主控制器可以是微型控制器或其他器件。經(jīng)SJA1000復(fù)用的地址/數(shù)據(jù)總線,訪問(wèn)寄存器和控制讀/寫選通信號(hào)都在接口管理邏輯處理,并向該控制器提供中斷信息和狀態(tài)信息。解釋來(lái)自CPU的命令,控制SJA1000內(nèi)部尋址,向CPU提供中斷信息和狀態(tài)信息。

2.發(fā)送緩沖器(TXB)發(fā)送緩沖器是CPU和位流處理器之間的接口,能夠存儲(chǔ)發(fā)送到CAN總線上的完整報(bào)文,緩沖器長(zhǎng)13字節(jié),由CPU寫入,位流處理器BSP讀出。73.接收緩沖器(RXB,RXFIFO)

接收緩沖器是接收過(guò)濾器和CPU之間的接口,用于儲(chǔ)存從CAN總線上接收并采用的報(bào)文。接收緩沖器(RXB,長(zhǎng)13字節(jié))作為接收FIFO(RXFIFO,長(zhǎng)64字節(jié))的一個(gè)窗口,可被CPU訪問(wèn)。在此FIFO的支持下,CPU可以在處理一個(gè)報(bào)文的同時(shí)接收其他報(bào)文。

信息2信息3信息1接受緩沖器窗口CAN地址輸入信息釋放接受緩沖器命令接受緩沖器中的當(dāng)前可用信息是信息1圖9-4RXFIFO中信息存儲(chǔ)示例84.接收過(guò)濾器(ACF)所有收到的信息由接收過(guò)濾器接收并存儲(chǔ)在接收FIFO。接收過(guò)濾器把接收數(shù)據(jù)和接收識(shí)別碼的內(nèi)容相比較,以決定是否接收信息。如果比較的結(jié)果為真,則報(bào)文完整地存入RXFIFO中。報(bào)文存入FIFO也就是報(bào)文被CAN控制器采用。通過(guò)可編程的過(guò)濾器,SJA1000能確定哪些信息實(shí)際上被主控制器收到。5.位流處理器:

位流處理器是一個(gè)序列發(fā)生器,控制發(fā)送緩沖器、RXFIFO和CAN總線之間的數(shù)據(jù)流。它還完成CAN總線上的錯(cuò)誤檢測(cè)、仲裁、填充和錯(cuò)誤處理等功能。96.位定時(shí)邏輯:

位定時(shí)邏輯監(jiān)視CAN總線并處理總線位定時(shí)。它同步于幀起始的從隱性到顯性電平的跳變(硬同步)。位定時(shí)邏輯還提供可編程的時(shí)間段用于補(bǔ)償傳播延時(shí)和相位變化(例如,由于振蕩器漂移引起的相位變化),它還定義采樣時(shí)刻和一位時(shí)間內(nèi)的采樣次數(shù)。7.錯(cuò)誤管理邏輯:

錯(cuò)誤管理邏輯負(fù)責(zé)錯(cuò)誤界定。它接收來(lái)自位流處理器的出錯(cuò)報(bào)告,并將分析出的出錯(cuò)狀態(tài)傳達(dá)給位流處理器和接口管理邏輯。10CAN控制模塊SJA1000管腳排列圖:控制線:7地址/數(shù)據(jù):8時(shí)鐘:2電源:6復(fù)位:1發(fā)送接收:411符號(hào)引腳說(shuō)明AD7-02,1,28-23多路地址/數(shù)據(jù)總線ALE/AS3ALE輸入信號(hào)(Intel模式),AS輸入信號(hào)(Motorola模式)/CS4片選輸入,低電平允許訪問(wèn)SJA1000(/RD)/E5微控制器的/RD信號(hào)(Intel模式)或E使能信號(hào)(Motorola模式)/WR6微控制器的/WR信號(hào)(Intel模式)或RD/(/WR)信號(hào)(Motorola模式)CLKOUT7SJA1000產(chǎn)生的提供給微控制器的時(shí)鐘輸出信號(hào);時(shí)鐘信號(hào)來(lái)源于內(nèi)部振蕩器,且通過(guò)編程驅(qū)動(dòng)時(shí)鐘控制;寄存器的時(shí)鐘關(guān)閉位可禁止該引腳VSS18邏輯電路地XTAL19時(shí)鐘振蕩放大器輸入,外部振蕩器信號(hào)由此輸入[注]XTAL210時(shí)鐘振蕩放大器輸出,使用外部振蕩器時(shí)該引腳應(yīng)開(kāi)路[注]MODE11模式選擇輸入:1=Intel模式0=Motorola模式CAN控制模塊SJA1000管腳功能描述12VDD312輸出驅(qū)動(dòng)的5V電壓源TX013從輸出驅(qū)動(dòng)器0到物理總線的輸出端TX114從輸出驅(qū)動(dòng)器1到物理總線的輸出端VSS315輸出驅(qū)動(dòng)器的地/INT16中斷輸出,用于中斷微控制器;中斷寄存器任意位被置位,/INT引腳置低(有效);/INT是開(kāi)漏輸出,可與系統(tǒng)中的其它/INT中斷輸出實(shí)現(xiàn)線與;此引腳上的低電平可以把SJA1000從睡眠模式中激活/RST17復(fù)位輸入,用于復(fù)位CAN接口(低電平有效);把/RST引腳通過(guò)電容連到VSS,通過(guò)電阻連到VDD可自動(dòng)上電復(fù)位(例如C=1μF;R=50kΩ)VDD218輸入比較器的5V電壓源RX0RX11920從CAN總線到SJA1000輸入比較器的輸入端;顯性電平將會(huì)喚醒SJA1000的睡眠模式;如果RX1比RX0的電平高,就讀回一個(gè)顯性電平,反之讀回隱性電平;如果時(shí)鐘分頻寄存器的CBP位被置位,就忽略CAN輸入比較器以減少內(nèi)部延時(shí)(此時(shí)連有外部收發(fā)電路);這種情況下只有RX0是激活的;RX0引腳高電平被認(rèn)為是隱性,而低電平被認(rèn)為是顯性。VSS221輸入比較器的接地端VDD122邏輯電路的5V電壓源13振蕩器和時(shí)鐘

SJA1000能使用片內(nèi)振蕩器或帶有片外時(shí)鐘源工作。

另外CLKOUT管腳可被使能,為主控制器輸出時(shí)鐘頻率。如果不需要CLKOUT信號(hào),可以通過(guò)置位被時(shí)鐘寄存器(clockOff=1)關(guān)掉。下圖顯示了四個(gè)不同的計(jì)時(shí)原理。145.2SJA1000的BasicCAN模式5.2.1BasicCAN模式下的地址分配

CAN控制器SJA1000對(duì)于CPU而言,是可編程外圍芯片。CPU可以像操作擴(kuò)展RAM一樣操作SJA1000片內(nèi)的寄存器。SJA1000的地址區(qū)包括控制段、發(fā)送、接收信息緩沖區(qū)三大部分:①控制段:在初始化期間,控制段可被編程來(lái)配置通訊參數(shù),同時(shí)CPU通過(guò)這個(gè)段來(lái)控制CAN總線上的通信。CPU和SJA1000之間的狀態(tài)、控制和命令的交換都在控制段中完成。在以下兩種不同的模式中訪問(wèn)寄存器,其內(nèi)容是不相同的:復(fù)位模式:當(dāng)硬件復(fù)位或控制器掉線時(shí)會(huì)自動(dòng)進(jìn)入復(fù)位模式;在復(fù)位模式下進(jìn)行初始化,某些寄存器只有在控制寄存器中的復(fù)位請(qǐng)求位(CR.0)被置1時(shí),才可訪問(wèn)。(象接收碼寄存器、屏蔽碼寄存器、總線定時(shí)寄存器0、總線定時(shí)寄存器1以及輸出控制寄存器等)工作模式:工作模式是通過(guò)置零控制寄存器的復(fù)位請(qǐng)求位激活的。15②發(fā)送緩沖區(qū):一個(gè)報(bào)文在發(fā)送之前必須寫入發(fā)送緩沖器,再向總線上串行送出。③接收緩沖區(qū):在成功接收一個(gè)報(bào)文后,CPU從接收緩沖器讀取報(bào)文并釋放這部分緩存,使其可繼續(xù)用于存儲(chǔ)后續(xù)收到的報(bào)文。控制段:SJA1000在BasicCAN模式下的地址中共有10個(gè)字節(jié),偏移地址分別為0~9。發(fā)送緩沖器:位于CAN地址的10~19,占10個(gè)字節(jié),接收緩沖器:位于CAN地址的20~29,占10個(gè)字節(jié),16CAN地址寄存器名稱(符號(hào))段工作模式復(fù)位模式讀寫讀寫0控制寄存器(CR)控制控制控制控制控制1命令寄存器(CMR)(FFH)命令(FFH)命令2狀態(tài)寄存器(SR)狀態(tài)-狀態(tài)-3中斷寄存器(IR)中斷-中斷-4接收碼寄存器(ACR)(FFH)-接受代碼接受代碼5接收屏蔽寄存器(AMR)(FFH)-接受屏蔽接受屏蔽6總線定時(shí)寄存器0(BTR0)(FFH)-總時(shí)序0總時(shí)序07總線定時(shí)寄存器1(BTR1)(FFH)-總時(shí)序1總時(shí)序18輸出控制寄存器(OCR)(FFH)-輸出控制輸出控制9測(cè)試寄存器(TR)測(cè)試測(cè)試[注2]測(cè)試測(cè)試[注2]1710識(shí)別碼(ID10-3)發(fā)送緩沖器(10-3)(10-3)(FFH)-11識(shí)別碼(ID2-0)+RTR和DLC(2-0)+RTR和DLC(2-0)+RTR和DLC(FFH)-12數(shù)據(jù)字節(jié)1數(shù)據(jù)字節(jié)1數(shù)據(jù)字節(jié)1(FFH)-13數(shù)據(jù)字節(jié)2數(shù)據(jù)字節(jié)2數(shù)據(jù)字節(jié)2(FFH)-14數(shù)據(jù)字節(jié)3數(shù)據(jù)字節(jié)3數(shù)據(jù)字節(jié)3(FFH)-15數(shù)據(jù)字節(jié)4數(shù)據(jù)字節(jié)4數(shù)據(jù)字節(jié)4(FFH)-16數(shù)據(jù)字節(jié)5數(shù)據(jù)字節(jié)5數(shù)據(jù)字節(jié)5(FFH)-17數(shù)據(jù)字節(jié)6數(shù)據(jù)字節(jié)6數(shù)據(jù)字節(jié)6(FFH)-18數(shù)據(jù)字節(jié)7數(shù)據(jù)字節(jié)7數(shù)據(jù)字節(jié)7(FFH)-19數(shù)據(jù)字節(jié)8數(shù)據(jù)字節(jié)8數(shù)據(jù)字節(jié)8(FFH)-CAN地址寄存器名稱(符號(hào))段工作模式復(fù)位模式讀寫讀寫1820識(shí)別碼(ID10-3)接收緩沖器(10-3)(10-3)(10-3)(10-3)21識(shí)別碼(ID2-0)+RTR和DLC(2-0)+RTR和DLC(2-0)+RTR和DLC(2-0)+RTR和DLC(2-0)+RTR和DLC22數(shù)據(jù)字節(jié)1數(shù)據(jù)字節(jié)1數(shù)據(jù)字節(jié)1數(shù)據(jù)字節(jié)1數(shù)據(jù)字節(jié)123數(shù)據(jù)字節(jié)2數(shù)據(jù)字節(jié)2數(shù)據(jù)字節(jié)2數(shù)據(jù)字節(jié)2數(shù)據(jù)字節(jié)224數(shù)據(jù)字節(jié)3數(shù)據(jù)字節(jié)3數(shù)據(jù)字節(jié)3數(shù)據(jù)字節(jié)3數(shù)據(jù)字節(jié)325數(shù)據(jù)字節(jié)4數(shù)據(jù)字節(jié)4數(shù)據(jù)字節(jié)4數(shù)據(jù)字節(jié)4數(shù)據(jù)字節(jié)426數(shù)據(jù)字節(jié)5數(shù)據(jù)字節(jié)5數(shù)據(jù)字節(jié)5數(shù)據(jù)字節(jié)5數(shù)據(jù)字節(jié)527數(shù)據(jù)字節(jié)6數(shù)據(jù)字節(jié)6數(shù)據(jù)字節(jié)6數(shù)據(jù)字節(jié)6數(shù)據(jù)字節(jié)628數(shù)據(jù)字節(jié)7數(shù)據(jù)字節(jié)7數(shù)據(jù)字節(jié)7數(shù)據(jù)字節(jié)7數(shù)據(jù)字節(jié)729數(shù)據(jù)字節(jié)8數(shù)據(jù)字節(jié)8數(shù)據(jù)字節(jié)8數(shù)據(jù)字節(jié)8數(shù)據(jù)字節(jié)830(FFH)-(FFH)-31時(shí)鐘分頻器(CDR)時(shí)鐘分頻器時(shí)鐘分頻器[注3]時(shí)鐘分頻器時(shí)鐘分頻器CAN地址寄存器名稱(符號(hào))段工作模式復(fù)位模式讀寫讀寫195.2.2復(fù)位值

SJA1000有兩種復(fù)位方式:

硬件復(fù)位與軟件復(fù)位。硬件復(fù)位是指在芯片的復(fù)位腳上提供一定寬度低電平(正常工作狀態(tài)下為高電平),硬件復(fù)位需要足夠的時(shí)間才能使控制寄存器中的復(fù)位請(qǐng)求位置1;

軟件復(fù)位是指通過(guò)軟件設(shè)置CR.0為1或由脫離總線引起的復(fù)位。

SJA1000檢測(cè)到復(fù)位請(qǐng)求位為1后,將中止當(dāng)前報(bào)文的接收/發(fā)送而進(jìn)入復(fù)位模式。當(dāng)復(fù)位請(qǐng)求位從1轉(zhuǎn)變到0,SJA1000返回到工作模式。

20寄存器名稱位符號(hào)名稱值硬件復(fù)位軟件或總線關(guān)閉復(fù)位CR.0控制CR.7-保留00CR.6-保留××CR.5-保留11CR.4OIE溢出中斷使能××CR.3EIE錯(cuò)誤中斷使能××CR.2TIE發(fā)送中斷使能××CR.1RIE接收中斷使能××CR.0RR復(fù)位請(qǐng)求1(復(fù)位模式)1(復(fù)位模式)命令CMR.7-保留讀命令寄存器的結(jié)果總是“11111111”[注3]讀命令寄存器的結(jié)果總是“11111111”[注3]CMR.6-保留CMR.5-保留CMR.4GTS睡眠CMR.3CDO清除數(shù)據(jù)溢出CMR.2RRB釋放接收緩沖器CMR.1AT忽略傳送CMR.0TR發(fā)送請(qǐng)求置復(fù)位請(qǐng)求位為高時(shí),對(duì)CR、CMR、SR和IR各位的影響如下表。21狀態(tài)SR.7BS總線狀態(tài)0(總線開(kāi)啟)×SR.6ES出錯(cuò)狀態(tài)0(Ok)×SR.5TS發(fā)送狀態(tài)0(空閑)0(空閑)SR.4RS接收狀態(tài)0(空閑)0(空閑)SR.3TCS發(fā)送完畢狀態(tài)1(完畢)×SR.2TBS發(fā)送緩沖器狀態(tài)1(釋放)1(釋放)SR.1DOS數(shù)據(jù)溢出狀態(tài)0(無(wú)溢出)0(無(wú)溢出)SR.0RBS接收緩沖器狀態(tài)0(空)0(空)中斷IR.7-保留11IR.6-保留11IR.5-保留11IR.4WUI喚醒中斷0(復(fù)位)0(復(fù)位)IR.3DOI數(shù)據(jù)溢出中斷0(復(fù)位)0(復(fù)位)IR.2EI錯(cuò)誤中斷0(復(fù)位)×[注4]IR.1TI發(fā)送中斷0(復(fù)位)0(復(fù)位)IR.0RI接收中斷0(復(fù)位)0(復(fù)位)225.2.3控制寄存器

(CR,地址0)位符號(hào)名稱值功能說(shuō)明CR.7---保留[注1]CR.6---保留[注2]CR.5---保留[注3]CR.4OIE溢出中斷使能1使能:如果置位數(shù)據(jù)溢出位,微控制器接收溢出中斷信號(hào)0禁能:微控制器不從SJA1000接收溢出中斷信號(hào)CR.3EIE錯(cuò)誤中斷使能1使能:如果出錯(cuò)或總線狀態(tài)改變,微控制器接收錯(cuò)誤中斷信號(hào)0禁能:微控制器不從SJA1000接收錯(cuò)誤中斷信號(hào)CR.2TIE發(fā)送中斷使能1使能:當(dāng)信息被成功發(fā)送或發(fā)送緩沖器又被訪問(wèn)時(shí),微控制器接收SJA1000發(fā)出的一個(gè)發(fā)送中斷信號(hào)0禁能:微控制器不從SJA1000接收發(fā)送中斷信號(hào)CR.1RIE接收中斷使能1使能:信息被無(wú)錯(cuò)接收時(shí),SJA1000發(fā)出一個(gè)接收中斷信號(hào)到微控制器0禁能:微控制器不從SJA1000接收發(fā)送中斷信號(hào)CR.0RR復(fù)位請(qǐng)求[注4]1當(dāng)前:SJA1000檢測(cè)到復(fù)位請(qǐng)求后,忽略當(dāng)前發(fā)送/接收的信息,進(jìn)入復(fù)位模式0空缺:復(fù)位請(qǐng)求位由1變0后,SJA1000回到工作模式

控制寄存器的內(nèi)容是用于改變CAN控制器的行為的。這些位可以被微控制器設(shè)置或復(fù)位,微控制器可以對(duì)控制寄存器進(jìn)行讀/寫操作。23位符號(hào)名稱值功能說(shuō)明CMR.7---保留CMR.6---保留CMR.5---保留CMR.4GTS睡眠1睡眠:如果沒(méi)有CAN中斷等待和總線活動(dòng),SJA1000進(jìn)入睡眠模式0喚醒:SJA1000正常工作模式CMR.3CDO清除數(shù)據(jù)溢出1清除:清除數(shù)據(jù)溢出狀態(tài)位0無(wú)動(dòng)作CMR.2RRB釋放接收緩沖器1釋放:接收緩沖器中存放信息的內(nèi)存空間將被釋放0無(wú)動(dòng)作CMR.1AT忽略發(fā)送1當(dāng)前:如果不是在處理過(guò)程中,等待處理的發(fā)送請(qǐng)求將取消0空缺:無(wú)動(dòng)作CMR.0TR發(fā)送請(qǐng)求1當(dāng)前:信息被發(fā)送0空缺:無(wú)動(dòng)作5.2.4

命令寄存器

(CMR,地址1)命令寄存器對(duì)微控制器來(lái)說(shuō)是只寫存儲(chǔ)器。如果去讀這個(gè)地址,返回值是“11111111”24位符號(hào)名稱值功能說(shuō)明SR.7BS總線狀態(tài)1總線關(guān)閉:SJA1000退出總線活動(dòng)0總線開(kāi)啟:SJA1000加入總線活動(dòng)SR.6ES出錯(cuò)狀態(tài)1出錯(cuò):至少出現(xiàn)一個(gè)錯(cuò)誤計(jì)數(shù)器滿或超過(guò)CPU報(bào)警限制0Ok:兩個(gè)錯(cuò)誤計(jì)數(shù)器都在報(bào)警限制以下SR.5TS發(fā)送狀態(tài)1發(fā)送:SJA1000在傳送信息0空閑:沒(méi)有要發(fā)送的信息SR.4RS接收狀態(tài)[注3]1接收:SJA1000正在接收信息0空閑:沒(méi)有正在接收的信息SR.3TCS發(fā)送完畢狀態(tài)[注4]1完畢:最近一次發(fā)送請(qǐng)求被成功處理0未完畢:當(dāng)前發(fā)送請(qǐng)求未處理完畢SR.2TBS發(fā)送緩沖器狀態(tài)[注5]1釋放:CPU可以向發(fā)送緩沖器寫信息0鎖定:CPU不能訪問(wèn)發(fā)送緩沖器;有信息正在等待發(fā)送或正在發(fā)送SR.1DOS數(shù)據(jù)溢出狀態(tài)[注6]1溢出:信息丟失,因?yàn)镽XFIFO中沒(méi)有足夠的空間來(lái)存儲(chǔ)它0自從最后一次清除數(shù)據(jù)溢出命令執(zhí)行無(wú)數(shù)據(jù)溢出發(fā)生SR.0RBS接收緩沖器狀態(tài)[注7]1滿:RXFIFO中有可用信息0空:無(wú)可用信息5.2.5

狀態(tài)寄存器

(SR地址2

)狀態(tài)寄存器的內(nèi)容反映了SJA1000的狀態(tài)。狀態(tài)寄存器對(duì)微控制器來(lái)說(shuō)是只讀存儲(chǔ)器。25位符號(hào)名稱值功能說(shuō)明IR7-5---保留[注1]IR.4WUI喚醒中斷[注2]1置位:退出睡眠模式時(shí)此位被置位0復(fù)位:微控制器的任何讀訪問(wèn)將清除此位IR.3DOI數(shù)據(jù)溢出中斷[注3]1設(shè)置:當(dāng)數(shù)據(jù)溢出中斷使能位被置為1時(shí)向數(shù)據(jù)溢出狀態(tài)位傳送“0-1”,此位被置位0復(fù)位:微控制器的任何讀訪問(wèn)將清除此位IR.2EI錯(cuò)誤中斷1置位:錯(cuò)誤中斷使能時(shí),錯(cuò)誤狀態(tài)位或總線狀態(tài)位的變化會(huì)置位此位0復(fù)位:微控制器的任何讀訪問(wèn)將清除此位IR.1TI發(fā)送中斷1置位:發(fā)送緩沖器狀態(tài)從0變?yōu)?(釋放)和發(fā)送中斷使能時(shí),置位此位0復(fù)位:微控制器的任何讀訪問(wèn)將清除此位IR.0RI接收中斷[注4]1置位:當(dāng)接收FIFO不空和接收中斷使能時(shí)置位此位0復(fù)位:微控制器的任何讀訪問(wèn)將清除此位5.2.6中斷寄存器

(SR地址3)中斷寄存器允許中斷源的識(shí)別。當(dāng)寄存器的一位或多位被置位時(shí),/INT(低電平有效)引腳就被激活了。寄存器被微控制器讀過(guò)之后,所有會(huì)導(dǎo)致/INT引腳上的電平漂移的位被復(fù)位。中斷寄存器對(duì)微控制器來(lái)說(shuō)是只讀存儲(chǔ)器。26發(fā)送緩沖器位于CAN地址的10~19,用來(lái)存儲(chǔ)微控制器要SJA1000發(fā)送的信息。發(fā)送緩沖器的讀/寫只能由微控制器在工作模式下完成。在復(fù)位模式下讀出的值總是“FFH”。(1)識(shí)別碼(ID)識(shí)別碼有11位(ID0-ID10)。ID10是最高位.在仲裁過(guò)程中是最先被發(fā)送到總線上的。識(shí)別碼就象信息的名字,它在接收器的接受過(guò)濾器中被用到,也在仲裁過(guò)程中決定總線訪問(wèn)的優(yōu)先級(jí)。識(shí)別碼的二進(jìn)制值越低,其優(yōu)先級(jí)越高。這是因?yàn)樵谥俨脮r(shí)有許多顯性位開(kāi)頭的字節(jié)。(2)遠(yuǎn)程發(fā)送請(qǐng)求(RTR)如果此位置1,總線將以遠(yuǎn)程結(jié)構(gòu)發(fā)送數(shù)據(jù)。這意味著此段中沒(méi)有數(shù)據(jù)字節(jié)。如果RTR位沒(méi)有被置位,數(shù)據(jù)將以數(shù)據(jù)長(zhǎng)度碼規(guī)定的長(zhǎng)度來(lái)傳送。5.2.7發(fā)送緩沖器27(3)數(shù)據(jù)長(zhǎng)度碼(DLC)信息數(shù)據(jù)區(qū)的字節(jié)數(shù)根據(jù)數(shù)據(jù)長(zhǎng)度碼編制。在遠(yuǎn)程結(jié)構(gòu)傳送中,因?yàn)镽TR被置位,數(shù)據(jù)長(zhǎng)度碼是不被考慮的。這就迫使發(fā)送/接收數(shù)據(jù)字節(jié)數(shù)為0。數(shù)據(jù)長(zhǎng)度碼必須正確設(shè)置。數(shù)據(jù)字節(jié)數(shù)是0~8,用如下方法計(jì)算:數(shù)據(jù)字節(jié)數(shù)=8×DLC.3+4×DLC.2+2×DLC.1+DLC.0為了保持兼容性,數(shù)據(jù)長(zhǎng)度碼不超過(guò)8。如果選擇的值超過(guò)8,則按照DLC規(guī)定認(rèn)為是8。(4)數(shù)據(jù)區(qū)傳送的數(shù)據(jù)字節(jié)數(shù)由數(shù)據(jù)長(zhǎng)度碼決定。發(fā)送的第一位是偏移地址12單元的數(shù)據(jù)字節(jié)1的最高位285.2.8接收緩沖器SJA1000從總線上接收到的信息存放在RXFIFO共有64字節(jié)的信息空間。接受緩沖器RXB是指在64字節(jié)RXFIFO中可以被CPU直接讀寫的寄存器。共10個(gè)字節(jié),偏移地址是20~29。

如何理解RXB與RXFIFO之間的關(guān)系?信息2信息3信息1接受緩沖器窗口CAN地址輸入信息釋放接受緩沖器命令接受緩沖器中的當(dāng)前可用信息是信息1RXFIFO中信息存儲(chǔ)示例29RXFIFO合格的新報(bào)文如果RXFIFO中沒(méi)有足夠的空間來(lái)存儲(chǔ)新的信息,CAN控制器會(huì)產(chǎn)生數(shù)據(jù)溢出。?數(shù)據(jù)溢出發(fā)生時(shí),已部分寫入

RXFIFO的當(dāng)前信息將被刪除。通過(guò)狀態(tài)位SR.1置“1”如果中斷允許,則數(shù)據(jù)溢出中斷

反應(yīng)到CPU。

64字節(jié)的RXFIFO中最多可以存儲(chǔ)的報(bào)文數(shù)?

取決于各條報(bào)文的長(zhǎng)度

10字節(jié)的RXB中可以存儲(chǔ)一個(gè)完整的報(bào)文?可以(ID+RTR+DLC+數(shù)據(jù)區(qū))305.2.9接收過(guò)濾器注意:ACR、AMR只有在控制寄存器CR的復(fù)位請(qǐng)求位CR.0置“1”時(shí)(也就是說(shuō)SJA1000在復(fù)位狀態(tài)時(shí))才可以(讀/寫)接收過(guò)濾器的作用:

使得CAN控制器只接收識(shí)別碼和接收過(guò)濾器中預(yù)設(shè)值相一致的信息進(jìn)入到RXFIFO。報(bào)文存入RXFIFO的報(bào)文被CAN控制器采用。接收過(guò)濾器的組成:

由接受代碼寄存器(ACR)和接受屏蔽寄存器(AMR)組成。

換句話講,也就是對(duì)接收過(guò)濾器的設(shè)置通過(guò)ACR、AMR實(shí)現(xiàn)。

接收代碼寄存器(ACR,地址4)接收屏蔽碼寄存器(AMR,地址5)31接收碼寄存器(ACR)的位分配BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0AC.7AC.6AC.5AC.4AC.3AC.2AC.1AC.0BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0AM.7AM.6AM.5AM.4AM.3AM.2AM.1AM.0接收屏蔽碼寄存器(AMR)的位分配

接收碼位(AC.7~AC.0)和報(bào)文標(biāo)識(shí)符高8位(ID.10~I(xiàn)D.3)中被接收屏蔽碼位(AM.7~AM.0)標(biāo)記為“相關(guān)的”位必須相等,報(bào)文才會(huì)被接收;而對(duì)于“不相關(guān)的”位,則不受這一限制。

接收屏蔽碼寄存器確定接收碼寄存器中對(duì)應(yīng)位在接收過(guò)濾中起不起作用。當(dāng)AM.X=0時(shí)起作用即“相關(guān)的”,當(dāng)AM.X=1不起作用即“不相關(guān)的”。32

一條信息通過(guò)了接受過(guò)濾器的測(cè)試,而且接收緩沖器有足夠的空間,那么標(biāo)識(shí)符和數(shù)據(jù)將被分別順次寫入RXFIFO;同時(shí):

接收碼位(AC.7~AC.0)和報(bào)文標(biāo)識(shí)符高8位(ID.10~I(xiàn)D.3)中被接收屏蔽碼位(AM.7~AM.0)標(biāo)記為“相關(guān)的”位必須相等,報(bào)文才會(huì)被接收;而對(duì)于“不相關(guān)的”位,則不受這一限制。例:驗(yàn)收代碼寄存器(ACR):00110110驗(yàn)收屏蔽寄存器(AMR):01010001允許接收的數(shù)據(jù)幀ID:0XXX1011XXX已部分寫入RXFIFO的當(dāng)前信息將被刪除。狀態(tài)寄存器SR的狀態(tài)位SR.1置“1”如果溢出中斷允許(CR.4=1),則數(shù)據(jù)溢出中斷(IR.3=1)反應(yīng)到CPU。

一條信息通過(guò)了接受過(guò)濾器的測(cè)試,如果接收緩沖區(qū)的空間已滿,數(shù)據(jù)溢出位(狀態(tài)寄存器SR.1)被置為“1”(超載)同時(shí):接收緩沖器狀態(tài)SR.0位置1(非空);如果接收中斷允許位CR.1為1(允許),則接收中斷IR.0位置1(產(chǎn)生中斷)。335.2.10其它寄存器總線定時(shí)寄存器0(BTR0,地址6)總線定時(shí)寄存器1(BTR1,地址7)3.輸出控制寄存器(OCR,地址8)4.時(shí)鐘分頻寄存器(CDR,地址31)以上寄存器是在BasicCAN與PeliCAN兩種模式下共有的寄存器。

偏移地址相同各個(gè)位的功能定義不完全相同341.總線定時(shí)寄存器0(BTR0,地址6)總線定時(shí)寄存器0定義了比特率預(yù)設(shè)值(BRP)和同步跳轉(zhuǎn)寬度(SJW)的值。復(fù)位模式下:總線定時(shí)寄存器0是可以被訪問(wèn)(讀/寫)的工作模式下:

如果選擇的是PeliCAN模式,那么此寄存器是只讀的;如果選擇的是BasicCAN模式,那么讀回的值總是FFH。總線定時(shí)寄存器0各位的功能如下:

BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0SJW.1SJW.2BRP.5BRP.4BRP.3BRP.2BRP.1BRP.035(1)比特率預(yù)引比例因子BRPCAN系統(tǒng)時(shí)鐘tSCL的周期是可編程的,而且決定了本系統(tǒng)的位定時(shí)CAN系統(tǒng)時(shí)鐘由如下公式計(jì)算:tSCL=

2×tCLK×(32×BRP.5+16×BRP.4+8×BRP.3+

4×BRP.2+2×BRP.1+BRP.0+1)式中tCLK=XTAL的頻率周期=1/fXTAL36(2)同步跳轉(zhuǎn)寬度SJWtSJW=tSCL×(2×SJW.1+SJW.0+1)

為了補(bǔ)償不同總線控制器的時(shí)鐘振蕩器之間的相位偏移,任何總線控制器必須在當(dāng)前傳送的相關(guān)信號(hào)沿進(jìn)行重同步。

同步跳轉(zhuǎn)寬度SJW定義了每一個(gè)位周期可以被重同步過(guò)程縮短或延長(zhǎng)的時(shí)間長(zhǎng)度,以時(shí)鐘周期的數(shù)目來(lái)計(jì)算,計(jì)算公式如下:372.總線定時(shí)寄存器1(BTR1,地址7)復(fù)位模式下:總線定時(shí)寄存器1是可以被訪問(wèn)(讀/寫)的工作模式下:

如果選擇的是PeliCAN模式,那么此寄存器是只讀的;如果選擇的是BasicCAN模式,那么讀回的值總是FFH??偩€定時(shí)寄存器1定義了每個(gè)位周期的長(zhǎng)度、采樣點(diǎn)的位置和在每個(gè)采樣點(diǎn)的采樣數(shù)目。BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0SAMTSEG2.2TSEG2.1TSEG2.0TSEG1.3TSEG1.2TSEG1.1TSEG1.0總線定時(shí)寄存器1各位的功能如下:

時(shí)間段TSEG1時(shí)間段TSEG2采樣位38(1)采樣SAMTSEG1和TSEG2決定了每一個(gè)位周期包含的時(shí)鐘周期的數(shù)目和采樣點(diǎn)的位置,其中:tSYNCSEG=1×tSCLtTSEG1=

tSCL×(8×TSEG1.3+4×TSEG1.2+2×TSEG1.1+TSEG1.0+1)tTSEG2=tSCL×(4×TSEG2.2+2×TSEG2.1+TSEG2.0+1)采樣位:SAM=1時(shí),總線采樣3次,建議在低/中速總線(SAEA和B級(jí))上使用,這對(duì)過(guò)濾總線上的毛刺是有益的;

SAM=0時(shí),總線采樣1次,建議用在高速總線上(SAEC級(jí))。(2)時(shí)間段1(TSEG1)和時(shí)間段2(TSEG2)返回39一個(gè)位周期的總體結(jié)構(gòu)CAN系統(tǒng)時(shí)鐘與震蕩周期關(guān)系?依據(jù)公式40波特率計(jì)算方法舉例如下:假如外部晶振為16MHz時(shí),如設(shè)定SJA1000總線定時(shí)寄存器0的值為#D3H=11010011

,設(shè)定SJA1000總線定時(shí)寄存器1的值為#0AFH=10101111,求系統(tǒng)時(shí)鐘為多少?系統(tǒng)的波特率為多少?系統(tǒng)時(shí)鐘tSCL=

2×tCLK×(32×BRP.5+16×BRP.4+8×BRP.3+

4×BRP.2+2×BRP.1+BRP.0+1)tscl=2×(16+2+1+1)×1/

(16×1000000)=2.5us每個(gè)位周期時(shí)間

=2.5×

[(8+4+2+1+1)+(2+1)+1]=50us波特率=1/50us=20KbpsTSEG1TSEG2TSYN413.輸出控制寄存器(OCR,地址8)輸出控制寄存器實(shí)現(xiàn)了軟件對(duì)輸出驅(qū)動(dòng)器的不同配置。復(fù)位模式下:輸出控制寄存器是可以被訪問(wèn)(讀/寫)的。工作模式下:

如果選擇的是PeliCAN模式,那么此寄存器是只讀的;如果選擇的是BasicCAN模式,那么讀回的值總是FFH。42BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0OCTP1OCTN1OCPOL1OCTP0OCTN0OCPOL0OCMODE1OCMODE0輸出控制寄存器在復(fù)位模式下可讀/寫訪問(wèn)。

該寄存器各位功能如下:OCTP1控制輸出晶體管P1;OCTN1控制輸出晶體管N1;OCPOL1控制輸出極性1;OCTP0控制輸出晶體管P0;OCTN0控制輸出晶體管N0;OCPOL0控制輸出極性0;控制輸出模式四種狀態(tài)43當(dāng)SJA1000在睡眠模式中時(shí),TX0和TX1引腳根據(jù)輸出控制寄存器的內(nèi)容輸出隱性的電平。

在復(fù)位狀態(tài)(復(fù)位請(qǐng)求=1)或外部復(fù)位引腳/RST被拉低時(shí),輸出TX0和TX1懸空。44發(fā)送的輸出階段可以有不同的模式。表9-11列出了由輸出方式(OCMODE1、OCMODE0)確定的四種方式設(shè)置。OCMODE1OCMODE0說(shuō)明00雙相輸出模式01測(cè)試輸出模式[注]10正常輸出模式11時(shí)鐘輸出模式45①正常輸出模式正常模式中位序列(TXD)通過(guò)TX0和TX1送出。輸出驅(qū)動(dòng)引腳TX0和TX1的電平取決于被OCTPx,OCTNx(懸空,上拉,下拉,推挽)編程的驅(qū)動(dòng)器的特性和被OCPOLx編程的輸出端極性。下拉上拉46②時(shí)鐘輸出模式

TX0引腳功能和正常模式中相同。

TX1上的數(shù)據(jù)流為發(fā)送時(shí)鐘(TXCLK)。發(fā)送時(shí)鐘的上升沿標(biāo)志著一位的開(kāi)始。時(shí)鐘脈沖寬度是1×tscl。③雙相輸出模式為克服直流分量,隱性位期間輸出懸空,顯性位期間輪流使用TX0或TX1電平發(fā)送,例如,第一位在TX0上發(fā)送,第二位在TX1上發(fā)送,第三位在TX0上發(fā)送等等依此類推。④測(cè)試輸出模式在測(cè)試輸出模式中,RX上的電平在下一個(gè)系統(tǒng)時(shí)鐘的上升沿映射到TXX上。

474.時(shí)鐘分頻寄存器(CDR,地址31)時(shí)鐘分頻寄存器控制CLKOUT的頻率、屏蔽CLKOUT引腳??刂芓X1用做專用的接收中斷輸出??刂艬asicCAN模式與PeliCAN模式的選擇。硬件復(fù)位后,該寄存器的默認(rèn)狀態(tài)在Motorola模式(00000101)12分頻,而在Intel模式(00000000)2分頻。該寄存器各位的功能如下:BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0CAN模式CBPRXINTEN(0)[注]關(guān)閉時(shí)鐘CD.2CD.1CD.0注:此位不能被寫,讀值總為0。

48(1)CD.2-CD.0復(fù)位模式和工作模式中一樣,CD.2-CD.0是可以無(wú)限制訪問(wèn)的。這些位是用來(lái)定義外部CLKOUT引腳上的頻率的。可選的頻率一覽表見(jiàn)表CD.2CD.1CD.0時(shí)鐘頻率000fosc/2001fosc/4010fosc/6011fosc/8100fosc/10101fosc/12110fosc/14111fosc49(2)時(shí)鐘關(guān)閉(BIT3)只有在復(fù)位模式中才可以寫訪問(wèn)。置位此位可關(guān)閉SJA1000的外部CLKOUT引腳輸出。關(guān)閉的CLKOUT引腳在睡眠模式中是低,而其它情況下是高。(3)RXINTEN(BIT5)復(fù)位模式中只能寫訪問(wèn)。此位允許TX1輸出用來(lái)做專用接收中斷輸出。當(dāng)一條已接收的信息成功的通過(guò)接受過(guò)濾器,一位時(shí)間長(zhǎng)度的接收中斷脈沖就會(huì)在TX1引腳輸出。發(fā)送輸出階段,TX1應(yīng)該工作在正常輸出模式。極性和輸出驅(qū)動(dòng)可以通過(guò)輸出控制寄存器編程。50(4)CBP(BIT6)只可在復(fù)位模式中寫入。置位CBP,忽略CAN輸入比較器,此時(shí)只有RX0被激活。沒(méi)有被使用的RX1輸入應(yīng)被連接到一個(gè)確定的電平(例如VSS)。(5)CAN模式(BIT7)只有在復(fù)位模式中是可以寫的。

如果CDR.7是0,CAN控制器工作于BasicCAN模式。如果CDR.7是1,

CAN控制器工作于PeliCAN模式。515.3SJA1000的PeliCAN模式

CAN控制器SJA1000的內(nèi)部寄存器對(duì)于CPU而言,表現(xiàn)為片上內(nèi)存映射的外設(shè)寄存器,共128字節(jié)。從偏移地址32起的所有內(nèi)部RAM(80字節(jié))被直接映射到CPU接口。在工作和復(fù)位模式下,SJA1000具有不同的內(nèi)部地址定義,因此必須予以區(qū)分。教材表518列出了SJA1000在PeliCAN模式下內(nèi)部寄存器地址的分配情況。需要著重說(shuō)明的是:從偏移地址11到15是PeliCAN功能的擴(kuò)展從偏移地址16到28在復(fù)位模式與工作模式下功能完全不同,使用時(shí)要特別注意。525.3.3模式寄存器MOD5.3.4命令寄存器CMR5.3.5狀態(tài)寄存器SR5.3.6中斷寄存器IR5.3.7中斷允許寄存器IER5.3.10錯(cuò)誤報(bào)警限寄存器EMLR535.3.8仲裁丟失捕捉寄存器ALC偏移地址11)

這個(gè)寄存器包括了丟失仲裁的位置信息。仲裁丟失捕捉寄存器對(duì)CPU來(lái)說(shuō)是只讀存儲(chǔ)器。保留位的讀回值為0。寄存器各位含義如下:BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0ALC.7

ALC.6

ALC.4ALC.3ALC.2ALC.1ALC.0ALC.5顯示了仲裁丟失位置,其值表示丟失仲裁位在一幀報(bào)文中所處位置的二進(jìn)制編碼

保留位

54仲裁丟失舉例圖仲裁丟失時(shí),如果中斷允許會(huì)產(chǎn)生相應(yīng)的仲裁丟失中斷。讀中斷寄存器時(shí),中斷寄存器中相應(yīng)的中斷標(biāo)志位被清除。55同時(shí),位流處理器的當(dāng)前位位置被捕捉送入仲裁丟失捕捉寄存器。寄存器中的內(nèi)容將不會(huì)改變,直到用戶通過(guò)軟件讀出這個(gè)值。隨后,捕捉機(jī)制再次被激活。仲裁丟失位解釋565.3.9錯(cuò)誤代碼捕捉寄存器ECC(偏移地址12)

這個(gè)寄存器包含了總線錯(cuò)誤類型和位置的信息錯(cuò)誤代碼捕捉寄存器對(duì)CPU來(lái)說(shuō)是只讀存儲(chǔ)器。讀中斷寄存器時(shí),中斷寄存器中相應(yīng)的中斷標(biāo)志位被清除。但直到捕捉寄存器的值被讀出之后,才有可能產(chǎn)生新的總線錯(cuò)誤中斷。BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0ECC.7

ECC.6ECC.5ECC.4ECC.3ECC.2ECC.1ECC.0總線錯(cuò)誤類型

錯(cuò)誤位置的信息見(jiàn)P153表5-2900位錯(cuò)誤01格式錯(cuò)誤10填充錯(cuò)誤11其他錯(cuò)誤錯(cuò)誤方向1接收錯(cuò)誤0發(fā)送錯(cuò)誤57

發(fā)送緩沖器的布局:無(wú)論是標(biāo)準(zhǔn)幀格式SFF或擴(kuò)展幀格式EFF配置,發(fā)送緩沖器允許定義長(zhǎng)達(dá)8個(gè)數(shù)據(jù)字節(jié)的發(fā)送報(bào)文。

5.3.13發(fā)送緩沖器

58(1)發(fā)送緩沖器組成發(fā)送緩沖器被分為描述符區(qū)和數(shù)據(jù)區(qū),描述符區(qū)的第一個(gè)字節(jié)是幀信息字節(jié)(幀信息)。它說(shuō)明了幀格式(SFF或EFF)、遠(yuǎn)程或數(shù)據(jù)幀和數(shù)據(jù)長(zhǎng)度。SFF有2字節(jié)的標(biāo)識(shí)符碼,EFF有4字節(jié)的標(biāo)識(shí)符碼。數(shù)據(jù)區(qū)最多包含8個(gè)數(shù)據(jù)字節(jié)。發(fā)送緩沖器長(zhǎng)13字節(jié),對(duì)應(yīng)偏移地址16~28。值得注意的是,使用偏移地址96~108可以直接訪問(wèn)發(fā)送緩沖器的RAM。這個(gè)RAM區(qū)是為發(fā)送緩沖器保留的。隨后的3字節(jié)(偏移地址109、110和111)是通用寄存器。(2)發(fā)送緩沖器的描述符區(qū)BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0FF

RTRXDLC.3DLC.2DLC.1DLC.0XTX幀信息SFF(偏移地址16)0標(biāo)準(zhǔn)幀0數(shù)據(jù)幀59注意:1.無(wú)論是標(biāo)準(zhǔn)幀格式還是擴(kuò)展幀格式,標(biāo)識(shí)符連續(xù)放置。發(fā)送的數(shù)據(jù)字節(jié)數(shù)由數(shù)據(jù)長(zhǎng)度碼決定。在SFF中最先發(fā)送的是在偏移地址19的數(shù)據(jù)字節(jié)的最高位。在EFF中最先發(fā)送的是在偏移地址21的數(shù)據(jù)字節(jié)的最高位。2.在BASICCAN中標(biāo)識(shí)符的標(biāo)記為ID10~ID0,

在PELICAN中標(biāo)識(shí)符的標(biāo)記在標(biāo)準(zhǔn)幀格式為ID28~ID18,在擴(kuò)展幀格式為ID28~ID18605.3.14接收緩沖器

接收緩沖器的布局與發(fā)送緩沖器很相似。接收緩沖器是RXFIFO的可訪問(wèn)部分,位于偏移地址的16~28之間(13字節(jié))

與發(fā)送緩沖器地址相同,依據(jù)是讀還是寫命令來(lái)區(qū)分是對(duì)區(qū)分,讀接收緩沖器,寫發(fā)送緩沖器615.3.15接收過(guò)濾器

接收過(guò)濾器的作用是使SJA1000能夠只讓標(biāo)識(shí)符與接收過(guò)濾器中預(yù)設(shè)值相一致的報(bào)文傳給RXFIFO。報(bào)文存入FIFO被CAN控制器采用。接收過(guò)濾器由接收碼寄存器ACRn和接收屏蔽碼寄存器AMRn定義。要接收的報(bào)文的位組合格式在接收碼寄存器中定義。相應(yīng)的接收屏蔽碼寄存器可定義某些位為“不相關(guān)”(即可為任意值)的。有兩種不同的過(guò)濾器模式可在模式寄存器中(MOD.3,AFM)選擇:單過(guò)濾器模式(AFM位是1);雙過(guò)濾器模式(AFM位是0)。621.單過(guò)濾器配置

這種過(guò)濾器配置可以定義一個(gè)長(zhǎng)度為4字節(jié)的過(guò)濾器。過(guò)濾器字節(jié)和報(bào)文字節(jié)之間位的對(duì)應(yīng)關(guān)系取決于當(dāng)前接收幀格式。(1)標(biāo)準(zhǔn)幀

當(dāng)接收到的是標(biāo)準(zhǔn)幀報(bào)文時(shí),不僅可以對(duì)報(bào)文ID進(jìn)行過(guò)濾,還可以對(duì)接收到有效數(shù)據(jù)的前2個(gè)字節(jié)進(jìn)行過(guò)濾。雖然過(guò)濾器可以對(duì)這2個(gè)數(shù)據(jù)字節(jié)進(jìn)行過(guò)濾,但如果此次發(fā)送的報(bào)文沒(méi)有數(shù)據(jù)字節(jié)或不足2個(gè)數(shù)據(jù)字節(jié)報(bào)文仍可能成功通過(guò)接收過(guò)濾。

63或與比較單過(guò)濾器接收標(biāo)準(zhǔn)幀報(bào)文的過(guò)濾(P151圖5-12)64

當(dāng)收到的是擴(kuò)展幀報(bào)文時(shí),過(guò)濾器對(duì)29位的標(biāo)識(shí)符和RTR位進(jìn)行過(guò)濾。為了成功接收一條報(bào)文,要求所有逐位的比較結(jié)果都滿足接收的條件。應(yīng)該注意的是,AMR3和ACR3的最低兩位是未使用的。為了和將來(lái)的產(chǎn)品兼容,最低兩位AMR3.1和AMR3.0應(yīng)該設(shè)置為1(不相關(guān))。(2)擴(kuò)展幀65單過(guò)濾器接收擴(kuò)展幀報(bào)文662.雙過(guò)濾器配置當(dāng)命令寄存器(MOD)中的AFM(MOD.3)位為0時(shí),SJA1000有兩個(gè)過(guò)濾器。兩個(gè)過(guò)濾器分別對(duì)報(bào)文進(jìn)行過(guò)濾,只要報(bào)文可以通過(guò)其中的一個(gè)過(guò)濾器,SJA1000就接收該報(bào)文。過(guò)濾器字節(jié)和報(bào)文字節(jié)之間位的對(duì)應(yīng)關(guān)系取決于當(dāng)前接收幀格式。標(biāo)準(zhǔn)幀

當(dāng)接收到的報(bào)文為標(biāo)準(zhǔn)幀時(shí),兩個(gè)過(guò)濾器的作用是不同的。過(guò)濾器1不僅可以對(duì)標(biāo)識(shí)符(包括RTR)進(jìn)行過(guò)濾,還可以對(duì)接收到的第一個(gè)字節(jié)進(jìn)行過(guò)濾;而過(guò)濾器2僅可對(duì)標(biāo)識(shí)符(包括RTR)進(jìn)行過(guò)濾。報(bào)文的接收與否,由兩個(gè)過(guò)濾器過(guò)濾的結(jié)果相“或”決定。67雙過(guò)濾器配置接收標(biāo)準(zhǔn)幀報(bào)文(P163圖5-14)68(2)擴(kuò)展幀

當(dāng)接收到的報(bào)文為擴(kuò)展幀時(shí),兩個(gè)過(guò)濾器的作用是一樣的,都對(duì)標(biāo)識(shí)符域的前16位進(jìn)行過(guò)濾。為了成功接收一條報(bào)文,要求逐位比較后,至少其中一個(gè)過(guò)濾器表示“采用”。69雙過(guò)濾器接收擴(kuò)展幀報(bào)文(P164圖5-15)705.4CAN驅(qū)動(dòng)器82C250/82C251

PCA82C250/82C251驅(qū)動(dòng)收發(fā)器是CAN控制器(如SJA1000)和物理傳輸線路之間的接口。它們可以用高達(dá)1Mb/s的位速率實(shí)現(xiàn)在兩條差動(dòng)電壓總線電纜上的傳輸數(shù)據(jù)。82C250的主要特性如下:與ISO/DIS11898標(biāo)準(zhǔn)完全兼容;高速(最高可達(dá)1Mb/s);具有抗汽車環(huán)境下的瞬間干擾,保護(hù)總線能力;降低射頻干擾(RFI,RadioFrequencyInterference)的斜率控制;過(guò)熱保護(hù);對(duì)電源或地的短路保護(hù);支持低電流待機(jī)方式;某一個(gè)節(jié)點(diǎn)掉電不會(huì)影響總線;可連接110個(gè)節(jié)點(diǎn)。715.4.182C250的硬件結(jié)構(gòu)及引腳定義基本性能參數(shù)見(jiàn)P167表5-49725.4.282C250的功能描述PCA82C250器件向總線提供差動(dòng)發(fā)送能力和向CAN控制器提供差動(dòng)接收能力。它與ISO11898標(biāo)準(zhǔn)完全兼容。引腳8(Rs)允許

溫馨提示

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

評(píng)論

0/150

提交評(píng)論