現(xiàn)場(chǎng)總線(xiàn)技術(shù)CH8BCAN應(yīng)用與實(shí)驗(yàn)系統(tǒng)設(shè)計(jì)_第1頁(yè)
現(xiàn)場(chǎng)總線(xiàn)技術(shù)CH8BCAN應(yīng)用與實(shí)驗(yàn)系統(tǒng)設(shè)計(jì)_第2頁(yè)
現(xiàn)場(chǎng)總線(xiàn)技術(shù)CH8BCAN應(yīng)用與實(shí)驗(yàn)系統(tǒng)設(shè)計(jì)_第3頁(yè)
現(xiàn)場(chǎng)總線(xiàn)技術(shù)CH8BCAN應(yīng)用與實(shí)驗(yàn)系統(tǒng)設(shè)計(jì)_第4頁(yè)
現(xiàn)場(chǎng)總線(xiàn)技術(shù)CH8BCAN應(yīng)用與實(shí)驗(yàn)系統(tǒng)設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩75頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、現(xiàn)場(chǎng)總線(xiàn)技術(shù)第八章 CAN應(yīng)用與實(shí)驗(yàn)系統(tǒng)設(shè)計(jì)教材:現(xiàn)場(chǎng)總線(xiàn)CAN原理與應(yīng)用技術(shù)2007-1118.3 CAN實(shí)驗(yàn)系統(tǒng)設(shè)計(jì)K1:點(diǎn)對(duì)點(diǎn)發(fā)送K2:廣播發(fā)送此處與非門(mén)最適宜274HC244 - Octal buffer/line driver; 3-state1G2G374LS164 8 Bit Serial In/Parallel Out Shift RegisterFeaturesGated (enable/disable) serial inputsFully buffered clock and serial inputsAsynchronous clearTypical clock fre

2、quency 36 MHzTypical power dissipation 80 mW4DS1232 - MicroMonitor ChipFEATURESHalts and restarts an out-of-control microprocessorHolds microprocessor in check during power transientsAutomatically restarts microprocessor after power failureMonitors pushbutton for external overrideAccurate 5% or 10%

3、microprocessor power supply monitoringEliminates the need for discrete componentsSpace-saving, 8-pin mini-DIPOptional 16-pin SOIC surface mount packageIndustrial temperature -40C to +85C availablePIN DESCRIPTIONPBRST - Pushbutton Reset InputTD - Time Delay SetTOL - Selects 5% or 10% VCC DetectGND -

4、GroundRST - Reset Output (Active High)RST - Reset Output (Active Low, open drain)ST - Strobe InputVCC - +5 Volt Power5ST24C08-8 Kbit Serial I2C Bus EEPROM68.3 CAN實(shí)驗(yàn)系統(tǒng)設(shè)計(jì)K1:點(diǎn)對(duì)點(diǎn)發(fā)送K2:廣播發(fā)送此處與非門(mén)最適宜7CAN實(shí)驗(yàn)系統(tǒng)軟件設(shè)計(jì)報(bào)文收發(fā)返送,任意節(jié)點(diǎn)收到報(bào)文,將該報(bào)文返送回發(fā)送站點(diǎn)接收?qǐng)?bào)文數(shù)顯示,09通訊波特率,40KBps雙濾波器模式廣播ID:0000H,按該ID發(fā)送的數(shù)據(jù)所有站點(diǎn)都接收K1按鍵,按鍵K1啟動(dòng)一次點(diǎn)對(duì)

5、點(diǎn)發(fā)送,發(fā)送ID由244外接的撥碼開(kāi)關(guān)設(shè)定K2按鍵,按鍵K2一次,啟動(dòng)一次廣播發(fā)送ID設(shè)定P0口讀入高半字節(jié),點(diǎn)對(duì)點(diǎn)通訊時(shí)接收方的ID低半字節(jié),自身的ID系統(tǒng)代碼:can_practice.asm8地址標(biāo)號(hào)定義;/89C51晶振為12MHZ;/74LS244片外存儲(chǔ)器地址為0100H ;*與課本不一樣(0200H有誤)IDADDR EQU 0100H;/CAN控制器SJA1000片外存儲(chǔ)器起始地址為0200H(*0100H有誤,與課本不一樣)MODE EQU 0200H ;/模式寄存器CMR EQU 0201H ;/命令寄存器SR EQU 0202H ;/狀態(tài)寄存器IR EQU 0203H ;

6、/中斷寄存器IER EQU 0204H ;/中斷使能寄存器BTR0 EQU 0206H ;/總線(xiàn)時(shí)序寄存器0BTR1 EQU 0207H ;/總線(xiàn)時(shí)序寄存器1OCR EQU 0208H ;/輸出控制寄存器ALC EQU 020BH ;/仲裁丟失捕捉寄存器ECC EQU 020CH ;/錯(cuò)誤代碼捕捉寄存器EWLR EQU 020DH ;/錯(cuò)誤報(bào)警限額寄存器RXERR EQU 020EH ;/RX錯(cuò)誤計(jì)數(shù)寄存器TXERR EQU 020FH ;/TX錯(cuò)誤計(jì)數(shù)寄存器TXB EQU 0210H ;/寫(xiě),發(fā)送緩沖區(qū)首地址RXB EQU 0210H ;/讀,接收緩沖區(qū)首地址9地址標(biāo)號(hào)定義(續(xù))RXCMD

7、EQU 0215H ;/擴(kuò)展幀時(shí)接收緩沖區(qū)數(shù)據(jù)第一字節(jié),十進(jìn)制21RTRDLC EQU 0210H ;/包括RTR,DLC的字節(jié)ACR EQU 0210H ;/復(fù)位時(shí):濾波碼,十進(jìn)制16AMR EQU 0214H ;/復(fù)位時(shí),屏蔽碼,十進(jìn)制20RMC EQU 021DH ;/RX報(bào)文計(jì)數(shù)器,十進(jìn)制29RBSA EQU 021EH ;/RX緩沖區(qū)起始地址,十進(jìn)制30CDR EQU 021FH ;/時(shí)鐘分頻器,十進(jìn)制31;/* 程序運(yùn)行所需存儲(chǔ)器及標(biāo)志位 *CBFRTP EQU 30H ;/CPU接收或發(fā)送報(bào)文緩沖區(qū)首地址FRNUM EQU 40H ;/接收?qǐng)?bào)文數(shù)RECOK BIT 00H ;/接

8、收?qǐng)?bào)文標(biāo)志,RECOK為1表示接收到一幀報(bào)文RFRM BIT 01H ;/回送報(bào)文標(biāo)志,RFRM為1表示該幀接收的 ;/報(bào)文應(yīng)該回送PUSHK1 BIT 02H ;/按K1鍵標(biāo)志,PUSHK1為*0*表示K1鍵按下PUSHK2 BIT 03H ;/按K2鍵標(biāo)志,PUSHK2為*0*表示K2鍵按下10程序模塊、子程序列表0、系統(tǒng)初始化程序 MAIN1、主監(jiān)控程序 MLOOP2、CAN控制器初始化子程序 CANINI3、CAN控制器查詢(xún)接收子程序 CANREC4、CAN控制器發(fā)送程序 TDATA5、按設(shè)定ID值向指定節(jié)點(diǎn)發(fā)送一幀報(bào)文 TSDATATDATA6、向CAN總線(xiàn)上其他節(jié)點(diǎn)發(fā)送一幀廣播報(bào)文

9、 TBDATATDATA7、向發(fā)送報(bào)文節(jié)點(diǎn)返回接收到報(bào)文 TRDATATDATA8、讀按鍵子程序 KEYIN9、20mS、1mS延時(shí)程序 D20MS DELAY10、顯示當(dāng)前接收?qǐng)?bào)文數(shù) DISP11MAIN - 系統(tǒng)初始化程序;/* 系統(tǒng)初始化程序 * ORG 0000H LJMP MAIN ORG 0030HMAIN:MOV SP, #6FH MOV R0 #6FH CLR A ;/清零片內(nèi)RAM,初始化變量和標(biāo)志CLAIR: MOV R0, A DJNZ R0, CLAIR ;/006FH全部清零 LCALL CANINI ;/SJA1000初始化,P230頁(yè)尾 MOV P1, #0FFH

10、 ;/讀P1前寫(xiě)1,P1外接K1,K2 MOV IE, #00H ;/采用查詢(xún)標(biāo)志方式工作,關(guān)閉所有中斷 MOV SCON, #00H ;/串行口方式0,移位寄存器方式,1*7段LED顯示12MLOOP - 主監(jiān)控程序流程MLOOP: LCALL KEYIN ;/按鍵掃描,兩個(gè)按鍵的狀態(tài)在PUSHK1 ;/和PUSHK2中,=0鍵按下 JB PUSHK1, LOOP1 ;*/與課本不一樣 LCALL TSDATA ;/K1鍵按下,發(fā)送一幀點(diǎn)到點(diǎn)報(bào)文 SETB PUSHK1 ;/*與課本不一樣LOOP1:JB PUSHK2, LOOP2 ;*/與課本不一樣 LCALL TBDATA ;/K2鍵按

