版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1第五章CAN器件及開發(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/B2CAN總線控制節(jié)點(diǎn)1控制節(jié)點(diǎn)n傳感器、變送器MMI
TxRx微處理器CAN控制器CAN收發(fā)器圖CAN模塊裝置傳感器、變送器MMITxRx微處理器CAN控制器CAN收發(fā)器35.1獨(dú)立CAN控制器SJA1000
SJA1000是適用于汽車和一般工業(yè)環(huán)境的獨(dú)立CAN控制器。它是PHILIPS公司生產(chǎn)。SJA1000有兩種工作模式:BasicCAN模式,PeliCAN工作模式。BasicCAN模式是PHILIPS公司生產(chǎn)的PCA82C200的替代產(chǎn)品,引腳兼容,電氣兼容。PeliCAN工作模式支持CAN2.0B協(xié)議。PeliCAN模式下,SJA1000具有與BasicCAN模式下完全不同的寄存器結(jié)構(gòu)。4SJA1000的PeliCAN模式具有以下新增特性:接收和發(fā)送標(biāo)準(zhǔn)和擴(kuò)展格式報(bào)文;達(dá)64字節(jié)的接收FIFO;對(duì)于標(biāo)準(zhǔn)和擴(kuò)展幀都有單/雙接收過(guò)濾器;可讀/寫訪問的錯(cuò)誤計(jì)數(shù)器;可編程的錯(cuò)誤報(bào)警限;最近一次錯(cuò)誤代碼寄存器;對(duì)于每一種CAN總線錯(cuò)誤都能產(chǎn)生不同的出錯(cuò)中斷;5仲裁丟失中斷,并帶有詳細(xì)丟失仲裁位置的信息;允許單次發(fā)送,當(dāng)出錯(cuò)或丟失仲裁時(shí)不重發(fā);只聽模式(監(jiān)視CAN總線,無(wú)應(yīng)答,無(wú)出錯(cuò)標(biāo)志);支持熱插拔;自身發(fā)送報(bào)文接收(自接收請(qǐng)求);硬件禁止CLKOUT輸出。6CAN控制模塊SJA1000功能框圖7SJA1000CAN控制器由下述幾部分組成:1.接口管理邏輯(IML)通過(guò)SJA1000復(fù)用的地址/數(shù)據(jù)總線,控制讀/寫選通信號(hào)等,完成對(duì)外部主控制器的連接。并向該控制器提供中斷信息和狀態(tài)信息。解釋來(lái)自CPU的命令,控制SJA1000內(nèi)部尋址,向CPU提供中斷信息和狀態(tài)信息。
82.發(fā)送緩沖器(TXB)發(fā)送緩沖器是CPU和位流處理器之間的接口。能夠存儲(chǔ)發(fā)送到CAN總線上的完整報(bào)文,緩沖器長(zhǎng)13字節(jié),由CPU寫入,位流處理器BSP讀出。93.接收緩沖器(RXB,RXFIFO)是接收過(guò)濾器和CPU之間的接口,用于儲(chǔ)存從CAN總線上接收并采用的報(bào)文。RXB,長(zhǎng)13字節(jié),作為RXFIFO,長(zhǎng)64字節(jié),的一個(gè)窗口,可被CPU訪問。在RXFIFO的支持下,CPU可以在處理一個(gè)報(bào)文的同時(shí)接收其他報(bào)文。10信息2信息3信息1接收緩沖器窗口CAN地址輸入信息釋放接收緩沖器命令接收緩沖器中的當(dāng)前可用信息是信息1圖RXFIFO中信息存儲(chǔ)示例114.接收過(guò)濾器(ACF)接收過(guò)濾器把接收數(shù)據(jù)和接收識(shí)別碼的內(nèi)容相比較,以決定是否接收信息。如果比較的結(jié)果為真,則報(bào)文完整地存入RXFIFO中。125.位流處理器:位流處理器是一個(gè)序列發(fā)生器,控制發(fā)送緩沖器、RXFIFO和CAN總線之間的數(shù)據(jù)流。完成CAN總線上的錯(cuò)誤檢測(cè)、仲裁、填充和錯(cuò)誤處理等功能。136.位定時(shí)邏輯:位定時(shí)邏輯監(jiān)視CAN總線并處理總線位定時(shí)。它同步于幀起始的從隱性到顯性電平的跳變(硬同步),并且在接收?qǐng)?bào)文的過(guò)程中進(jìn)行重同步(軟同步)。提供可編程的時(shí)間段用于補(bǔ)償傳播延時(shí)和相位變化,定義采樣時(shí)刻和一位時(shí)間內(nèi)的采樣次數(shù)。147.錯(cuò)誤管理邏輯:負(fù)責(zé)錯(cuò)誤界定。接收來(lái)自位流處理器的出錯(cuò)報(bào)告,并將分析出的出錯(cuò)狀態(tài)傳達(dá)給位流處理器和接口管理邏輯。15CAN控制模塊SJA1000管腳排列圖:控制線:7地址/數(shù)據(jù):8時(shí)鐘:2電源:6復(fù)位:1發(fā)送接收:416符號(hào)引腳說(shuō)明AD7-02,1,28-23多路地址/數(shù)據(jù)總線ALE/AS3ALE輸入信號(hào)(Intel模式),AS輸入信號(hào)(Motorola模式)/CS4片選輸入,低電平允許訪問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輸入到振蕩器放大電路;外部振蕩信號(hào)由此輸入[注]XTAL210振蕩放大電路輸出;使用外部振蕩信號(hào)時(shí)左開路輸出[注]MODE11模式選擇輸入:1=Intel模式0=Motorola模式CAN控制模塊SJA1000管腳功能描述17VDD312輸出驅(qū)動(dòng)的5V電壓源TX013從CAN輸出驅(qū)動(dòng)器0輸出到物理線路上TX114從CAN輸出驅(qū)動(dòng)器1輸出到物理線路上VSS315輸出驅(qū)動(dòng)器接地/INT16中斷輸出,用于中斷微控制器;/INT在內(nèi)部中斷寄存器各位都被置位時(shí)低電平有效;/INT是開漏輸出,且與系統(tǒng)中的其它/INT是線或的;此引腳上的低電平可以把IC從睡眠模式中激活/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的電平高,就讀回顯性電平,反之讀回隱性電平;如果時(shí)鐘分頻寄存器的CBP位被置位,就忽略CAN輸入比較器以減少內(nèi)部延時(shí);這種情況下只有RX0是激活的;高電平被認(rèn)為是隱性,而低電平被認(rèn)為是顯性。VSS221輸入比較器的接地端VDD122邏輯電路的5V電壓源18振蕩器和時(shí)鐘:四種不同的振蕩器連接方法。195.2SJA1000的BasicCAN模式5.2.1BasicCAN模式下的地址分配
SJA1000對(duì)于CPU而言,是可編程外圍芯片。SJA1000的地址區(qū)包括控制段、發(fā)送、接收信息緩沖區(qū)三大部分:①控制段:在初始化期間,控制段可被編程來(lái)配置通訊參數(shù)。同時(shí)CPU通過(guò)這個(gè)段來(lái)控制CAN總線上的通信。20復(fù)位模式:當(dāng)硬件復(fù)位或控制器掉線時(shí)會(huì)自動(dòng)進(jìn)入復(fù)位模式;工作模式:工作模式是通過(guò)置零控制寄存器的復(fù)位請(qǐng)求位激活的。
接收碼寄存器、屏蔽碼寄存器、總線定時(shí)寄存器0、總線定時(shí)寄存器1以及輸出控制寄存器只有在控制寄存器中的復(fù)位請(qǐng)求位(CR.0)被置1才可訪問。21②發(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é),22CAN地址寄存器名稱(符號(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]2310識(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)-2420識(shí)別碼(ID.10-3)接收緩沖器(10-3)(10-3)(10-3)(10-3)21識(shí)別碼(ID.2-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í)鐘分頻器時(shí)鐘分頻器時(shí)鐘分頻器25SJA1000有兩種復(fù)位方式:硬件復(fù)位與軟件復(fù)位。硬件復(fù)位是指在芯片的復(fù)位腳上提供一定寬度低電平,硬件復(fù)位需要足夠的時(shí)間才能使控制寄存器中的復(fù)位請(qǐng)求位置1;軟件復(fù)位是指通過(guò)軟件設(shè)置CR.0為1或由脫離總線引起的復(fù)位。
5.2.2復(fù)位值26SJA1000檢測(cè)到復(fù)位請(qǐng)求位為1后,將中止當(dāng)前報(bào)文的接收/發(fā)送而進(jìn)入復(fù)位模式。當(dāng)CR.0復(fù)位請(qǐng)求位從1轉(zhuǎn)變到0,SJA1000返回到工作模式。27寄存器名稱位符號(hào)名稱值硬件復(fù)位軟件CR.0或總線關(guān)閉復(fù)位控制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”讀命令寄存器的結(jié)果總是“11111111”CMR.6-保留CMR.5-保留CMR.4GTS睡眠CMR.3CDO清除數(shù)據(jù)溢出CMR.2RRB釋放接收緩沖器CMR.1AT忽略傳送CMR.0TR發(fā)送請(qǐng)求復(fù)位模式下各寄存器的狀態(tài)28狀態(tài)SR.7BS總線狀態(tài)0(在線)×SR.6ES出錯(cuò)狀態(tài)0(無(wú)錯(cuò))×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ù)位)295.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ā)送緩沖器又可訪問時(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回到工作模式30位符號(hào)名稱值功能說(shuō)明CMR.7---保留CMR.6---保留CMR.5---保留CMR.4GTS睡眠1睡眠:如果沒有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”31位符號(hào)名稱值功能說(shuō)明SR.7BS總線狀態(tài)1脫離總線:SJA1000退出總線活動(dòng)0在線: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空閑:沒有要發(fā)送的信息SR.4RS接收狀態(tài)1接收:SJA1000正在接收信息0空閑:沒有正在接收的信息SR.3TCS發(fā)送完畢狀態(tài)1完畢:最近一次發(fā)送請(qǐng)求被成功處理0未完畢:當(dāng)前發(fā)送請(qǐng)求未處理完畢SR.2TBS發(fā)送緩沖器狀態(tài)1釋放:CPU可以向發(fā)送緩沖器寫信息0鎖定:CPU不能訪問發(fā)送緩沖器;有信息正在等待發(fā)送或正在發(fā)送SR.1DOS數(shù)據(jù)溢出狀態(tài)1溢出:信息丟失,因?yàn)镽XFIFO中沒有足夠的空間來(lái)存儲(chǔ)它0自從最后一次清除數(shù)據(jù)溢出命令執(zhí)行無(wú)數(shù)據(jù)溢出發(fā)生SR.0RBS接收緩沖器狀態(tài)1滿:RXFIFO中有可用信息0空:無(wú)可用信息5.2.5狀態(tài)寄存器(SR地址2):只讀存儲(chǔ)器32位符號(hào)名稱值功能說(shuō)明IR7-5---保留[注1]IR.4WUI喚醒中斷1置位:退出睡眠模式時(shí)此位被置位0復(fù)位:微控制器的任何讀訪問將清除此位IR.3DOI數(shù)據(jù)溢出中斷1設(shè)置:當(dāng)數(shù)據(jù)溢出中斷使能位被置為1時(shí)向數(shù)據(jù)溢出狀態(tài)位傳送“0-1”,此位被置位0復(fù)位:微控制器的任何讀訪問將清除此位IR.2EI錯(cuò)誤中斷1置位:錯(cuò)誤中斷使能時(shí),錯(cuò)誤狀態(tài)位或總線狀態(tài)位的變化會(huì)置位此位0復(fù)位:微控制器的任何讀訪問將清除此位IR.1TI發(fā)送中斷1置位:發(fā)送緩沖器狀態(tài)從0變?yōu)?(釋放)和發(fā)送中斷使能時(shí),置位此位0復(fù)位:微控制器的任何讀訪問將清除此位IR.0RI接收中斷1置位:當(dāng)接收FIFO不空和接收中斷使能時(shí)置位此位0復(fù)位:微控制器的任何讀訪問將清除此位5.2.6中斷寄存器(SR地址3):只讀存儲(chǔ)器33名稱地址D7D6D5D4D3D2D1D0發(fā)送緩沖器標(biāo)識(shí)符(RTR,DLC)10ID.10ID.9ID.8ID.7ID.6ID.5ID.4ID.311ID.2ID.1ID.0RTRDLC.3DLC.2DLC.1DLC.0數(shù)據(jù)字節(jié)1~812~19數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)5.2.7發(fā)送緩沖器34發(fā)送緩沖器位于CAN地址的10~19。發(fā)送緩沖器的讀/寫只能由微控制器在工作模式下完成。在復(fù)位模式下讀出的值總是“FFH”。(1)識(shí)別碼(ID)識(shí)別碼有11位(ID.0-ID.10)。ID.10是最高位.在仲裁過(guò)程中是最先被發(fā)送到總線上的。識(shí)別碼的二進(jìn)制值越低,其優(yōu)先級(jí)越高。在接收過(guò)濾器中被用到,在仲裁過(guò)程中決定總線訪問的優(yōu)先級(jí)。(2)遠(yuǎn)程發(fā)送請(qǐng)求(RTR)如果此位置1,總線將以遠(yuǎn)程結(jié)構(gòu)發(fā)送數(shù)據(jù)。這意味著此段中沒有數(shù)據(jù)字節(jié)。如果沒有置位RTR位,數(shù)據(jù)將以數(shù)據(jù)長(zhǎng)度碼規(guī)定的長(zhǎng)度來(lái)傳送。35(3)數(shù)據(jù)長(zhǎng)度碼(DLC)信息數(shù)據(jù)區(qū)的字節(jié)數(shù)根據(jù)數(shù)據(jù)長(zhǎng)度碼編制。數(shù)據(jù)字節(jié)數(shù)是0~8,用如下方法計(jì)算:數(shù)據(jù)字節(jié)數(shù)=8×DLC.3+4×DLC.2+2×DLC.1+DLC.0如果選擇的值超過(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的最高位365.2.8接收緩沖器名稱地址D7D6D5D4D3D2D1D0接收緩沖器標(biāo)識(shí)符(RTR,DLC)20ID.10ID.9ID.8ID.7ID.6ID.5ID.4ID.321ID.2ID.1ID.0RTRDLC.3DLC.2DLC.1DLC.0數(shù)據(jù)字節(jié)1~822~29數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)37SJA1000從總線上接收到的信息存放在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ǔ)示例38RXFIFO合格的新報(bào)文如果RXFIFO中沒有足夠的空間來(lái)存儲(chǔ)新的信息,CAN控制器會(huì)產(chǎn)生數(shù)據(jù)溢出。數(shù)據(jù)溢出發(fā)生時(shí),已部分寫入
RXFIFO的當(dāng)前信息將被刪除。溢出狀態(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ū))395.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)文存入FIFO的報(bào)文被CAN控制器采用。接收過(guò)濾器的組成:
由接收代碼寄存器(ACR)和接收屏蔽寄存器(AMR)組成。
接收代碼寄存器(ACR,地址4)接收屏蔽碼寄存器(AMR,地址5)40接收碼寄存器(ACR)的位分配BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0AC.7AC.6AC.5AC.4AC.3AC.2AC.1AC.0BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0AM.7AM.6AM.5AM.4AM.3AM.2AM.1AM.0接收屏蔽碼寄存器(AMR)的位分配接收屏蔽寄存器定義接收代碼寄存器的相應(yīng)位對(duì)接收過(guò)濾器是“相關(guān)”的或“不相關(guān)”的。1=“不相關(guān)”,0=“相關(guān)”。{[(ID.10-ID.3)≡(AC.7-AC.0)]或(AM.7-AM.0)}
≡1111111141例:ACR.7ACR.6ACR.5ACR.4ACR.3ACR.2ACR.1ACR.0ACR00110110AMR01010001信息ID0X1X011XXXXID.10ID.9ID.8ID.7ID.6ID.5ID.4ID.3ID.2ID.1ID.042一條信息通過(guò)了接收過(guò)濾器的測(cè)試,而且接收緩沖器有足夠的空間,那么標(biāo)識(shí)符和數(shù)據(jù)將被分別順次寫入RXFIFO;同時(shí):接收緩沖器狀態(tài)SR.0位置1(非空);如果接收中斷允許位CR.1為1(允許),則接收中斷IR.0位置1(產(chǎn)生中斷)。如果接收緩沖區(qū)的空間已滿:狀態(tài)寄存器SR的數(shù)據(jù)溢出狀態(tài)位SR.1置“1”已部分寫入RXFIFO的當(dāng)前信息將被刪除。如果溢出中斷允許(CR.4=1),產(chǎn)生數(shù)據(jù)溢出中斷。
435.2.10其它寄存器總線定時(shí)寄存器0(BTR0,地址6)總線定時(shí)寄存器1(BTR1,地址7)3.輸出控制寄存器(OCR,地址8)4.時(shí)鐘分頻寄存器(CDR,地址31)以上寄存器是在BasicCAN與PeliCAN兩種模式下共有的寄存器。
偏移地址相同各個(gè)位的功能定義不完全相同441.總線定時(shí)寄存器0(BTR0,地址6)總線定時(shí)寄存器0定義了比特率預(yù)設(shè)值(BRP)和同步跳轉(zhuǎn)寬度(SJW)的值。復(fù)位模式下:總線定時(shí)寄存器0是可以被訪問(讀/寫)的工作模式下:
如果選擇的是PeliCAN模式,那么此寄存器是只讀的;如果選擇的是BasicCAN模式,那么讀回的值總是FFH??偩€定時(shí)寄存器0各位的功能如下:
BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0SJW.1SJW.2BRP.5BRP.4BRP.3BRP.2BRP.1BRP.045(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/fXTAL46(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ì)算公式如下:472.總線定時(shí)寄存器1(BTR1,地址7)復(fù)位模式下:總線定時(shí)寄存器1是可以被訪問(讀/寫)的工作模式下:
如果選擇的是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采樣位48(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次,建議在低/中速總線上使用。
SAM=0時(shí),總線采樣1次,建議用在高速總線上。(2)時(shí)間段1(TSEG1)和時(shí)間段2(TSEG2)返回49一個(gè)位周期的總體結(jié)構(gòu)CAN系統(tǒng)時(shí)鐘與振蕩周期關(guān)系依據(jù)公式50波特率計(jì)算方法舉例如下:假如外部晶振為16MHz時(shí),如設(shè)定SJA1000總線定時(shí)寄存器0的值為#D3H=11010011
,設(shè)定SJA1000總線定時(shí)寄存器1的值為#0AFH=10101111,求系統(tǒng)時(shí)鐘為多少?系統(tǒng)的波特率為多少?tscl=2×(16+2+1+1)/
16×1000000=2.5us每個(gè)位周期時(shí)間
=2.5×
[(8+4+2+1+1)+(2+1)+1]=50us波特率=1/50us=20KbpsTSEG1TSEG2TSYN513.輸出控制寄存器(OCR,地址8)輸出控制寄存器實(shí)現(xiàn)了軟件對(duì)輸出驅(qū)動(dòng)器的不同配置。復(fù)位模式下:輸出控制寄存器是可以被訪問(讀/寫)的。工作模式下:
如果選擇的是PeliCAN模式,那么此寄存器是只讀的;如果選擇的是BasicCAN模式,那么讀回的值總是FFH。52BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0OCTP1OCTN1OCPOL1OCTP0OCTN0OCPOL0OCMODE1OCMODE0輸出控制寄存器在復(fù)位模式下可讀/寫訪問。
該寄存器各位功能如下:OCTP1控制輸出晶體管P1;OCTN1控制輸出晶體管N1;OCPOL1控制輸出極性1;OCTP0控制輸出晶體管P0;OCTN0控制輸出晶體管N0;OCPOL0控制輸出極性0;控制輸出模式四種狀態(tài)53當(dāng)SJA1000在睡眠模式中時(shí),TX0和TX1引腳根據(jù)輸出控制寄存器的內(nèi)容輸出隱性的電平。
在復(fù)位狀態(tài)(復(fù)位請(qǐng)求=1)或外部復(fù)位引腳/RST被拉低時(shí),輸出TX0和TX1懸空。54發(fā)送的輸出階段可以有不同的模式。OCMODE1OCMODE0說(shuō)明00雙相輸出模式01測(cè)試輸出模式[注]10正常輸出模式11時(shí)鐘輸出模式55①正常輸出模式正常模式中位序列(TXD)通過(guò)TX0和TX1送出。輸出驅(qū)動(dòng)引腳TX0和TX1的電平取決于被OCTPx,OCTNx,OCPOLx編程的輸出端極性。56②時(shí)鐘輸出模式
TX0引腳功能和正常模式中相同。
TX1上的數(shù)據(jù)流為發(fā)送時(shí)鐘(TXCLK)。發(fā)送時(shí)鐘的上升沿標(biāo)志著一位的開始。時(shí)鐘脈沖寬度是1×tscl。57③雙相輸出模式
輪流使用TX0或TX1電平發(fā)送,例如,第一位在TX0上發(fā)送,第二位在TX1上發(fā)送,第三位在TX0上發(fā)送等等依此類推。58④測(cè)試輸出模式在測(cè)試輸出模式中,RX上的電平在下一個(gè)系統(tǒng)時(shí)鐘的上升沿反映到TXX上。59時(shí)鐘分頻寄存器控制CLKOUT的頻率、屏蔽CLKOUT引腳??刂芓X1上的專用接收中斷脈沖輸出。控制接收比較器旁路。控制BasicCAN模式與PeliCAN模式的選擇。硬件復(fù)位后,該寄存器的默認(rèn)狀態(tài)在Motorola模式(00000101)12分頻,而在Intel模式(00000000)2分頻。該寄存器各位的功能如下:4.時(shí)鐘分頻寄存器(CDR,地址31)60BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0CAN模式CBPRXINTEN(0)[注]關(guān)閉時(shí)鐘CD.2CD.1CD.0注:此位不能被寫,讀值總為0。
61(1)CD.2-CD.0復(fù)位模式和工作模式中一樣,CD.2-CD.0是可以無(wú)限制訪問的。這些位是用來(lái)定義外部CLKOUT引腳上的頻率的??蛇x的頻率一覽表見表CD.2CD.1CD.0時(shí)鐘頻率000fosc/2001fosc/4010fosc/6011fosc/8100fosc/10101fosc/12110fosc/14111fosc62(2)時(shí)鐘關(guān)閉(BIT3)復(fù)位模式中才可以寫訪問。設(shè)置此位可禁能SJA1000的外部CLKOUT引腳。如果置位此位,CLKOUT引腳在睡眠模式中是低,而其它情況下是高。(3)RXINTEN(BIT5)復(fù)位模式中可寫。此位允許TX1輸出用來(lái)做專用接收中斷輸出。當(dāng)一條已接收的信息成功的通過(guò)接收過(guò)濾器,一位時(shí)間長(zhǎng)度的接收中斷脈沖就會(huì)在TX1引腳輸出。發(fā)送輸出應(yīng)該工作在正常輸出模式。極性和輸出驅(qū)動(dòng)可以通過(guò)輸出控制寄存器編程。63(4)CBP(BIT6)只可在復(fù)位模式中寫入。置位CBP,忽略CAN輸入比較器,只有RX0被激活。沒有被使用的RX1輸入應(yīng)被連接到一個(gè)確定的電平VSS.(5)CAN模式(BIT7)只有在復(fù)位模式中是可以寫的。
如果CDR.7是0,CAN控制器工作于BasicCAN模式。如果CDR.7是1,
CAN控制器工作于PeliCAN模式。645.3SJA1000的PeliCAN模式
CAN控制器SJA1000的內(nèi)部寄存器對(duì)于CPU而言,表現(xiàn)為片上內(nèi)存映射的外設(shè)寄存器,共128字節(jié)。從偏移地址32起的所有內(nèi)部RAM(80字節(jié))被直接映射到CPU接口。65在工作和復(fù)位模式下,SJA1000具有不同的內(nèi)部地址定義,因此必須予以區(qū)分。見教材P138表5-18。需要著重說(shuō)明的是:從偏移地址11到15是PeliCAN功能的擴(kuò)展從偏移地址16到28在復(fù)位模式與工作模式下功能完全不同,使用時(shí)要特別注意。665.3.3模式寄存器675.3.4命令寄存器685.3.5狀態(tài)寄存器695.3.6中斷寄存器:地址3705.3.6中斷寄存器:地址3715.3.7中斷允許寄存器:地址4725.3.7中斷允許寄存器:地址4735.3.8仲裁丟失捕捉寄存器ALC(偏移地址11)
這個(gè)寄存器包括了丟失仲裁的位置信息。仲裁丟失捕捉寄存器對(duì)CPU來(lái)說(shuō)是只讀存儲(chǔ)器。保留位的讀回值為0。寄存器各位含義如下:BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0ALC.7
ALC.6ALC.4ALC.3ALC.2ALC.1ALC.0ALC.5顯示了仲裁丟失位置,其值表示丟失仲裁位在一幀報(bào)文中所處位置的二進(jìn)制編碼
保留位
74仲裁丟失舉例圖仲裁丟失時(shí),如果中斷允許會(huì)產(chǎn)生相應(yīng)的仲裁丟失中斷。讀中斷寄存器時(shí),中斷寄存器中相應(yīng)的中斷標(biāo)志位被清除。75同時(shí),位流處理器的當(dāng)前位位置被捕捉送入仲裁丟失捕捉寄存器。寄存器中的內(nèi)容將不會(huì)改變,直到用戶通過(guò)軟件讀出這個(gè)值。隨后,捕捉機(jī)制再次被激活。仲裁丟失位解釋765.3.9錯(cuò)誤代碼捕捉寄存器ECC(偏移地址12)
這個(gè)寄存器包含了總線錯(cuò)誤類型和位置的信息錯(cuò)誤代碼捕捉寄存器對(duì)CPU來(lái)說(shuō)是只讀存儲(chǔ)器。BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0ECC.7
ECC.6ECC.5ECC.4ECC.3ECC.2ECC.1ECC.0總線錯(cuò)誤類型
錯(cuò)誤位置的信息見P153表5-2900位錯(cuò)誤01格式錯(cuò)誤10填充錯(cuò)誤11其他錯(cuò)誤錯(cuò)誤方向1接收錯(cuò)誤0發(fā)送錯(cuò)誤77
發(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ā)送緩沖器
78(1)發(fā)送緩沖器組成發(fā)送緩沖器被分為描述符區(qū)和數(shù)據(jù)區(qū)發(fā)送緩沖器長(zhǎng)13字節(jié),對(duì)應(yīng)偏移地址16~28。(2)發(fā)送緩沖器的描述符區(qū)BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0FF
RTRXDLC.3DLC.2DLC.1DLC.0XTX幀信息SFF(偏移地址16)0標(biāo)準(zhǔn)幀0數(shù)據(jù)幀79注意:1.無(wú)論是標(biāo)準(zhǔn)幀格式還是擴(kuò)展幀格式,標(biāo)識(shí)符連續(xù)放置。發(fā)送的數(shù)據(jù)字節(jié)數(shù)由數(shù)據(jù)長(zhǎng)度碼決定。2.在SFF中最先發(fā)送的是偏移地址19,在EFF中最先發(fā)送的是在偏移地址21的數(shù)據(jù)字節(jié)的最高位。3.在BASICCAN中標(biāo)識(shí)符的標(biāo)記為ID.10~ID.0,
在PELICAN中標(biāo)識(shí)符的標(biāo)記在標(biāo)準(zhǔn)幀格式為ID.28~ID.18,在擴(kuò)展幀格式為ID.28~ID.0
805.3.14接收緩沖器
接收緩沖器的布局與發(fā)送緩沖器很相似。接收緩沖器是RXFIFO的可訪問部分,位于偏移地址的16~28之間
?
與發(fā)送緩沖器地址相同,依據(jù)是讀還是寫命令來(lái)區(qū)分,讀接收緩沖器
,寫發(fā)送緩沖器
815.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)。821.單過(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)文沒有數(shù)據(jù)字節(jié)或不足2個(gè)數(shù)據(jù)字節(jié)報(bào)文仍可能成功通過(guò)接收過(guò)濾。
83或與比較單過(guò)濾器接收標(biāo)準(zhǔn)幀報(bào)文的過(guò)濾(P151圖5-12)84當(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ò)展幀85單過(guò)濾器接收擴(kuò)展幀報(bào)文862.雙過(guò)濾器配置當(dāng)模式寄存器(MOD)中的AFM(MOD.3)位為0時(shí),SJA1000有兩個(gè)過(guò)濾器。只要報(bào)文可以通過(guò)其中的一個(gè)過(guò)濾器,SJA1000就接收該報(bào)文。標(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é)果相“或”決定。87雙過(guò)濾器配置接收標(biāo)準(zhǔn)幀報(bào)文(P163圖5-14)88(2)擴(kuò)展幀
當(dāng)接收到的報(bào)文為擴(kuò)展幀時(shí),兩個(gè)過(guò)濾器的作用是一樣的,都對(duì)標(biāo)識(shí)符域的前16位進(jìn)行過(guò)濾。為了成功接收一條報(bào)文,要求逐位比較后,至少其中一個(gè)過(guò)濾器表示“采用”。89雙過(guò)濾器接收擴(kuò)展幀報(bào)文(P164圖5-15)905.4CAN驅(qū)動(dòng)器82C250/82C25182C250是CAN控制器和物理總線間的接口器件,也稱為總線驅(qū)動(dòng)器。提供對(duì)總線的差動(dòng)發(fā)送和差動(dòng)接收能力。9182C250主要特性:與ISO11898標(biāo)準(zhǔn)完全兼容速度最高可達(dá)1Mbps具有抗瞬間干擾,保護(hù)總線能力降低射頻干擾(RFI)的斜率控制過(guò)熱保護(hù)對(duì)電源或地的短路保護(hù)支持低電流待機(jī)方式某一個(gè)節(jié)點(diǎn)掉電不會(huì)影響總線可連接110個(gè)節(jié)點(diǎn)925.4.182C250的硬件結(jié)構(gòu)及引腳定義基本性能參數(shù)見P167表5-499382C250基本性能數(shù)據(jù)如表945.4.282C250的功能描述PCA82C250器件向總線提供差動(dòng)發(fā)送能力和向CAN控制器提供差動(dòng)接收能力。它與ISO11898標(biāo)準(zhǔn)完全兼容。引腳8(Rs)允許選擇3種不同的工作方式:高速、斜率控制和待機(jī)。95引腳8(RS)允許選擇三種不同的工作方式:高速、斜率控制和待機(jī)。96通過(guò)將引腳8接地可選擇高速方式。發(fā)送器輸出晶體管盡可能快地啟動(dòng)和關(guān)閉。在這種模式下沒有措施用于限制信號(hào)上升和下降的斜率。應(yīng)使用屏蔽電纜避免射頻干擾問題。97對(duì)于速度較低或長(zhǎng)度較短的總線,可用非屏蔽雙絞線或平行線。為降低射頻干擾,應(yīng)限制上升和下降斜率。上升和下降斜率可通過(guò)由引腳8至地連接的電阻進(jìn)行控制。斜率正比于引腳8上的電流輸出。若引腳8接高電平,則電路進(jìn)入低電流待機(jī)方式。在這種方式下,發(fā)送器被關(guān)閉,而接收器轉(zhuǎn)至低電流。由于在待機(jī)方式下,接收器比較慢,因此,第一個(gè)報(bào)文將被丟失。98CAN收發(fā)器真值表995.4.382C250的應(yīng)用實(shí)例CAN收發(fā)器不采用和采用電流隔離時(shí)的兩種情況。圖5-18
CAN收發(fā)器不采用電流隔離時(shí)的應(yīng)用實(shí)例100圖5-19
CAN收發(fā)器采用電流隔離時(shí)的應(yīng)用實(shí)例1015.5基于CAN總線的遠(yuǎn)程工業(yè)電表抄表系統(tǒng)開發(fā)實(shí)例
5.5.1遠(yuǎn)程抄表系統(tǒng)概述
基于CAN總線的遠(yuǎn)程抄表系統(tǒng)分為兩個(gè)層次,一個(gè)是中央控制室的中央監(jiān)控單元,一個(gè)是現(xiàn)場(chǎng)的遠(yuǎn)程采集單元。
102遠(yuǎn)程采集單元負(fù)責(zé)對(duì)現(xiàn)場(chǎng)的電能表進(jìn)行實(shí)時(shí)脈沖采集,同時(shí)完成數(shù)據(jù)的統(tǒng)計(jì)、存儲(chǔ);中央監(jiān)控單元可以定期或不定期地從遠(yuǎn)程采集單元獲取所需數(shù)據(jù),并完成數(shù)據(jù)統(tǒng)計(jì)、報(bào)表打印及數(shù)據(jù)庫(kù)的管理。中央監(jiān)控單元與遠(yuǎn)程采集單元之間通過(guò)CAN總線連接在一起。中央監(jiān)控單元處于主控位置,遠(yuǎn)程采集單元可以隨時(shí)響應(yīng)中央監(jiān)控單元的命令。103基于CAN總線的遠(yuǎn)程抄表系統(tǒng)結(jié)構(gòu)圖104遠(yuǎn)程采集單元遠(yuǎn)程采集單元涉及CAN通信方面的一些功能特點(diǎn)如下:手動(dòng)設(shè)定遠(yuǎn)程采集單元地址;用電量和時(shí)段可以通過(guò)中央監(jiān)控單元設(shè)置,每個(gè)遠(yuǎn)程采集單元各自具有內(nèi)部實(shí)時(shí)時(shí)鐘,可以通過(guò)通信方式統(tǒng)一校正時(shí)鐘;可隨時(shí)響應(yīng)中央監(jiān)控單元的查詢命令,在與上位機(jī)進(jìn)行數(shù)據(jù)通信的同時(shí)不影響脈沖計(jì)數(shù)。遠(yuǎn)程采集單元主要由單片機(jī)80C552及采集、存儲(chǔ)、顯示、遙控和通信接口等模塊組成,每個(gè)采集單元能采集和處理16塊電表的電脈沖信號(hào)。105CAN通信模塊的硬件設(shè)計(jì)1065.5.3基于CAN的通信協(xié)議
遠(yuǎn)程抄表系統(tǒng)只用了CAN4種幀類型中的數(shù)據(jù)幀。假設(shè)系統(tǒng)將數(shù)據(jù)幀分為16種,有16個(gè)控制命令,中央監(jiān)控單元向遠(yuǎn)程采集單元發(fā)送的數(shù)據(jù)幀格式為:
標(biāo)識(shí)符的內(nèi)容為遠(yuǎn)程采集單元的編號(hào);命令號(hào),范圍是1~16;第4~10數(shù)據(jù)字節(jié)為命令參數(shù)。字節(jié)1字節(jié)2字節(jié)3字節(jié)4~10目的采集器號(hào)數(shù)據(jù)長(zhǎng)度命令號(hào)參數(shù)107遠(yuǎn)程采集單元向中央監(jiān)控單元發(fā)送的數(shù)據(jù)幀格式為:字節(jié)1字節(jié)2字節(jié)3字節(jié)4~10源采集器號(hào)數(shù)據(jù)長(zhǎng)度幀號(hào)返回?cái)?shù)據(jù)108
可以看到,對(duì)于一個(gè)數(shù)據(jù)幀,除了數(shù)據(jù)域可以攜帶用戶信息外,仲裁域(標(biāo)識(shí)符)和控制域(數(shù)據(jù)長(zhǎng)度)同樣可用于用戶信息的傳遞。在本例中,標(biāo)識(shí)符不僅僅是報(bào)文的編號(hào),體現(xiàn)報(bào)文的優(yōu)先級(jí),同時(shí)也說(shuō)明了該報(bào)文的來(lái)源或目的地。1095.5.5通信實(shí)例【例5.1】中央監(jiān)控單元設(shè)置地址為15的遠(yuǎn)程采集單元的系統(tǒng)時(shí)鐘,命令號(hào)為1:該命令無(wú)須遠(yuǎn)程采集單元返回任何數(shù)據(jù),因而發(fā)送成功即認(rèn)為命令已執(zhí)行。110【例5.2】中央監(jiān)控單元讀取地址為15的遠(yuǎn)程采集單元的當(dāng)前小時(shí)用電數(shù)據(jù),命令號(hào)為4:遠(yuǎn)程采集單元返回33字節(jié)有效數(shù)據(jù),共需5幀。每個(gè)表高字節(jié)表示整數(shù)部分,低字節(jié)表示小數(shù)部分。1115.6CAN通信軟件設(shè)計(jì)
通信軟件一般由三部分組成:初始化程序、發(fā)送程序和接收程序。
5.6.1初始化程序
三種方法進(jìn)入初始化程序:①上電復(fù)位;②硬件復(fù)位;③軟件復(fù)位:運(yùn)行期間通過(guò)給CAN控制器發(fā)一個(gè)復(fù)位請(qǐng)求(置復(fù)位請(qǐng)求位為1)。CAN控制器SJA1000必須在復(fù)位,并運(yùn)行初始化程序后才能用于CAN通訊。
112113在復(fù)位模式中,主控制器必須配置SJA1000控制段的有關(guān)寄存器有:時(shí)鐘分頻寄存器(CDR):BasicCAN或PeliCAN模式禁能CLKOUT管腳旁路CAN輸入比較器TX1被用作專門的接收中斷輸出114驗(yàn)收代碼和驗(yàn)收屏蔽寄存器(ACR、AMR)總線定時(shí)寄存器(BTR)定義總線上的位速率定義位周期上的采樣點(diǎn)定義在一個(gè)位周期里采樣的數(shù)目輸出控制寄存器(OCR)定義CAN總線輸出管腳TX0和TX1的輸出模式定義TX0和TX1輸出管腳配置1155.6.2數(shù)據(jù)發(fā)送程序發(fā)送程序只需要被發(fā)送的信息幀傳送到CAN控制器的發(fā)送緩沖器。將命令寄存器里的“發(fā)送請(qǐng)求”標(biāo)志置位——啟動(dòng)發(fā)送命令即可。發(fā)送程序可采用SJA1000的中斷請(qǐng)求或查詢狀態(tài)標(biāo)志兩種控制方式來(lái)實(shí)現(xiàn)。
1165.6.2.1中斷控制發(fā)送
采用中斷控制的發(fā)送方式,發(fā)送程序分為兩部分:一是主程序,二是中斷服務(wù)程序。主程序主要用于控制信息的發(fā)送,同時(shí)當(dāng)發(fā)送區(qū)滿時(shí),把要發(fā)送的信息暫存到臨時(shí)存儲(chǔ)區(qū);中斷發(fā)送程序負(fù)責(zé)把臨時(shí)存儲(chǔ)區(qū)中的暫存信息發(fā)送出去。1171185.6.2.2查詢控制發(fā)送CAN控制器的發(fā)送中斷被屏蔽。1195.6.2.3忽略發(fā)送
如果對(duì)一條發(fā)送的信息請(qǐng)求中止,可置位命令寄存器“中止發(fā)送”位,執(zhí)行中止發(fā)送命令。例如,為了發(fā)送一個(gè)比當(dāng)前信息更緊急的信息??芍兄拱l(fā)送當(dāng)前信息。
1201215.6.3數(shù)據(jù)接收程序5.6.3.1查詢控制接收1225.6.3.2中斷控制接收1235.6CAN通信軟件設(shè)計(jì)將所有信息一次讀出的過(guò)程:在釋放了接收緩沖器后,SJA1000會(huì)檢查狀態(tài)寄存器中接收緩沖器狀態(tài)“RBS”看是否有更多信息,而所有有效的信息都會(huì)被循環(huán)讀出。
1241255.6.3.3數(shù)據(jù)溢出處理
萬(wàn)一接收緩沖區(qū)FIFO滿了,但還在接收其他信息,就會(huì)通過(guò)置位狀態(tài)寄存器中的數(shù)據(jù)溢出狀態(tài)位,通知主控制器有數(shù)據(jù)溢出。如果數(shù)據(jù)溢出中斷使能,SJA1000會(huì)產(chǎn)生一個(gè)數(shù)據(jù)溢出中斷。檢測(cè)到數(shù)據(jù)溢出后,可以根據(jù)“數(shù)據(jù)溢出”原則啟動(dòng)一個(gè)相應(yīng)的處理程序。1265.6.4中斷SJA1000在BasicCAN模式里有5個(gè)中斷源,在PeliCAN模式里被擴(kuò)展到8個(gè)。一旦CAN產(chǎn)生中斷,SJA1000會(huì)將中斷輸出設(shè)為低電平,直到主控制器通過(guò)讀SJA1000的中斷寄存器對(duì)中斷采取相應(yīng)措施。中斷被處理的次序取決于系統(tǒng)。由整個(gè)系統(tǒng)的設(shè)計(jì)者決定。127PeliCAN模式128CS BITP2.7;片選信號(hào)
;CAN寄存器描述
C0_CR EQU 00 ;控制寄存器
C0_CMR EQU 01 ;命令寄存器
C0_SREQU 02 ;狀態(tài)寄存器
C0_IR EQU 03 ;中斷寄存器
C0_ACR EQU 04 ;接收碼寄存器
C0_AMR EQU 05 ;接收屏蔽寄存器
C0_BTR0 EQU 06 ;總線定時(shí)寄存器0 C0_BTR1 EQU 07 ;總線定時(shí)寄存器1 C0_OCR EQU 08 ;輸出控制寄存器
C0_CDR EQU 31 ;時(shí)鐘分頻寄存器
RECSTART EQU 40H;存放接收數(shù)據(jù)RAM區(qū)首地址程序?qū)嵗?29 ORG 0000H LJMPMAIN ORG 0013H LJMPEXINT1 ;------------------------------------------ ;初始化SJA1000寄存器;------------------------------------------ORG 0030H MAIN:CLR EA;關(guān)中斷WC0_CR:MOVR1,#C0_CR;設(shè)定控制寄存器
MOVA,#01H;復(fù)位請(qǐng)求位置1LCALLWCAN LCALLRCAN;讀出SJA1000控制寄存器值130;------------------------------------------ ;讀寫SJA1000寄存器;------------------------------------------WCAN:CLR P2.7 MOVX@R1,A SETBP2.7 RET RCAN:CLRP2.7 MOVXA,@R1 SETBP2.7 RET131ANLA,#01H;該值與#01H數(shù)值相與JZWC0_CR;非復(fù)位模式,繼續(xù)設(shè)定CRMOVR1,#C0_CDR;設(shè)定時(shí)鐘分頻寄存器MOVA,#48H;BasicCAN模式,禁能時(shí)鐘引腳LCALLWCANMOVR1,#C0_ACR;設(shè)定ACRMOVA,#55;置接收代碼為00110111(55)LCALLWCANMOVR1,#C0_AMR;設(shè)定AMRMOVA,#0FFHLCALLWCAN132MOVR1,#C0_BTR0;設(shè)定BTR0MOVA,#0D3H ;系統(tǒng)時(shí)鐘2.5usLCALLWCANMOVR1,#C0_BTR1;設(shè)定BTR1MOVA,#0AFH ;位周期時(shí)間50us,波特率20KLCALLWCAN MOVR1,#C0_OCR;設(shè)定OCRMOVA,#00011010B;正常模式,推挽方式LCALLWCAN 133RC0_CR:MOV R1,#C0_CR;設(shè)定CR MOV A,#06H;允許發(fā)送、接收中斷,
LCALLWCAN LCALLRCANANL A,#01H;與#01H數(shù)值相與
JNZ RC0_CR;非工作模式繼續(xù)設(shè)定
SETBIT1;外部中斷1后沿觸發(fā)
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度橋梁欄桿采購(gòu)合同模板6篇
- 2025年度口腔診所投資合作與風(fēng)險(xiǎn)分擔(dān)合同3篇
- 二零二五版材料采購(gòu)合同補(bǔ)充協(xié)議:技術(shù)創(chuàng)新共享2篇
- 二零二五版抵押借款合同與借款合同簽訂流程與風(fēng)險(xiǎn)防范3篇
- 二零二五版國(guó)有房產(chǎn)出售合同(智慧社區(qū)共建協(xié)議)3篇
- 2025年度餐飲業(yè)中央廚房租賃合同3篇
- 二零二五年度35KV變電站電氣設(shè)備技術(shù)改造合同3篇
- 二零二五年房地產(chǎn)項(xiàng)目鄉(xiāng)村振興戰(zhàn)略合作開發(fā)合同3篇
- 二零二五版班組分包道路養(yǎng)護(hù)合同3篇
- 2025版金融產(chǎn)品股權(quán)及債權(quán)轉(zhuǎn)讓與風(fēng)險(xiǎn)管理合同3篇
- 公務(wù)員考試工信部面試真題及解析
- GB/T 15593-2020輸血(液)器具用聚氯乙烯塑料
- 2023年上海英語(yǔ)高考卷及答案完整版
- 西北農(nóng)林科技大學(xué)高等數(shù)學(xué)期末考試試卷(含答案)
- 金紅葉紙業(yè)簡(jiǎn)介-2 -紙品及產(chǎn)品知識(shí)
- 《連鎖經(jīng)營(yíng)管理》課程教學(xué)大綱
- 《畢淑敏文集》電子書
- 頸椎JOA評(píng)分 表格
- 員工崗位能力評(píng)價(jià)標(biāo)準(zhǔn)
- 定量分析方法-課件
- 朱曦編著設(shè)計(jì)形態(tài)知識(shí)點(diǎn)
評(píng)論
0/150
提交評(píng)論