11、下,發(fā)送一幀廣播報(bào)文 SETB PUSHK2 ;*/與課本不一樣LOOP2:LCALL CANREC ;/*無(wú)鍵按下,從CAN總線(xiàn)查詢(xún)接收 JNB RECOK, LOOP3 LCALL DISP ;/數(shù)碼管顯示+1后的接收?qǐng)?bào)文數(shù) CLR RECOK JNB RFRM, LOOP3 LCALL TRDATA ;/返回接收到的報(bào)文 CLR RFRM ;/回送報(bào)文標(biāo)志LOOP3:SJMP MLOOP13CANREC-CAN控制器查詢(xún)接收子程序CANREC: MOV DPTR, #SR ;/狀態(tài)寄存器 MOVX A, DPTR ANL A, #0C3H ;/讀取總線(xiàn)關(guān)閉、錯(cuò)誤狀態(tài)、接收溢出、有數(shù)據(jù)等狀

12、態(tài)位 JNZ PROC RET ;/無(wú)上述狀態(tài),返回PROC: JNB ACC.7, PROCIBUSERR: MOV DPTR, #IR ;/IR中斷寄存器,出現(xiàn)總線(xiàn)關(guān)閉 MOVX A, DPTR ;/讀中斷寄存器,清除中斷位 MOV DPTR, #MODE ;/方式寄存器地址 MOV A, #08H MOVX DPTR, A ;/將方式寄存器復(fù)位請(qǐng)求位清0 RETPROCI:MOV DPTR, #IR ;/總線(xiàn)正常, IR中斷寄存器 MOVX A, DPTR ;/讀取中斷寄存器,清除中斷位 JNB ACC.3, OTHEROVER:MOV DPTR, #CMR ;/數(shù)據(jù)溢出,命令寄存器CM

13、R MOV A, #0CH ;/00001100 B MOVX DPTR, A ;/在命令寄存器中清除數(shù)據(jù)溢出和釋放接收緩沖區(qū) RET14CANREC-CAN控制器查詢(xún)接收子程序(續(xù)1)OTHER: JB ACC.0, RECE ;/IR.0=1, 接收緩沖區(qū)有數(shù)據(jù) LJMP RECOUT ;/IR.0=0,接收緩沖區(qū)中無(wú)數(shù)據(jù),退出接收 RECE: MOV DPTR, #RXB ;/讀取并保存接收緩沖區(qū)的數(shù)據(jù) MOV R1, #CBFRTP ;/CPU片內(nèi)接收緩沖區(qū)首地址 MOVX A, DPTR ;/讀取數(shù)據(jù)幀格式 MOV R1, A ;/保存 ANL A, #0FH ;/截取數(shù)據(jù)場(chǎng)長(zhǎng)度 A

14、DD A, #4 ;/+ID字節(jié)數(shù) MOV R6,ARDATA0: INC DPTR INC R1 MOVX A, DPTR MOV R1, A DJNZ R6, RDATA0 ;/循環(huán)讀取與保存;/若接收到ID前兩個(gè)字節(jié)為5555H,表明是對(duì)方返回的報(bào)文,RFRM保持清0,接收?qǐng)?bào)文不回送 MOV A, CBFRTP+1 CJNE A, #55H, RDATA1 MOV A, CBFRTP+2 CJNE A, #55H, RDATA1 SJMP RDATA215CANREC-CAN控制器查詢(xún)接收子程序(續(xù)2)RDATA1:SETB RFRM ;/若接收ID前兩個(gè)字節(jié)不是5555H ;/則應(yīng)返回

15、該幀報(bào)文,RFRM置1RDATA2: INC RFNUM ;/接收?qǐng)?bào)文數(shù)+1 MOV A, FRNUM CJNE A, #10, ADATA3 MOV FRNUM, #0 ;/接收?qǐng)?bào)文數(shù)滿(mǎn)10時(shí),從頭開(kāi)始計(jì)數(shù)RDATA3: SETB RECOK ;/接收?qǐng)?bào)文標(biāo)志置1 MOV DPTR, #CMR ;/ MOV A, #04H ;/釋放CAN接收緩沖區(qū) MOVX DPTR, ARECOUT: MOV DPTR, #ALC ;/釋放仲裁丟失捕捉寄存器和錯(cuò)誤捕捉寄存器 MOVX A, DPTR MOV DPTR, #RCC ;/ MOVX A, DPTR RET16TDATA - CAN控制器發(fā)送程

16、序TDATA: MOV DPTR, #SR MOVX A, DPTR JB ACC.4, TDATA ;/判斷是否正在接收,=1接收TS20: MOVX A, DPTR JNB ACC.3, TS20 ;/判斷先前發(fā)送是否成功,=1成功TS21: MOVX A, DPTR JNB ACC.2, TS21 ;/判斷發(fā)送緩沖區(qū)是否鎖定,0=鎖定TS22: MOV DPTR, #TXB ;/將CPU報(bào)文發(fā)送緩沖區(qū)數(shù)據(jù)送往CAN發(fā)送緩沖區(qū) MOV R1, #CBFRTP MOV A, R1 MOVX DPTR, A ANL A, #0FH ADD A, #4 MOV R6, AMTBS: INC R1

17、 INC DPTR MOV A, R1 MOVX DPTR, A DJNZ R6, MTBS MOV DPTR, #CMR MOV A, #01H MOVX DPTR, A ;/啟動(dòng)發(fā)送 RET17TSDATA - 按設(shè)定ID值向指定節(jié)點(diǎn)發(fā)送一幀報(bào)文 ;/* 按設(shè)定ID值向指定節(jié)點(diǎn)發(fā)送一幀報(bào)文 *TSDATA: MOV CBFRTP, #88H ;CPU內(nèi)報(bào)文緩沖區(qū) ;10001000, 擴(kuò)展格式,數(shù)據(jù),8字節(jié) MOV DPTR, #IDADDR MOVX A, DPTR ;/從74LS244讀入節(jié)點(diǎn)設(shè)置ID ANL A, #0F0H ;/高半字節(jié)為接收節(jié)點(diǎn)的ID MOV CBFRTP+1,

18、#0 ; MOV CBFRTP+2, A MOVX A, DPTR ;/從74LS244讀入節(jié)點(diǎn)設(shè)置ID ANL A, #0FH ;/低半字節(jié)為節(jié)點(diǎn)自身ID MOV CBFRTP+3, #0 MOV CBFRTP+4, A LCALL TDATA RET;/* 按設(shè)定ID值向指定節(jié)點(diǎn)發(fā)送一幀報(bào)文結(jié)束 *18TBDATA-向CAN總線(xiàn)上其他節(jié)點(diǎn)發(fā)送一幀廣播報(bào)文;/向CAN總線(xiàn)上其他節(jié)點(diǎn)發(fā)送一幀廣播報(bào)文TBDATA: MOV CBFRTP, #88H MOV CBFRTP+1, #0 ;/廣播報(bào)文ID為0000H MOV CBFRTP+2, #0 MOV DPTR, #IDADDR MOVX A,

19、 DPTR ;/從74LS244讀入節(jié)點(diǎn)設(shè)置ID ANL A, #0FH ;/低半字節(jié)為節(jié)點(diǎn)自身ID MOV CBFRTP+3, #0 MOV CBFRTP+4, A LCALL TDATA RET19TRDATA -向發(fā)送報(bào)文節(jié)點(diǎn)返回接收到報(bào)文;/向發(fā)送報(bào)文節(jié)點(diǎn)返回接收到報(bào)文TRDATA: MOV CBFRTP+1, #55H ;/返回報(bào)文給發(fā)送節(jié)點(diǎn)時(shí) ;/將前兩個(gè)ID字節(jié)設(shè)置為5555H MOV CBFRTP+2, #55H ;/5555H可作為判斷接收?qǐng)?bào)文是 ;/否返送的標(biāo)志 ;/通過(guò)設(shè)置標(biāo)志避免循環(huán)發(fā)送 LCALL TDATA RET20CANINI - CAN控制器初始化子程序CAN

20、INI: MOV DPTR, #MODE ;/方式寄存器 MOV A, #01H ;/進(jìn)入復(fù)位模式,對(duì)SJA1000進(jìn)行初始化 MOVX DPTR, A MOV DPTR, #CDR ;/時(shí)鐘分頻寄存器 MOV A, #88H ;/選擇PeiliCAN模式,關(guān)閉時(shí)鐘輸出(CLKOUT) MOVX DPTR, A MOV DPTR, #IER ;/中斷允許寄存器 MOV A, #0DH ;/開(kāi)放發(fā)送中斷、溢出中斷和錯(cuò)誤警告中斷 MOVX DPTR, A MOV DPTR, #AMR ;/驗(yàn)收屏蔽寄存器 MOV R6, #4 MOV A, #0 ;/驗(yàn)收屏蔽寄存器所有位都參與濾波AMRINI: M

21、OVX DPTR, A ;/接收屏蔽寄存器賦初值 INC DPTR DJNZ R6, AMRINI21CANINI - CAN控制器初始化子程序(續(xù)1) MOV DPTR, #IDADDR;讀P0接口開(kāi)關(guān)狀態(tài)地址 MOVX A, DPTR ;/從74LS244讀入節(jié)點(diǎn)設(shè)置ID ANL A, #0FH ;/低半字節(jié)為節(jié)點(diǎn)自身ID MOV R6, A MOV DPTR, #ACR ;/驗(yàn)收代碼寄存器 MOV A, #0 ;/ACR0和ACR1存儲(chǔ)接收廣播報(bào)文時(shí)用的ID,0000H MOVX DPTR, A ;/接收代碼寄存器ACR0賦初值 INC DPTR MOVX DPTR, A ;/接收代碼寄

22、存器ACR1賦初值 INC DPTR ;/ACR2,ACR3存儲(chǔ)接收數(shù)據(jù)報(bào)文時(shí)用的ID ;/為節(jié)點(diǎn)自身ID MOVX DPTR, A ;/接收代碼寄存器ACR2賦初值 INC DPTR MOV A, R6 /自身ID MOVX DPTR, A ;/接收代碼寄存器ACR3賦初值22CANINI - CAN控制器初始化子程序(續(xù)2) MOV DPTR, #BTR0 ;/總線(xiàn)定時(shí)寄存器0 MOV A, #07H MOVX DPTR, A MOV DPTR, #BTR1 ;/總線(xiàn)定時(shí)寄存器1 MOV A, #0FFH ;/設(shè)置波特率40KBPS MOVX DPTR, A MOV DPTR, #OCR

23、;/輸出控制寄存器 MOV A, #0AAH MOVX DPTR, A MOV DPTR, #RBSA ;/接收緩沖器起始地址寄存器 MOV A, #0 ;/設(shè)置接收緩沖器FIFO起始地址為0 MOVX DPTR, A MOV DPTR, #TXERR ;/發(fā)送錯(cuò)誤計(jì)數(shù)寄存器 MOV A, #0 ;/清除發(fā)送錯(cuò)誤計(jì)數(shù)寄存器 MOVX DPTR, A MOV DPTR, #ECC ;/錯(cuò)誤代碼捕捉寄存器 MOVX DPTR, A ;/清除錯(cuò)誤代碼捕捉寄存器 MOV DPTR, #MODE ;/方式寄存器 MOV A, #00 ;/設(shè)置雙濾波接收方式,并返回工作狀態(tài) MOVX DPTR, A RE

24、T23KEYIN -讀按鍵子程序 KEYIN: ORL P1, #0C0H ;/11000000B , 讀端口前先寫(xiě)1 MOV A, P1 ANL A, #0C0H ;/從P1.6, P1.7讀入K1和K2的按鍵狀態(tài) CJNE A, #0C0H, KEYIN1 ;/有鍵按下,轉(zhuǎn)KEYIN1 RET ;/無(wú)鍵按下返回KEYIN1: LCALL D20MS ;/延時(shí) MOV A, P1 ANL A, #0C0H CJNE A, #0C0H, KEYIN2 RET ;/無(wú)鍵按下返回KEYIN2: CJNE A, #00H, KEYIN21 SJMP KEYIN3 ;/若K1, K2同時(shí)按下,無(wú)效KE

25、YIN21: MOV C, ACC.6 ;/將按鍵狀態(tài)保存到PUSHK1,PUSHK2 MOV PUSHK1, C ;/按下鍵為0,未按下為1 MOV C, ACC.7 MOV PUSHK2, CKEYIN3: MOV A, P1 ANL A, #0C0H CJNE A, #0C0H, KEYIN3 ;/判斷按鍵是否釋放,等待按鍵釋放 RET24D20MS、DELAY 20mS、1mS延時(shí)程序D20MS: MOV R7, #200 ;/延時(shí)約20MS(FOSC=12MHZ)DAY1: MOV R6, #50DAY2: DJNZ R6, DAY2 DJNZ R7, DAY1 RETDELAY:

26、MOV R6, #250 ;/延時(shí)1MSDE1: NOP NOP DJNZ R6, DE1 RET25DISP -顯示當(dāng)前接收?qǐng)?bào)文數(shù)(1位表示);/顯示當(dāng)前接收?qǐng)?bào)文數(shù)(1位表示)DISP: MOV A, FRNUM ;/讀當(dāng)前接收?qǐng)?bào)文數(shù) MOV DPTR, #LEDTAB MOVC A, A+DPTR ;/字形碼 MOV SBUF, A ;/將字形碼通過(guò)串口送74LS164,驅(qū)動(dòng)顯示 JNB TI, $ CLR TI ;/發(fā)送完畢清TI標(biāo)志 RET;LED顯示字形碼(共陰極數(shù)碼管)LEDTAB: DB 0FCH,060H,0DAH,0E2H,066H ;/0,1,2,3,4 DB 0B6H,0

27、BEH,0E0H,0FEH,0F6H ;/5,6,7,8,926結(jié)束27基本邏輯門(mén)電路的符號(hào)28SJA1000寄存器BasicCAN模式寄存器列表控制寄存器CR命令寄存器CMR狀態(tài)寄存器SR中斷寄存器IR發(fā)送緩沖器區(qū)接收緩沖器驗(yàn)收代碼寄存器ACR驗(yàn)收屏蔽寄存器AMRPeliCAN寄存器地址列表模式寄存器MOD命令寄存器CMR狀態(tài)寄存器SR中斷寄存器IR中斷允許寄存器IER仲裁丟失捕捉寄存器ALC錯(cuò)誤代碼捕捉寄存器ECC錯(cuò)誤報(bào)警限額寄存器EWLRRX錯(cuò)誤計(jì)數(shù)寄存器RXERRTX 錯(cuò)誤計(jì)數(shù)寄存器TXERR發(fā)送緩沖器TXB單濾波、標(biāo)準(zhǔn)幀濾波器配置單濾波、擴(kuò)展幀濾波器配置雙濾波、標(biāo)準(zhǔn)幀濾波器配置雙濾波

28、、擴(kuò)展幀濾波器配置RX報(bào)文計(jì)數(shù)器RMCRX緩沖器起始地址寄存器總線(xiàn)時(shí)序寄存器BTR0總線(xiàn)定時(shí)寄存器BTR1輸出控制寄存器OCR時(shí)鐘分頻寄存器CDR29BasicCAN模式寄存器列表30BasicCAN模式寄存器列表控制器段地址功能段工作模式中的寄存器功能復(fù)位模式中的寄存器功能讀寫(xiě)讀寫(xiě)0控制段控制控制控制控制1(FFH)命令(FFH)命令2狀態(tài)-狀態(tài)-3(FFH)-中斷-4(FFH)-驗(yàn)收代碼驗(yàn)收代碼5(FFH)-驗(yàn)收屏蔽驗(yàn)收屏蔽6(FFH)-總線(xiàn)定時(shí)0總線(xiàn)定時(shí)07(FFH)-總線(xiàn)定時(shí)1總線(xiàn)定時(shí)18(FFH)-輸出控制輸出控制9測(cè)試測(cè)試測(cè)試測(cè)試31BasicCAN模式寄存器列表(續(xù)1)發(fā)送緩沖器

29、地址功能段工作模式中的寄存器功能復(fù)位模式中的寄存器功能讀寫(xiě)讀寫(xiě)10發(fā)送緩沖器標(biāo)識(shí)符103標(biāo)識(shí)符103(FFH)-11標(biāo)識(shí)符20RTR和DLC標(biāo)識(shí)符20RTR和DLC(FFH)-12數(shù)據(jù)字節(jié)1數(shù)據(jù)字節(jié)1(FFH)-13數(shù)據(jù)字節(jié)2數(shù)據(jù)字節(jié)2(FFH)-14數(shù)據(jù)字節(jié)3數(shù)據(jù)字節(jié)3(FFH)-15數(shù)據(jù)字節(jié)4數(shù)據(jù)字節(jié)4(FFH)-16數(shù)據(jù)字節(jié)5數(shù)據(jù)字節(jié)5(FFH)-17數(shù)據(jù)字節(jié)6數(shù)據(jù)字節(jié)6(FFH)-18數(shù)據(jù)字節(jié)7數(shù)據(jù)字節(jié)7(FFH)-19數(shù)據(jù)字節(jié)8數(shù)據(jù)字節(jié)8(FFH)-32BasicCAN模式寄存器列表(續(xù)2)接收緩沖器及時(shí)鐘分配器33BasicCAN模式主要寄存器介紹34寄存器介紹-控制寄存器CR寄存

30、器位符號(hào)名稱(chēng)值硬件復(fù)位總線(xiàn)關(guān)閉或軟件復(fù)位CR.0=1控制寄存器CRCR.7-保留00CR.6-保留XXCR.5-保留11CR.4OIE溢出中斷使能XXCR.3EIE錯(cuò)誤中斷使能XXCR.2TIE發(fā)送中斷使能XXCR.1RIE接收中斷使能XXCR.0RR復(fù)位請(qǐng)求1(復(fù)位模式)1(復(fù)位模式)控制寄存器(CR,地址0)改變SJA1000工作狀態(tài)通過(guò)微處理器進(jìn)行置位/復(fù)位微控制器對(duì)控制寄存器進(jìn)行讀/寫(xiě)操作注:1、位為1有效 2、X表示這些位的值不受影響35命令寄存器CMR命令寄存器(CMR,地址1)微控制器發(fā)送到命令寄存器的命令啟動(dòng)一次傳輸層的操作微控制器對(duì)命令寄存器只寫(xiě),讀命令寄存器的結(jié)果總是“11

31、11 1111”寄存器位符號(hào)名稱(chēng)值硬件復(fù)位總線(xiàn)關(guān)閉或軟件復(fù)位CR.0=1命令寄存器CMRCMR.75-保留注注CMR.4GTS睡眠CMR.3CDO清除數(shù)據(jù)溢出CMR.2RRB釋放接收緩沖器CMR.1AT終止傳送CMR.0TR發(fā)送請(qǐng)求36狀態(tài)寄存器SR狀態(tài)寄存器(SR,地址2)狀態(tài)寄存器的內(nèi)容反映總線(xiàn)控制器的狀態(tài)狀態(tài)寄存器為只讀存儲(chǔ)器寄存器位符號(hào)名稱(chēng)值硬件復(fù)位總線(xiàn)關(guān)閉或軟件復(fù)位CR.0=1狀態(tài)寄存器SRSR.7BS總線(xiàn)狀態(tài)0(總線(xiàn)開(kāi)啟)XSR.6ES出錯(cuò)狀態(tài)0(OK)XSR.5TS發(fā)送狀態(tài)0(空閑)0(空閑)SR.4RS接收狀態(tài)0(空閑)0(空閑)SR.3TCS發(fā)送完畢狀態(tài)1(完畢)XSR.2T

32、BS發(fā)送緩沖器狀態(tài)1(釋放)1(釋放)SR.1DOS數(shù)據(jù)溢出狀態(tài)0(無(wú)溢出)0(無(wú)溢出)SR.0RBS接收緩沖器狀態(tài)0(空)0(空)37中斷寄存器IR中斷寄存器(IR,地址3)識(shí)別SJA1000中斷源寄存器任一位(及一位以上)被置位時(shí),/INT引腳被激活(低電平)該寄存器被微處理器讀出后,所有位被SJA1000復(fù)位,/INT引腳電平浮動(dòng)(高阻狀態(tài))微處理器只讀寄存器位符號(hào)名稱(chēng)值硬件復(fù)位總線(xiàn)關(guān)閉或軟件復(fù)位CR.0=1中斷寄存器IRIR.75-保留11IR.4WUI喚醒中斷0(復(fù)位)0(復(fù)位)IR.3DOI數(shù)據(jù)溢出中斷0(復(fù)位)0(復(fù)位)IR.2EI錯(cuò)誤中斷0(復(fù)位)X(注)IR.1TI發(fā)送中斷0

33、(復(fù)位)0(復(fù)位)IR.0RI接收中斷0(復(fù)位)0(復(fù)位)注:在錯(cuò)誤中斷開(kāi)啟情況下,總線(xiàn)關(guān)閉時(shí)錯(cuò)誤中斷位被置位38發(fā)送緩沖器區(qū)發(fā)送緩沖器是用來(lái)存儲(chǔ)微控制器要SJA1000 發(fā)送的報(bào)文分為描述符區(qū)和數(shù)據(jù)區(qū)發(fā)送緩沖器的讀/寫(xiě)只能由微控制器在工作模式下完成,在復(fù)位模式下讀出的值總是FFH39接收緩沖器接收緩沖器的全部列表和發(fā)送緩沖器類(lèi)似接收緩沖器是RXFIFO 中可訪(fǎng)問(wèn)的部分,位于CAN 地址的20-29 之間識(shí)別碼、遠(yuǎn)程發(fā)送請(qǐng)求位和數(shù)據(jù)長(zhǎng)度碼同發(fā)送緩沖器的相同,只不過(guò)是在地址20-29 40驗(yàn)收代碼寄存器ACR在驗(yàn)收濾波器的幫助下,CAN 控制器能夠允許RXFIFO 只接收同識(shí)別碼和驗(yàn)收濾波器中預(yù)

34、設(shè)值相一致的報(bào)文驗(yàn)收濾波器通過(guò)驗(yàn)收代碼寄存器ACR和驗(yàn)收屏蔽寄存器AMR來(lái)定義驗(yàn)收代碼寄存器ACR,地址4復(fù)位請(qǐng)求位被置1(當(dāng)前)時(shí),這個(gè)寄存器是可以訪(fǎng)問(wèn)(讀/寫(xiě))如果一條報(bào)文通過(guò)了驗(yàn)收濾波器的測(cè)試而且接收緩沖器又有空間,那么標(biāo)識(shí)符和數(shù)據(jù)將被分別順次寫(xiě)入RXFIFO 當(dāng)報(bào)文被正確的接收完畢就會(huì):接收狀態(tài)位置1(滿(mǎn))接收中斷使能位置1(使能),接收中斷置1(產(chǎn)生中斷)41驗(yàn)收屏蔽寄存器AMR驗(yàn)收屏蔽寄存器AMR,地址5如果復(fù)位請(qǐng)求位置1(當(dāng)前),這個(gè)寄存器可以被訪(fǎng)問(wèn)(讀/寫(xiě))驗(yàn)收屏蔽寄存器定義驗(yàn)收代碼寄存器的相應(yīng)位對(duì)驗(yàn)收濾波器是相關(guān)的(AM.X = 0 )或無(wú)關(guān)的(AM.X = 1),(即可為任

35、意值)驗(yàn)收代碼位(AC.7-AC.0)和標(biāo)識(shí)碼的高8 位(ID.10-ID.3)與驗(yàn)收屏蔽位AM.7-AM.0的”相關(guān)”的位的對(duì)應(yīng)位必須相等,即如果滿(mǎn)足以下條件的描述則報(bào)文被接收(ID.10 to ID.3) (AC.7 to AC.0) (AM.7 to AM.0) 1111 1111 BID 10010001標(biāo)識(shí)符高8位AC 10010110驗(yàn)收代碼位eq= 11111000驗(yàn)收AM 00000111驗(yàn)收屏蔽位V= 11111111驗(yàn)收屏蔽結(jié)果,通過(guò)42PeliCAN模式寄存器列表43PeliCAN寄存器地址列表總線(xiàn)時(shí)序0總線(xiàn)時(shí)序1總線(xiàn)時(shí)序0總線(xiàn)時(shí)序1總線(xiàn)時(shí)序0總線(xiàn)時(shí)序1錯(cuò)誤報(bào)警限額錯(cuò)誤報(bào)

36、警限額錯(cuò)誤報(bào)警限額44PeliCAN寄存器地址列表(續(xù)1)RX標(biāo)識(shí)碼1RX標(biāo)識(shí)碼1RX標(biāo)識(shí)碼2RX標(biāo)識(shí)碼2TX標(biāo)識(shí)碼1TX標(biāo)識(shí)碼2TX標(biāo)識(shí)碼1TX標(biāo)識(shí)碼2RX標(biāo)識(shí)碼3RX標(biāo)識(shí)碼4TX標(biāo)識(shí)碼3TX標(biāo)識(shí)碼445PeliCAN寄存器地址列表(續(xù)2)RX報(bào)文計(jì)數(shù)器RX報(bào)文計(jì)數(shù)器RX緩沖區(qū)起始地址(RASB)46PeliCAN模式主要寄存器介紹47模式寄存器MOD,CAN地址0位符號(hào)名稱(chēng)值功能MOD.75-保留MOD.4SM睡眠模式(注1)1睡眠:沒(méi)有CAN中斷等待和總線(xiàn)活動(dòng)時(shí),CAN控制器進(jìn)入睡眠模式0喚醒:從睡眠狀態(tài)中喚醒MOD.3AFM驗(yàn)收濾波器模式(注2)1單:選擇單個(gè)驗(yàn)收濾波器(32位長(zhǎng)度)0

37、雙:選擇兩個(gè)驗(yàn)收濾波器(每個(gè)有16位長(zhǎng)度)MOD.2STM自檢模式(注2)1自檢:此模式可以使用自接收請(qǐng)求命令在沒(méi)有任何其它活動(dòng)的節(jié)點(diǎn)參與時(shí)進(jìn)行一個(gè)節(jié)點(diǎn)檢測(cè);即使沒(méi)有接收后的應(yīng)答,CAN控制器也會(huì)成功發(fā)送0正常:成功發(fā)送時(shí)必須得到應(yīng)答信號(hào)MOD.1LOM只聽(tīng)模式(注2、3)1只聽(tīng):這種模式中,即使成功接收?qǐng)?bào)文,CAN控制器也不向總線(xiàn)發(fā)送應(yīng)答信號(hào);錯(cuò)誤計(jì)數(shù)器停止在當(dāng)前值0正常模式MOD.0RM復(fù)位模式(注4)1復(fù)位:檢測(cè)到復(fù)位模式位被置位時(shí),終止當(dāng)前正在進(jìn)行的接收/發(fā)送報(bào)文,進(jìn)入復(fù)位模式0正常:復(fù)位模式位接收到1-0的跳變后,CAN控制器回到工作模式48命令寄存器CMR,CAN地址1位符號(hào)名稱(chēng)值

38、功能描述CMR.75-保留CMR.4SRR自接收請(qǐng)求(注1,注2)1Present;報(bào)文可被同時(shí)發(fā)送和接收0-absent(空缺)CMR.3CDO清除數(shù)據(jù)溢出(注2)1清除;數(shù)據(jù)溢出狀態(tài)位被清除0-(無(wú)動(dòng)作)CMR.2RRB釋放接收緩沖器(注4)1釋放;接收緩沖器FXFIFO中當(dāng)前報(bào)文內(nèi)存空間被釋放0-(無(wú)動(dòng)作)CMR.1AT中止發(fā)送(注2、5)1Present;如果不是正在處理,等待中的發(fā)送請(qǐng)求被取消0- absent(空缺)CMR.0TR發(fā)送請(qǐng)求(注2,6)1Present;報(bào)文被發(fā)送0- absent(空缺)49狀態(tài)寄存器SR,CAN地址2CAN地址2,狀態(tài)寄存器反映CAN 控制器的狀態(tài)

39、,只讀寄存器位符號(hào)名稱(chēng)值功能描述SR.7BS總線(xiàn)狀態(tài);注11總線(xiàn)關(guān)閉;CAN控制器不參與總線(xiàn)活動(dòng)0總線(xiàn)開(kāi)啟;CAN控制器參與總線(xiàn)活動(dòng)SR.6ES出錯(cuò)狀態(tài);注21出錯(cuò);至少一個(gè)錯(cuò)誤計(jì)數(shù)器滿(mǎn)或超過(guò)了由錯(cuò)誤報(bào)警限制寄存器(EWLR)定義的CPU報(bào)警限制0ok;兩個(gè)錯(cuò)誤計(jì)數(shù)器都在報(bào)警限制以下SR.5TS發(fā)送狀態(tài);注31發(fā)送;CAN控制器正在發(fā)送報(bào)文0空閑50狀態(tài)寄存器SR (續(xù)1)位符號(hào)名稱(chēng)值功能描述SR.4RS接收狀態(tài);注31接收;CAN控制器正在接收?qǐng)?bào)文0空閑SR.3TCS發(fā)送完畢狀態(tài);注41完畢;最后一次發(fā)送已被成功處理0未完;當(dāng)前請(qǐng)求的發(fā)送未處理完SR.2TBS發(fā)送緩沖器狀態(tài);注51釋放;CP

40、U可以向發(fā)送緩沖器中寫(xiě)報(bào)文0鎖定;CPU不能訪(fǎng)問(wèn)發(fā)送緩沖器;報(bào)文是在等待發(fā)送或是正在發(fā)送SR.1DOS數(shù)據(jù)溢出狀態(tài);注61溢出;報(bào)文因RXFIFO中無(wú)足夠的存儲(chǔ)空間而丟失0空缺(absent);自上一次執(zhí)行清除數(shù)據(jù)溢出命令以來(lái)無(wú)數(shù)據(jù)溢出發(fā)生SR.0RBS接收緩沖器狀態(tài);注71滿(mǎn);RXFIFO中有可用報(bào)文0空;無(wú)可用報(bào)文51中斷寄存器IR,CAN地址3中斷寄存器IR,CAN地址3中斷源的識(shí)別當(dāng)寄存器的一位或多位被置位時(shí),CAN 中斷將反映到CPUCPU讀此寄存器的時(shí)候除了接收中斷外的所有位都被復(fù)位只讀存儲(chǔ)器位符號(hào)名稱(chēng)值功能描述IR.7BEI總線(xiàn)錯(cuò)誤中斷1當(dāng)CAN控制器檢測(cè)到總線(xiàn)錯(cuò)誤,且中斷使能寄

41、存器中的BEIE被置位時(shí)此位被置位0復(fù)位IR.6ALI仲裁丟失中斷1當(dāng)CAN控制器丟失仲裁,變?yōu)榻邮掌骱椭袛嗍鼓芗拇嫫鞯腁LIE被置位時(shí),此位置位0復(fù)位IR.5EPI錯(cuò)誤認(rèn)可中斷1當(dāng)CAN控制器到達(dá)錯(cuò)誤認(rèn)可狀態(tài)(至少一個(gè)錯(cuò)誤計(jì)數(shù)器超過(guò)協(xié)議規(guī)定的值127)或從錯(cuò)誤認(rèn)可狀態(tài)又進(jìn)入錯(cuò)誤激活狀態(tài)以及中斷使能寄存器的EPIE位被置位時(shí)此位被置10復(fù)位52中斷寄存器IR(續(xù))位符號(hào)名稱(chēng)值功能描述IR.4WUI喚醒中斷;注11當(dāng)CAN控制器在睡眠模式中檢測(cè)到總線(xiàn)的活動(dòng)且中斷使能寄存器的WUIE位被置1時(shí)此位被置位0復(fù)位IR.3DOI數(shù)據(jù)溢出中斷1數(shù)據(jù)溢出狀態(tài)位有0-1 跳變且中斷使能寄存器的DOIE位被置位

42、時(shí)此位被置10復(fù)位IR.2EI出錯(cuò)報(bào)警中斷1錯(cuò)誤狀態(tài)位和總線(xiàn)狀態(tài)位的改變和中斷使能寄存器的EIE位被置位時(shí)此位被置10復(fù)位IR.1TI發(fā)送中斷1發(fā)送緩沖器狀態(tài)從0-1(釋放)跳變且中斷使能寄存器的TIE位被置位時(shí)此位被置10復(fù)位IR.0RI接收中斷;注21接收FIFO不空且中斷使能寄存器的RIE位被置位時(shí)此位被置10復(fù)位;RXFIFO中無(wú)可用報(bào)文53中斷允許寄存器IER,CAN地址4中斷使能寄存器IER,CAN地址4該寄存器能使不同類(lèi)型的中斷源對(duì)CPU有效可讀/寫(xiě)寄存器位符號(hào)名稱(chēng)值功能描述IER.7BEIE總線(xiàn)錯(cuò)誤中斷允許1如果檢測(cè)到總線(xiàn)錯(cuò)誤,則CAN控制器請(qǐng)求相應(yīng)的中斷0禁止IER.6ALI

43、E仲裁丟失中斷允許1如果CAN控制器已丟失了仲裁,則請(qǐng)求相應(yīng)的中斷0禁止IER.5EPIE錯(cuò)誤認(rèn)可中斷允許1若CAN控制器的錯(cuò)誤狀態(tài)改變(從認(rèn)可到激活或反之), 則請(qǐng)求相應(yīng)的中斷0禁止54中斷允許寄存器(續(xù))位符號(hào)名稱(chēng)值功能描述IER.4WUIE喚醒中斷允許;注11如果睡眠模式中的CAN控制器被喚醒,則請(qǐng)求相應(yīng)的中斷0禁止IER.3DOIE數(shù)據(jù)溢出中斷允許1如果數(shù)據(jù)溢出狀態(tài)位被置位(見(jiàn)狀態(tài)寄存器;表14),CAN控制器請(qǐng)求相應(yīng)的中斷0禁止IER.2EIE出錯(cuò)報(bào)警中斷允許1如果錯(cuò)誤或總線(xiàn)狀態(tài)改變(見(jiàn)狀態(tài)寄存器;表14),CAN控制器請(qǐng)求相應(yīng)的中斷0禁止IER.1TIE發(fā)送中斷允許1當(dāng)報(bào)文被成功發(fā)

44、送或發(fā)送緩沖器又可訪(fǎng)問(wèn)(例如,中止發(fā)送命令后)時(shí),CAN控制器請(qǐng)求相應(yīng)的中斷0禁止IER.0RIE接收中斷允許;注21當(dāng)接收緩沖器狀態(tài)是滿(mǎn)時(shí),CAN控制器請(qǐng)求相應(yīng)的中斷0禁止55仲裁丟失捕捉寄存器ALC,CAN地址11仲裁丟失捕捉寄存器,ALC,CAN地址11該寄存器包括了仲裁丟失的位置的信息,只讀存儲(chǔ)器,保留位的讀出值為0仲裁丟失時(shí),會(huì)產(chǎn)生相應(yīng)的仲裁丟失中斷(中斷允許時(shí))。同時(shí),位流處理器的當(dāng)前位的位置被捕捉送入仲裁丟失捕捉寄存器。一直到用戶(hù)通過(guò)軟件讀這個(gè)值,寄存器中的內(nèi)容都不會(huì)改變,隨后捕捉機(jī)制又被激活讀中斷寄存器時(shí),中斷寄存器中相應(yīng)的中斷標(biāo)志位被清除。直到仲裁丟失捕捉寄存器被讀一次之后,

45、新的仲裁丟失中斷才可能有效56錯(cuò)誤代碼捕捉寄存器ECC,CAN地址12錯(cuò)誤代碼捕捉寄存器,ECC,CAN地址12包含總線(xiàn)錯(cuò)誤的類(lèi)型和位置信息只讀ECC.7 和ECC.6 的功能說(shuō)明ECC.7ECC.6功能00位錯(cuò)01格式錯(cuò)10填充錯(cuò)11其它錯(cuò)誤57錯(cuò)誤報(bào)警限額寄存器EWLR,CAN地址13錯(cuò)誤報(bào)警限額寄存器,EWLR,CAN地址13定義錯(cuò)誤報(bào)警限額復(fù)位模式時(shí)可讀/寫(xiě)B(tài)IT.7BIT.6BIT.5BIT.4BIT.3BIT.2BIT.1BIT.0EWL.7EWL.6EWL.5EWL.4EWL.3EWL.2EWL.1EWL.0硬件復(fù)位后錯(cuò)誤報(bào)警限額寄存器的默認(rèn)值為96復(fù)位模式取消后,該寄存器的新值

46、引起的出錯(cuò)狀態(tài)的改變和錯(cuò)誤報(bào)警中斷才有可能發(fā)生58RX錯(cuò)誤計(jì)數(shù)寄存器RXERR,CAN地址14RX錯(cuò)誤計(jì)數(shù)寄存器,RXERR,CAN地址14RX錯(cuò)誤計(jì)數(shù)寄存器反應(yīng)了接收錯(cuò)誤計(jì)數(shù)器的當(dāng)前值硬件復(fù)位后寄存器被初始化為0在工作模式中,只讀寄存器;在復(fù)位模式中可寫(xiě)寄存器如果發(fā)生總線(xiàn)關(guān)閉RX錯(cuò)誤計(jì)數(shù)器被初始化為0總線(xiàn)關(guān)閉期間寫(xiě)寄存器無(wú)效軟件復(fù)位(MOD.0=1)時(shí),接收錯(cuò)誤計(jì)數(shù)器的值不受影響注意:只有先進(jìn)入復(fù)位模式,才有可能由CPU改變RX錯(cuò)誤計(jì)數(shù)器值復(fù)位模式被取消后,由新的內(nèi)容引起的錯(cuò)誤狀態(tài)的改變、錯(cuò)誤報(bào)警、錯(cuò)誤中斷才可能發(fā)生BIT.7BIT.6BIT.5BIT.4BIT.3BIT.2BIT.1BIT

47、.0RXERR.7RXERR.6RXERR.5RXERR.4RXERR.3RXERR.2RXERR.1RXERR.059TX 錯(cuò)誤計(jì)數(shù)寄存器TXERR,CAN地址15TX錯(cuò)誤計(jì)數(shù)寄存器,TXERR,CAN地址15TX 錯(cuò)誤計(jì)數(shù)寄存器反映了發(fā)送錯(cuò)誤計(jì)數(shù)器的當(dāng)前值工作模式中,只讀;復(fù)位模式中,可寫(xiě)硬件復(fù)位后,寄存器被初始化為0如果總線(xiàn)關(guān)閉,TX 錯(cuò)誤計(jì)數(shù)器被初始化為127 來(lái)計(jì)算總線(xiàn)定義的最小時(shí)間(128 個(gè)總線(xiàn)空閑信號(hào))。這段時(shí)間里讀TX 錯(cuò)誤計(jì)數(shù)器將反映出總線(xiàn)關(guān)閉恢復(fù)的狀態(tài)信息在總線(xiàn)關(guān)閉時(shí),向TXERR 寫(xiě)0-254范圍的值會(huì)清除總線(xiàn)關(guān)閉標(biāo)志在復(fù)位模式被清除后,控制器會(huì)等待一個(gè)11位的連續(xù)隱性

48、位(總線(xiàn)空閑)軟件復(fù)位(MOD.0=1)時(shí),發(fā)送錯(cuò)誤計(jì)數(shù)器的值不受影響60發(fā)送緩沖器TXB,CAN地址1628發(fā)送緩沖器的布局標(biāo)識(shí)碼區(qū)標(biāo)識(shí)碼區(qū)的第一個(gè)字節(jié)是幀信息字節(jié)(結(jié)構(gòu)信息),說(shuō)明幀格式(SFF或EFF)、遠(yuǎn)程幀或數(shù)據(jù)幀和數(shù)據(jù)長(zhǎng)度SFF(標(biāo)準(zhǔn)幀格式)有兩個(gè)字節(jié)的標(biāo)識(shí)碼,EFF(擴(kuò)展幀格式)有四個(gè)字節(jié)的標(biāo)識(shí)碼數(shù)據(jù)區(qū)數(shù)據(jù)區(qū)最多長(zhǎng)8 個(gè)數(shù)據(jù)字節(jié)發(fā)送緩沖器長(zhǎng)13個(gè)字節(jié),在CAN 地址的16-28注意使用CAN 地址的96-108可以直接訪(fǎng)問(wèn)發(fā)送緩沖器的RAM,這個(gè)RAM區(qū)是為發(fā)送緩沖器保留的,下面三個(gè)字節(jié)是通用的CAN地址109、110和11161驗(yàn)收濾波器驗(yàn)收濾波器只有當(dāng)接收?qǐng)?bào)文中的標(biāo)識(shí)碼和驗(yàn)收

49、濾波器預(yù)定義的值相等時(shí),CAN 控制器才允許將已接收?qǐng)?bào)文存入RXFIFO驗(yàn)收濾波器由驗(yàn)收代碼寄存器(ACRn)和驗(yàn)收屏蔽寄存器AMRn定義要接收的報(bào)文的標(biāo)識(shí)碼位模式在驗(yàn)收代碼寄存器中定義,相應(yīng)的驗(yàn)收屏蔽寄存器允許定義驗(yàn)收代碼寄存器中的某些位為無(wú)關(guān),即可為任意值在模式寄存器MOD中選擇MOD.3,AFM單濾波器模式AFM=1雙濾波器模式AFM=06262驗(yàn)收濾波器-單濾波器單濾波器配置單濾波器配置定義一個(gè)4 字節(jié)長(zhǎng)濾波器濾波器字節(jié)和報(bào)文字節(jié)之間位的對(duì)應(yīng)關(guān)系取決于當(dāng)前接收幀格式標(biāo)準(zhǔn)幀格式如果接收的是標(biāo)準(zhǔn)幀格式的信息,在驗(yàn)收濾波中使用包括RTR在內(nèi)的完整標(biāo)識(shí)碼和前兩個(gè)數(shù)據(jù)字節(jié)用于數(shù)據(jù)濾波如果由于置位

50、RTR位而導(dǎo)致沒(méi)有數(shù)據(jù)字節(jié),或因?yàn)樵O(shè)置相應(yīng)的數(shù)據(jù)長(zhǎng)度代碼而沒(méi)有或只有一個(gè)數(shù)據(jù)字節(jié),報(bào)文也會(huì)被接受對(duì)于一個(gè)成功接收的報(bào)文所有單個(gè)位在濾波器中的比較結(jié)果都必須為“接受”(下頁(yè)圖)6363標(biāo)準(zhǔn)幀濾波64(ID.10 to ID.3) (AC.7 to AC.0) (AM.7 to AM.0) 1111 1111 B64標(biāo)準(zhǔn)幀濾波(續(xù))注意AMR1 和ACR1 的低四位不用,為了和將來(lái)的產(chǎn)品兼容這些位可通過(guò)設(shè)置AMR1.4、AMR1.3、AMR1.2和AMR1.0為“1” 而編程為“無(wú)關(guān),Dont Care”6565擴(kuò)展幀濾波擴(kuò)展幀格式如果接收的報(bào)文是擴(kuò)展幀格式報(bào)文,包括RTR 位的全部標(biāo)識(shí)碼將被用于

51、數(shù)據(jù)濾波為了成功接收?qǐng)?bào)文每個(gè)位的比較后都必須發(fā)出接受信號(hào)66ACRAMRID66擴(kuò)展幀濾波(續(xù))注意AMR3 的最低兩位和ACR3最低兩位不用,為了和將來(lái)的產(chǎn)品兼容這些位應(yīng)該通過(guò)置位AMR3.1 和AMR3.0 來(lái)編程為“無(wú)關(guān),Dont Care”6767驗(yàn)收濾波器-雙濾波器雙濾波器配置該配置定義兩個(gè)短濾波器一條接收的報(bào)文要和兩個(gè)濾波器比較來(lái)決定是否放入接收緩沖器中至少有一個(gè)濾波器驗(yàn)收通過(guò),接收的報(bào)文才有效濾波器字節(jié)和報(bào)文字節(jié)之間位的對(duì)應(yīng)關(guān)系取決于當(dāng)前接收的幀格式6868標(biāo)準(zhǔn)幀濾波接收到標(biāo)準(zhǔn)幀報(bào)文時(shí),兩個(gè)濾波器是不一樣第一個(gè)濾波器比較包括RTR 位的整個(gè)標(biāo)準(zhǔn)標(biāo)識(shí)碼和報(bào)文的第一個(gè)數(shù)據(jù)字節(jié)第二個(gè)濾

52、波器只比較包括RTR 位的整個(gè)標(biāo)準(zhǔn)標(biāo)識(shí)碼為了成功接收?qǐng)?bào)文所有單個(gè)位的比較時(shí)應(yīng)至少有一個(gè)濾波器表示“接受”RTR位置位或數(shù)據(jù)長(zhǎng)度代碼是0時(shí)表示沒(méi)有數(shù)據(jù)字節(jié)存在,無(wú)論怎樣只要從開(kāi)始到RTR位的部分比較結(jié)果為“接受”,接收的報(bào)文就可以通過(guò)濾波器1如果沒(méi)有向?yàn)V波器請(qǐng)求數(shù)據(jù)字節(jié)濾波,AMR1 和AMR3 的低四位必須被置為“1”(無(wú)關(guān))兩個(gè)濾波器對(duì)包括RTR 位在內(nèi)的整個(gè)標(biāo)準(zhǔn)標(biāo)識(shí)碼進(jìn)行濾波識(shí)別6969擴(kuò)展幀濾波接收到擴(kuò)展幀信息時(shí)兩個(gè)濾波器相同,兩個(gè)濾波器都只比較擴(kuò)展識(shí)別碼的前兩個(gè)字節(jié)必須在所有單個(gè)位的比較時(shí)至少有一個(gè)濾波器表示“接收”7070RX報(bào)文計(jì)數(shù)器RMC,CAN 地址29RX報(bào)文計(jì)數(shù)器寄存器RM

53、C,CAN 地址29反映RXFIFO中可用的信息數(shù)目,其值每次接收到報(bào)文時(shí)加1,每次釋放接收緩沖器減1復(fù)位后寄存器值為0Bit.7Bit.6Bit.5Bit.4Bit.3Bit.2Bit.1Bit.0(0)注1(0)注1(0)注1RMC.4RMC.3RMC.2RMC.1RMC.0注1:這些位不能寫(xiě),讀出永遠(yuǎn)是071RX緩沖器起始地址寄存器,CAN 地址30RBSA寄存器,CAN 地址30反映接收緩沖器窗口中存放接收到的報(bào)文第一個(gè)字節(jié)的內(nèi)部RAM地址內(nèi)部RAM起始于CAN地址32,可以被CPU 讀/寫(xiě)訪(fǎng)問(wèn)(復(fù)位模式只能寫(xiě))例子如果RBSA = 24(十進(jìn)制),當(dāng)前在接收緩沖器窗口(CAN地址16

54、28)中的可視報(bào)文被存儲(chǔ)在內(nèi)部起始地址為24的RAM中因?yàn)镽AM也被直接列入CAN 地址空間(起始地址32等于RAM地址0),所以這條信息也可以用CAN 地址56及隨后字節(jié)地址訪(fǎng)問(wèn)CAN 地址=RBSA+32 = 24+32 = 56如果信息超過(guò)RAM地址63會(huì)從地址0繼續(xù) (RAM地址64開(kāi)始是TX緩沖區(qū)空間)當(dāng)FIFO中至少有一條可用報(bào)文時(shí)就將會(huì)執(zhí)行釋放接收緩沖器命令,釋放接收緩沖器后RBSA更新為下一條報(bào)文的開(kāi)始硬件復(fù)位時(shí)指針初始化為00H軟件復(fù)位(設(shè)置為復(fù)位模式,MOD.0=1)時(shí)指針保持原值,但FIFO被清空雖然RAM的內(nèi)容是不會(huì)改變,但下一條接收的或傳送的信息將會(huì)覆蓋當(dāng)前在接收緩沖

55、器窗口的可視信息RX 緩沖器起始地址寄存器在工作模式中只讀,在復(fù)位模式中是可讀/寫(xiě)必須注意,寫(xiě)訪(fǎng)問(wèn)RBSA首次有效是在下一個(gè)內(nèi)部時(shí)鐘的上升沿PeliCAN寄存器72BasicCAN、PeliCAN模式公共寄存器介紹73總線(xiàn)時(shí)序寄存器BTR0,CAN地址6總線(xiàn)時(shí)序寄存器BTR0,CAN地址6總線(xiàn)定時(shí)寄存器0定義波特率預(yù)制器BRP(Baud Rate Prescaler)和同步跳轉(zhuǎn)寬度SJW (Synchronization Jump Width)復(fù)位模式有效時(shí),BTR0寄存器可讀/寫(xiě)如果選擇PeliCAN模式,此寄存器在工作模式中只讀,在BasicCAN模式中讀出值總是FFH波特率預(yù)置器域CAN

56、系統(tǒng)時(shí)鐘tSCL的周期可編程,而且決定了相應(yīng)的位時(shí)序CAN系統(tǒng)時(shí)鐘由如下公式計(jì)算tSCL =2tCLK X (32 X BRP.5 +16 X BRP.4 + 8 X BRP.3 + 4 X BRP.2 + 2 X BRP.1 + BRP.0 + 1)tCLK:XTAL的振蕩周期 = 1/fXTAL同步跳轉(zhuǎn)寬度位域?yàn)榱搜a(bǔ)償在不同總線(xiàn)控制器的時(shí)鐘振蕩器之間的相位偏移,任何總線(xiàn)控制器必須在當(dāng)前傳送的相關(guān)信號(hào)邊沿重新同步同步跳轉(zhuǎn)寬度tSJW定義了每一位的位周期再被重新同步時(shí)縮短或延長(zhǎng)的時(shí)鐘周期的最大數(shù)目tSJW=tSCL (2 X SJW.1 + SJW.0 + 1)Bit.7Bit.6Bit.5B

57、it.4Bit.3Bit.2Bit.1Bit.0SJW.1SJW.0BRP.5BRP.4BRP.3BRP.2BRP.1BRP.074總線(xiàn)定時(shí)寄存器BTR1,CAN地址7BTR1,CAN地址7定義每個(gè)位周期的長(zhǎng)度、采樣點(diǎn)位置和在每個(gè)采樣點(diǎn)的采樣數(shù)目在復(fù)位模式中,寄存器可以讀/寫(xiě)訪(fǎng)問(wèn)在PeliCAN 模式的工作模式中,這個(gè)寄存器只讀,在BasicCAN 模式中讀出值總是FFHBit.7Bit.6Bit.5Bit.4Bit.3Bit.2Bit.1Bit.0SAMTSEG2.2TSEG2.1TSEG2.0TSEG1.3TSEG1.2TSEG1.1TSEG1.0采樣數(shù)目 SAMSAM=0,單倍采樣,每位

58、采樣1次。建議使用在高速總線(xiàn)上(SAE C級(jí))SAM=1,三倍采樣,每位采樣3次。建議在中低速總線(xiàn)上使用(SAE A,B級(jí)),可以有效消除總線(xiàn)上的毛刺時(shí)間段1和時(shí)間段2TSEG1和TSEG2決定每一位的時(shí)鐘周期數(shù)目和采樣點(diǎn)的位置tSYNCSEG=1 X tSCLtTSEG1 = tSCL X (8 X TSEG1.3 + 4 X TSEG1.2 + 2 X TSEG1.1 + TSEG1.0 + 1)tTSEG2 = tSCL X (4 X TSEG2.2 + 2 X TSEG2.1 + TSEG2.1 + 1)75總線(xiàn)定時(shí)寄存器1(續(xù))tSCL = 4 tCLKBRP = 000001tSE

59、G1 = 6 tSCLTSEG1 = 0101tTSEG2 = 3 tSCLTSEG2 = 01076輸出控制寄存器OCR,CAN地址8輸出控制寄存器OCR,CAN地址8由軟件控制不同輸出驅(qū)動(dòng)配置在復(fù)位模式中,寄存器可被讀/寫(xiě)訪(fǎng)問(wèn)在PeliCAN模式的工作模式中,這個(gè)寄存器只讀,在BasicCAN 模式中讀出值總是FFHBit.7Bit.6Bit.5Bit.4Bit.3Bit.2Bit.1Bit.0OCTP1OCTN1OCPOL1OCTP0OCTN0OCPOL0OCMODE1OCMODE0OCMODE1OCMODE0說(shuō)明00雙相輸出模式01測(cè)試輸出模式10正常輸出模式11時(shí)鐘輸出模式77時(shí)鐘分頻寄存器CDR,CAN地址31時(shí)鐘分頻寄存器,CDR,CAN地址31注1:此位不能寫(xiě),讀出總是0CD.2-CD

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論