




已阅读5页,还剩75页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
现场总线技术 第八章 CAN应用与实验系统设计,教材:现场总线CAN原理与应用技术 作者:绕运涛、邹继军、郑勇荟 主讲教师:张有忠 中国矿业大学机电工程学院 2007-11,2,8.3 CAN实验系统设计,K1:点对点发送 K2:广播发送,此处与非门最适宜,3,74HC244 - Octal buffer/line driver; 3-state,1G,2G,4,74LS164 8 Bit Serial In/Parallel Out Shift Register,Features Gated (enable/disable) serial inputs Fully buffered clock and serial inputs Asynchronous clear Typical clock frequency 36 MHz Typical power dissipation 80 mW,5,DS1232 - MicroMonitor Chip,FEATURES Halts and restarts an out-of-control microprocessor Holds microprocessor in check during power transients Automatically restarts microprocessor after power failure Monitors pushbutton for external override Accurate 5% or 10% microprocessor power supply monitoring Eliminates the need for discrete components Space-saving, 8-pin mini-DIP Optional 16-pin SOIC surface mount package Industrial temperature -40C to +85C available PIN DESCRIPTION PBRST - Pushbutton Reset Input TD - Time Delay Set TOL - Selects 5% or 10% VCC Detect GND - Ground RST - Reset Output (Active High) RST - Reset Output (Active Low, open drain) ST - Strobe Input VCC - +5 Volt Power,6,ST24C08-8 Kbit Serial I2C Bus EEPROM,7,8.3 CAN实验系统设计,K1:点对点发送 K2:广播发送,此处与非门最适宜,8,CAN实验系统软件设计,报文收发 返送,任意节点收到报文,将该报文返送回发送站点 接收报文数显示,09 通讯波特率,40KBps 双滤波器模式 广播ID:0000H,按该ID发送的数据所有站点都接收 K1按键,按键K1启动一次点对点发送,发送ID由244外接的拨码开关设定 K2按键,按键K2一次,启动一次广播发送 ID设定 P0口读入 高半字节,点对点通讯时接收方的ID 低半字节,自身的ID 系统代码: can_practice.asm,9,地址标号定义,;/89C51晶振为12MHZ ;/74LS244片外存储器地址为0100H ;*与课本不一样(0200H有误) IDADDR EQU 0100H ;/CAN控制器SJA1000片外存储器起始地址为0200H(*0100H有误,与课本不一样) MODE EQU 0200H ;/模式寄存器 CMR EQU 0201H ;/命令寄存器 SR EQU 0202H ;/状态寄存器 IR EQU 0203H ;/中断寄存器 IER EQU 0204H ;/中断使能寄存器 BTR0 EQU 0206H ;/总线时序寄存器0 BTR1 EQU 0207H ;/总线时序寄存器1 OCR EQU 0208H ;/输出控制寄存器 ALC EQU 020BH ;/仲裁丢失捕捉寄存器 ECC EQU 020CH ;/错误代码捕捉寄存器 EWLR EQU 020DH ;/错误报警限额寄存器 RXERR EQU 020EH ;/RX错误计数寄存器 TXERR EQU 020FH ;/TX错误计数寄存器 TXB EQU 0210H ;/写,发送缓冲区首地址 RXB EQU 0210H ;/读,接收缓冲区首地址,10,地址标号定义(续),RXCMD EQU 0215H ;/扩展帧时接收缓冲区数据第一字节,十进制21 RTRDLC EQU 0210H ;/包括RTR,DLC的字节 ACR EQU 0210H ;/复位时:滤波码,十进制16 AMR EQU 0214H ;/复位时,屏蔽码,十进制20 RMC EQU 021DH ;/RX报文计数器,十进制29 RBSA EQU 021EH ;/RX缓冲区起始地址,十进制30 CDR EQU 021FH ;/时钟分频器,十进制31 ;/* 程序运行所需存储器及标志位 * CBFRTP EQU 30H ;/CPU接收或发送报文缓冲区首地址 FRNUM EQU 40H ;/接收报文数 RECOK BIT 00H ;/接收报文标志,RECOK为1表示接收到一帧报文 RFRM BIT 01H ;/回送报文标志,RFRM为1表示该帧接收的 ;/报文应该回送 PUSHK1 BIT 02H ;/按K1键标志,PUSHK1为*0*表示K1键按下 PUSHK2 BIT 03H ;/按K2键标志,PUSHK2为*0*表示K2键按下,11,程序模块、子程序列表,0、系统初始化程序 MAIN 1、主监控程序 MLOOP 2、CAN控制器初始化子程序 CANINI 3、CAN控制器查询接收子程序 CANREC 4、CAN控制器发送程序 TDATA 5、按设定ID值向指定节点发送一帧报文 TSDATA TDATA 6、向CAN总线上其他节点发送一帧广播报文 TBDATA TDATA 7、向发送报文节点返回接收到报文 TRDATA TDATA 8、读按键子程序 KEYIN 9、20mS、1mS延时程序 D20MS DELAY 10、显示当前接收报文数 DISP,12,MAIN - 系统初始化程序,;/* 系统初始化程序 * ORG 0000H LJMP MAIN ORG 0030H MAIN:MOV SP, #6FH MOV R0 #6FH CLR A ;/清零片内RAM,初始化变量和标志 CLAIR: MOV R0, A DJNZ R0, CLAIR ;/006FH全部清零 LCALL CANINI ;/SJA1000初始化,P230页尾 MOV P1, #0FFH ;/读P1前写1,P1外接K1,K2 MOV IE, #00H ;/采用查询标志方式工作,关闭所有中断 MOV SCON, #00H ;/串行口方式0,移位寄存器方式,1*7段LED显示,13,MLOOP - 主监控程序流程,MLOOP: LCALL KEYIN ;/按键扫描,两个按键的状态在PUSHK1 ;/和PUSHK2中,=0键按下 JB PUSHK1, LOOP1 ;*/与课本不一样 LCALL TSDATA ;/K1键按下,发送一帧点到点报文 SETB PUSHK1 ;/*与课本不一样 LOOP1:JB PUSHK2, LOOP2 ;*/与课本不一样 LCALL TBDATA ;/K2键按下,发送一帧广播报文 SETB PUSHK2 ;*/与课本不一样 LOOP2:LCALL CANREC ;/*无键按下,从CAN总线查询接收 JNB RECOK, LOOP3 LCALL DISP ;/数码管显示+1后的接收报文数 CLR RECOK JNB RFRM, LOOP3 LCALL TRDATA ;/返回接收到的报文 CLR RFRM ;/回送报文标志 LOOP3:SJMP MLOOP,14,CANREC-CAN控制器查询接收子程序,CANREC: MOV DPTR, #SR ;/状态寄存器 MOVX A, DPTR ANL A, #0C3H ;/读取总线关闭、错误状态、接收溢出、有数据等状态位 JNZ PROC RET ;/无上述状态,返回 PROC: JNB ACC.7, PROCI BUSERR: MOV DPTR, #IR ;/IR中断寄存器,出现总线关闭 MOVX A, DPTR ;/读中断寄存器,清除中断位 MOV DPTR, #MODE ;/方式寄存器地址 MOV A, #08H MOVX DPTR, A ;/将方式寄存器复位请求位清0 RET PROCI:MOV DPTR, #IR ;/总线正常, IR中断寄存器 MOVX A, DPTR ;/读取中断寄存器,清除中断位 JNB ACC.3, OTHER OVER:MOV DPTR, #CMR ;/数据溢出,命令寄存器CMR MOV A, #0CH ;/00001100 B MOVX DPTR, A ;/在命令寄存器中清除数据溢出和释放接收缓冲区 RET,15,CANREC-CAN控制器查询接收子程序(续1),OTHER: JB ACC.0, RECE ;/IR.0=1, 接收缓冲区有数据 LJMP RECOUT ;/IR.0=0,接收缓冲区中无数据,退出接收 RECE: MOV DPTR, #RXB ;/读取并保存接收缓冲区的数据 MOV R1, #CBFRTP ;/CPU片内接收缓冲区首地址 MOVX A, DPTR ;/读取数据帧格式 MOV R1, A ;/保存 ANL A, #0FH ;/截取数据场长度 ADD A, #4 ;/+ID字节数 MOV R6,A RDATA0: INC DPTR INC R1 MOVX A, DPTR MOV R1, A DJNZ R6, RDATA0 ;/循环读取与保存 ;/若接收到ID前两个字节为5555H,表明是对方返回的报文,RFRM保持清0,接收报文不回送 MOV A, CBFRTP+1 CJNE A, #55H, RDATA1 MOV A, CBFRTP+2 CJNE A, #55H, RDATA1 SJMP RDATA2,16,CANREC-CAN控制器查询接收子程序(续2),RDATA1:SETB RFRM ;/若接收ID前两个字节不是5555H ;/则应返回该帧报文,RFRM置1 RDATA2: INC RFNUM ;/接收报文数+1 MOV A, FRNUM CJNE A, #10, ADATA3 MOV FRNUM, #0 ;/接收报文数满10时,从头开始计数 RDATA3: SETB RECOK ;/接收报文标志置1 MOV DPTR, #CMR ;/ MOV A, #04H ;/释放CAN接收缓冲区 MOVX DPTR, A RECOUT: MOV DPTR, #ALC ;/释放仲裁丢失捕捉寄存器和错误捕捉寄存器 MOVX A, DPTR MOV DPTR, #RCC ;/ MOVX A, DPTR RET,17,TDATA - CAN控制器发送程序,TDATA: MOV DPTR, #SR MOVX A, DPTR JB ACC.4, TDATA ;/判断是否正在接收,=1接收 TS20: MOVX A, DPTR JNB ACC.3, TS20 ;/判断先前发送是否成功,=1成功 TS21: MOVX A, DPTR JNB ACC.2, TS21 ;/判断发送缓冲区是否锁定,0=锁定 TS22: MOV DPTR, #TXB ;/将CPU报文发送缓冲区数据送往CAN发送缓冲区 MOV R1, #CBFRTP MOV A, R1 MOVX DPTR, A ANL A, #0FH ADD A, #4 MOV R6, A MTBS: INC R1 INC DPTR MOV A, R1 MOVX DPTR, A DJNZ R6, MTBS MOV DPTR, #CMR MOV A, #01H MOVX DPTR, A ;/启动发送 RET,18,TSDATA - 按设定ID值向指定节点发送一帧报文,;/* 按设定ID值向指定节点发送一帧报文 * TSDATA: MOV CBFRTP, #88H ;CPU内报文缓冲区 ;10001000, 扩展格式,数据,8字节 MOV DPTR, #IDADDR MOVX A, DPTR ;/从74LS244读入节点设置ID ANL A, #0F0H ;/高半字节为接收节点的ID MOV CBFRTP+1, #0 ; MOV CBFRTP+2, A MOVX A, DPTR ;/从74LS244读入节点设置ID ANL A, #0FH ;/低半字节为节点自身ID MOV CBFRTP+3, #0 MOV CBFRTP+4, A LCALL TDATA RET ;/* 按设定ID值向指定节点发送一帧报文结束 *,19,TBDATA-向CAN总线上其他节点发送一帧广播报文,;/向CAN总线上其他节点发送一帧广播报文 TBDATA: MOV CBFRTP, #88H MOV CBFRTP+1, #0 ;/广播报文ID为0000H MOV CBFRTP+2, #0 MOV DPTR, #IDADDR MOVX A, DPTR ;/从74LS244读入节点设置ID ANL A, #0FH ;/低半字节为节点自身ID MOV CBFRTP+3, #0 MOV CBFRTP+4, A LCALL TDATA RET,20,TRDATA -向发送报文节点返回接收到报文,;/向发送报文节点返回接收到报文 TRDATA: MOV CBFRTP+1, #55H ;/返回报文给发送节点时 ;/将前两个ID字节设置为5555H MOV CBFRTP+2, #55H ;/5555H可作为判断接收报文是 ;/否返送的标志 ;/通过设置标志避免循环发送 LCALL TDATA RET,21,CANINI - CAN控制器初始化子程序,CANINI: MOV DPTR, #MODE ;/方式寄存器 MOV A, #01H ;/进入复位模式,对SJA1000进行初始化 MOVX DPTR, A MOV DPTR, #CDR ;/时钟分频寄存器 MOV A, #88H ;/选择PeiliCAN模式,关闭时钟输出(CLKOUT) MOVX DPTR, A MOV DPTR, #IER ;/中断允许寄存器 MOV A, #0DH ;/开放发送中断、溢出中断和错误警告中断 MOVX DPTR, A MOV DPTR, #AMR ;/验收屏蔽寄存器 MOV R6, #4 MOV A, #0 ;/验收屏蔽寄存器所有位都参与滤波 AMRINI: MOVX DPTR, A ;/接收屏蔽寄存器赋初值 INC DPTR DJNZ R6, AMRINI,22,CANINI - CAN控制器初始化子程序(续1),MOV DPTR, #IDADDR ;读P0接口开关状态地址 MOVX A, DPTR ;/从74LS244读入节点设置ID ANL A, #0FH ;/低半字节为节点自身ID MOV R6, A MOV DPTR, #ACR ;/验收代码寄存器 MOV A, #0 ;/ACR0和ACR1存储接收广播报文时用的ID,0000H MOVX DPTR, A ;/接收代码寄存器ACR0赋初值 INC DPTR MOVX DPTR, A ;/接收代码寄存器ACR1赋初值 INC DPTR ;/ACR2,ACR3存储接收数据报文时用的ID ;/为节点自身ID MOVX DPTR, A ;/接收代码寄存器ACR2赋初值 INC DPTR MOV A, R6 /自身ID MOVX DPTR, A ;/接收代码寄存器ACR3赋初值,23,CANINI - CAN控制器初始化子程序(续2),MOV DPTR, #BTR0 ;/总线定时寄存器0 MOV A, #07H MOVX DPTR, A MOV DPTR, #BTR1 ;/总线定时寄存器1 MOV A, #0FFH ;/设置波特率40KBPS MOVX DPTR, A MOV DPTR, #OCR ;/输出控制寄存器 MOV A, #0AAH MOVX DPTR, A MOV DPTR, #RBSA ;/接收缓冲器起始地址寄存器 MOV A, #0 ;/设置接收缓冲器FIFO起始地址为0 MOVX DPTR, A MOV DPTR, #TXERR ;/发送错误计数寄存器 MOV A, #0 ;/清除发送错误计数寄存器 MOVX DPTR, A MOV DPTR, #ECC ;/错误代码捕捉寄存器 MOVX DPTR, A ;/清除错误代码捕捉寄存器 MOV DPTR, #MODE ;/方式寄存器 MOV A, #00 ;/设置双滤波接收方式,并返回工作状态 MOVX DPTR, A RET,24,KEYIN -读按键子程序,KEYIN: ORL P1, #0C0H ;/11000000B , 读端口前先写1 MOV A, P1 ANL A, #0C0H ;/从P1.6, P1.7读入K1和K2的按键状态 CJNE A, #0C0H, KEYIN1 ;/有键按下,转KEYIN1 RET ;/无键按下返回 KEYIN1: LCALL D20MS ;/延时 MOV A, P1 ANL A, #0C0H CJNE A, #0C0H, KEYIN2 RET ;/无键按下返回 KEYIN2: CJNE A, #00H, KEYIN21 SJMP KEYIN3 ;/若K1, K2同时按下,无效 KEYIN21: MOV C, ACC.6 ;/将按键状态保存到PUSHK1,PUSHK2 MOV PUSHK1, C ;/按下键为0,未按下为1 MOV C, ACC.7 MOV PUSHK2, C KEYIN3: MOV A, P1 ANL A, #0C0H CJNE A, #0C0H, KEYIN3 ;/判断按键是否释放,等待按键释放 RET,25,D20MS、DELAY 20mS、1mS延时程序,D20MS: MOV R7, #200 ;/延时约20MS(FOSC=12MHZ) DAY1: MOV R6, #50 DAY2: DJNZ R6, DAY2 DJNZ R7, DAY1 RET DELAY: MOV R6, #250 ;/延时1MS DE1: NOP NOP DJNZ R6, DE1 RET,26,DISP -显示当前接收报文数(1位表示),;/显示当前接收报文数(1位表示) DISP: MOV A, FRNUM ;/读当前接收报文数 MOV DPTR, #LEDTAB MOVC A, A+DPTR ;/字形码 MOV SBUF, A ;/将字形码通过串口送74LS164,驱动显示 JNB TI, $ CLR TI ;/发送完毕清TI标志 RET ;LED显示字形码(共阴极数码管) LEDTAB: DB 0FCH,060H,0DAH,0E2H,066H ;/0,1,2,3,4 DB 0B6H,0BEH,0E0H,0FEH,0F6H ;/5,6,7,8,9,27,结束,28,基本逻辑门电路的符号,29,SJA1000寄存器,BasicCAN模式寄存器列表 控制寄存器CR 命令寄存器CMR 状态寄存器SR 中断寄存器IR 发送缓冲器区 接收缓冲器 验收代码寄存器ACR 验收屏蔽寄存器AMR PeliCAN寄存器地址列表 模式寄存器MOD 命令寄存器CMR 状态寄存器SR 中断寄存器IR 中断允许寄存器IER,仲裁丢失捕捉寄存器ALC 错误代码捕捉寄存器ECC 错误报警限额寄存器EWLR RX错误计数寄存器RXERR TX 错误计数寄存器TXERR 发送缓冲器TXB 单滤波、标准帧滤波器配置 单滤波、扩展帧滤波器配置 双滤波、标准帧滤波器配置 双滤波、扩展帧滤波器配置 RX报文计数器RMC RX缓冲器起始地址寄存器 总线时序寄存器BTR0 总线定时寄存器BTR1 输出控制寄存器OCR 时钟分频寄存器CDR,30,BasicCAN模式 寄存器列表,31,BasicCAN模式寄存器列表,控制器段,32,BasicCAN模式寄存器列表(续1),发送缓冲器,33,BasicCAN模式寄存器列表(续2),接收缓冲器及时钟分配器,34,BasicCAN模式 主要寄存器介绍,35,寄存器介绍-控制寄存器CR,控制寄存器(CR,地址0) 改变SJA1000工作状态 通过微处理器进行置位/复位 微控制器对控制寄存器进行读/写操作,注:1、位为1有效 2、X表示这些位的值不受影响,36,命令寄存器CMR,命令寄存器(CMR,地址1) 微控制器发送到命令寄存器的命令启动一次传输层的操作 微控制器对命令寄存器只写,读命令寄存器的结果总是“1111 1111”,37,状态寄存器SR,状态寄存器(SR,地址2) 状态寄存器的内容反映总线控制器的状态 状态寄存器为只读存储器,38,中断寄存器IR,中断寄存器(IR,地址3) 识别SJA1000中断源 寄存器任一位(及一位以上)被置位时,/INT引脚被激活(低电平) 该寄存器被微处理器读出后,所有位被SJA1000复位,/INT引脚电平浮动(高阻状态) 微处理器只读,注:在错误中断开启情况下,总线关闭时错误中断位被置位,39,发送缓冲器区,发送缓冲器是用来存储微控制器要SJA1000 发送的报文 分为描述符区和数据区 发送缓冲器的读/写只能由微控制器在工作模式下完成,在复位模式下读出的值总是“FFH“,40,接收缓冲器,接收缓冲器的全部列表和发送缓冲器类似 接收缓冲器是RXFIFO 中可访问的部分,位于CAN 地址的20-29 之间 识别码、远程发送请求位和数据长度码同发送缓冲器的相同,只不过是在地址20-29,41,验收代码寄存器ACR,在验收滤波器的帮助下,CAN 控制器能够允许RXFIFO 只接收同识别码和验收滤波器中预设值相一致的报文 验收滤波器通过验收代码寄存器ACR和验收屏蔽寄存器AMR来定义 验收代码寄存器ACR,地址4,复位请求位被置1(当前)时,这个寄存器是可以访问(读/写) 如果一条报文通过了验收滤波器的测试而且接收缓冲器又有空间,那么标识符和数据将被分别顺次写入RXFIFO 当报文被正确的接收完毕就会: 接收状态位置1(满) 接收中断使能位置1(使能),接收中断置1(产生中断),42,验收屏蔽寄存器AMR,验收屏蔽寄存器AMR,地址5 如果复位请求位置1(当前),这个寄存器可以被访问(读/写) 验收屏蔽寄存器定义验收代码寄存器的相应位对验收滤波器是相关的(AM.X = 0 )或无关的(AM.X = 1),(即可为任意值) 验收代码位(AC.7-AC.0)和标识码的高8 位(ID.10-ID.3)与验收屏蔽位AM.7-AM.0的”相关”的位的对应位必须相等,即如果满足以下条件的描述则报文被接收 (ID.10 to ID.3) (AC.7 to AC.0) (AM.7 to AM.0) 1111 1111 B ID 10010001 標識符高8位 AC 10010110 驗收代碼位 eq= 11111000 驗收 AM 00000111 驗收屏蔽位 V= 11111111 驗收屏蔽結果,通過,43,PeliCAN模式 寄存器列表,44,PeliCAN寄存器地址列表,总线时序0,总线时序1,总线时序0,总线时序1,总线时序0,总线时序1,错误报警限额,错误报警限额,错误报警限额,45,PeliCAN寄存器地址列表(续1),RX标识码1,RX标识码1,RX标识码2,RX标识码2,TX标识码1,TX标识码2,TX标识码1,TX标识码2,RX标识码3,RX标识码4,TX标识码3,TX标识码4,46,PeliCAN寄存器地址列表(续2),RX报文计数器,RX报文计数器,RX缓冲区起始地址(RASB),47,PeliCAN模式 主要寄存器介绍,48,模式寄存器MOD,CAN地址0,49,命令寄存器CMR,CAN地址1,50,状态寄存器SR,CAN地址2,CAN地址2,状态寄存器反映CAN 控制器的状态,只读寄存器,51,状态寄存器SR (续1),52,中断寄存器IR,CAN地址3,中断寄存器IR,CAN地址3 中断源的识别 当寄存器的一位或多位被置位时,CAN 中断将反映到CPU CPU读此寄存器的时候除了接收中断外的所有位都被复位 只读存储器,53,中断寄存器IR(续),54,中断允许寄存器IER,CAN地址4,中断使能寄存器IER,CAN地址4 该寄存器能使不同类型的中断源对CPU有效 可读/写寄存器,55,中断允许寄存器(续),56,仲裁丢失捕捉寄存器ALC,CAN地址11,仲裁丢失捕捉寄存器,ALC,CAN地址11 该寄存器包括了仲裁丢失的位置的信息,只读存储器,保留位的读出值为0 仲裁丢失时,会产生相应的仲裁丢失中断(中断允许时)。同时,位流处理器的当前位的位置被捕捉送入仲裁丢失捕捉寄存器。一直到用户通过软件读这个值,寄存器中的内容都不会改变,随后捕捉机制又被激活 读中断寄存器时,中断寄存器中相应的中断标志位被清除。直到仲裁丢失捕捉寄存器被读一次之后,新的仲裁丢失中断才可能有效,57,错误代码捕捉寄存器ECC,CAN地址12,错误代码捕捉寄存器,ECC,CAN地址12 包含总线错误的类型和位置信息 只读,58,错误报警限额寄存器EWLR,CAN地址13,错误报警限额寄存器,EWLR,CAN地址13 定义错误报警限额 复位模式时可读/写,硬件复位后错误报警限额寄存器的默认值为96 复位模式取消后,该寄存器的新值引起的出错状态的改变和错误报警中断才有可能发生,59,RX错误计数寄存器RXERR,CAN地址14,RX错误计数寄存器,RXERR,CAN地址14 RX错误计数寄存器反应了接收错误计数器的当前值 硬件复位后寄存器被初始化为0 在工作模式中,只读寄存器;在复位模式中可写寄存器 如果发生总线关闭RX错误计数器被初始化为0 总线关闭期间写寄存器无效 软件复位(MOD.0=1)时,接收错误计数器的值不受影响 注意: 只有先进入复位模式,才有可能由CPU改变RX错误计数器值 复位模式被取消后,由新的内容引起的错误状态的改变、错误报警、错误中断才可能发生,60,TX 错误计数寄存器TXERR,CAN地址15,TX错误计数寄存器,TXERR,CAN地址15 TX 错误计数寄存器反映了发送错误计数器的当前值 工作模式中,只读;复位模式中,可写 硬件复位后,寄存器被初始化为0 如果总线关闭,TX 错误计数器被初始化为127 来计算总线定义的最小时间(128 个总线空闲信号)。这段时间里读TX 错误计数器将反映出总线关闭恢复的状态信息 在总线关闭时,向TXERR 写0-254范围的值会清除总线关闭标志 在复位模式被清除后,控制器会等待一个11位的连续隐性位(总线空闲) 软件复位(MOD.0=1)时,发送错误计数器的值不受影响,61,发送缓冲器TXB,CAN地址1628,发送缓冲器的布局 标识码区 标识码区的第一个字节是帧信息字节(结构信息),说明帧格式(SFF或EFF)、远程帧或数据帧和数据长度 SFF(标准帧格式)有两个字节的标识码,EFF(扩展帧格式)有四个字节的标识码 数据区 数据区最多长8 个数据字节 发送缓冲器长13个字节,在CAN 地址的16-28 注意 使用CAN 地址的96-108可以直接访问发送缓冲器的RAM,这个RAM区是为发送缓冲器保留的,下面三个字节是通用的CAN地址109、110和111,62,验收滤波器,验收滤波器 只有当接收报文中的标识码和验收滤波器预定义的值相等时,CAN 控制器才允许将已接收报文存入RXFIFO 验收滤波器由验收代码寄存器(ACRn)和验收屏蔽寄存器AMRn定义 要接收的报文的标识码位模式在验收代码寄存器中定义,相应的验收屏蔽寄存器允许定义验收代码寄存器中的某些位为“无关“,即可为任意值 在模式寄存器MOD中选择MOD.3,AFM 单滤波器模式 AFM=1 双滤波器模式 AFM=0,62,63,验收滤波器-单滤波器,单滤波器配置 单滤波器配置定义一个4 字节长滤波器 滤波器字节和报文字节之间位的对应关系取决于当前接收帧格式 标准帧格式 如果接收的是标准帧格式的信息,在验收滤波中使用包括RTR在内的完整标识码和前两个数据字节用于数据滤波 如果由于置位RTR位而导致没有数据字节,或因为设置相应的数据长度代码而没有或只有一个数据字节,报文也会被接受 对于一个成功接收的报文所有单个位在滤波器中的比较结果都必须为“接受”(下页图),63,64,标准帧滤波,64,(ID.10 to ID.3) (AC.7 to AC.0) (AM.7 to AM.0) 1111 1111 B,65,标准帧滤波(续),注意 AMR1 和ACR1 的低四位不用,为了和将来的产品兼容这些位可通过设置AMR1.4、AMR1.3、AMR1.2和AMR1.0为“1” 而编程为“无关,Dont Care”,65,66,扩展帧滤波,扩展帧格式 如果接收的报文是扩展帧格式报文,包括RTR 位的全部标识码将被用于数据滤波 为了成功接收报文每个位的比较后都必须发出接受信号,66,ACR,AMR,ID,67,扩展帧滤波(续),注意 AMR3 的最低两位和ACR3最低两位不用,为了和将来的产品兼容这些位应该通过置位AMR3.1 和AMR3.0 来编程为“无关,Dont Care”,67,68,验收滤波器-双滤波器,双滤波器配置 该配置定义两个短滤波器 一条接收的报文要和两个滤波器比较来决定是否放入接收缓冲器中 至少有一个滤波器验收通过,接收的报文才有效 滤波器字节和报文字节之间位的对应关系取决于当前接收的帧格式,68,69,标准帧滤波,接收到标准帧报文时,两个滤波器是不一样 第一个滤波器比较包括RTR 位的整个标准标识码和报文的第一个数据字节 第二个滤波器只比较包括RTR 位的整个标准标识码 为了成功接收报文所有单个位的比较时应至少有一个滤波器表示“接受” RTR位置位或数据长度代码是0时表示没有数据字节存在,无论怎样只要从开始到RTR位的部分比较结果为“接受”,接收的报文就可以通过滤波器1 如果没有向滤波器请求数据字节滤波,AMR1 和AMR3 的低四位必须被置为“1”(无关) 两个滤波器对包括RTR 位在内的整个标准标识码进行滤波识别,69,70,扩展帧滤波,接收到扩展帧信息时两个滤波器相同,两个滤波器都只比较扩展识别码的前两个字节 必须在所有单个位的比较时至少有一个滤波器表示“接收”,70,71,RX报文计数器RMC,CAN 地址29,RX报文计数器寄存器 RMC,CAN 地址29 反映RXFIFO中可用的信息数目,其值每次接收到报文时加1,每次释放接收缓冲器减1 复位后寄存器值为0,注1:这些位不能写,读出永远是0,72,RX缓冲器起始地址寄存器,CAN 地址30,RBSA寄存器,CAN 地址30 反映接收缓冲器窗口中存放接收到的报文第一个字节的内部RAM地址 内部RAM起始于CAN地址32,可以被CPU 读/写访问(复位模式只能写) 例子 如果RBSA = 24(十进制),当前在接收缓冲器窗口(CAN地址1628)中的可视报文被存储在内部起始地址为24的RAM中 因为RAM也被直接列入CAN 地址空间(起始地址32等于RAM地址0),所以这条信息也可以用CAN 地址56及随后字节地址访问 CAN 地址=RBSA+32 = 24+32 = 56 如果信息超过RAM地址63会从地址0继续 (RAM地址64开始是TX缓冲区空间) 当FIFO中至少有一条可用报文时就将会执行释放接收缓冲器命令,释放接收缓冲器后RBSA更新为下一条报文的开始 硬件复位时指针初始化为00H 软件复位(设置为复位模式,MOD.0=1)时指针保持原值,但FIFO被清空 虽然RAM的内容是不会改变,但下一条接收的或传送的信息将会覆盖当前在接收缓冲器窗口的可视信息 RX 缓冲器起始地址寄存器在工作模式中只读,在复位模式中是可读/写 必须注意,写访问RBSA首次有效是在下一个内部时钟的上升沿,PeliCAN 寄存器,73,BasicCAN、PeliCAN模式 公共寄存器介绍,74,总线时序寄存器BTR0,CAN地址6,总线时序寄存器BTR0,CAN地址6 总线定时寄存器0定义波特率预制器BRP(Baud Rate Prescaler)和同步跳转宽度SJW (Synchronization Jump Width) 复位模式有效时,BTR0寄存器可读/写 如果选择PeliCAN模式,此寄存器在工作模式中只读,在BasicCAN模式中读出值总是FFH 波特率预置器域 CAN系统时钟tSCL的周期可编程,而且决定了相应的位时序 CAN系统时钟由如下公式计算 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 同步跳转宽度位域 为了补偿在不同总线控制器的时钟振荡器之间的相位偏移,任何总线控制器必须在当前传送的相关信号边沿重新同步 同步跳转宽度tSJW定义了每一位的位周期再被重新同步时缩短或延长的时钟周期的最大数目 tSJW=tSCL (2 X SJW.1 + SJW.0 + 1),75,总线定时寄存器BTR1,CAN地址7,BTR1,CAN地址7 定义每个位周期的长度、采样点位置和在每个采样点的采样数目 在复位模式中,寄存器可以读/写访问 在PeliCAN 模式的工作模式中,这个寄存器只读,在BasicCAN 模式中读出值总是FFH,采样数目 SAM SAM=0,单倍采样,每位采样1次。建议使用在高速总线上(SAE C级) SAM=1,三倍采样,每位采样3次。建议在中低速总线上使用(SAE A,B级),可以有效消除总线上的毛刺 时间段1和时间段2 TSEG1和TSEG2决定每一位的时钟周期数目和采样点的位置 tSYNCSEG=1 X tSCL tTSEG1 = 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),76,总线定时寄存器1(续),tSCL = 4 tCLK BRP = 000001 tSEG1 = 6 tSCL TSEG1 = 0101 tTSEG2 = 3 tSCL TSEG2 = 010,77,输出控制寄存器OCR,CAN地址8,输出控制寄存器OCR,CAN地址8 由软件控制不同输出驱动配置 在复位模式中,寄存器可被读/写访问 在PeliCAN模式的工作模式中,这个寄存器只读,在BasicCAN 模式中读出值总是FFH,78,时钟分频寄存器CDR,CAN地址31,时钟分频寄存器,CDR,CAN地址31,注1:此位不能写,读出总是0 CD.2-CD.0 复位模式和工作模式中一样,CD.2-CD.0 是可以无限制访问 这些位是用来定义外部CLKOUT引脚上的输出时钟频率,Clock Off,79,帧格式信息,注1,帧结构格式,FF=0标准帧,FF=1扩展帧 注2,远程发送请求位,RTR=0数据帧,RTR=1远程帧 注3,忽略,推荐在使用自接收功能(自测)时和接收缓冲器(0)兼容 注4,数据长度代码位,79,注1,忽略,建议在使用自接收功能(自测)时与接收缓冲器的位(RTR)一致 注2,忽略,建议在使用自接收功能(自测)时与接收缓冲器的值(0)一致,80,摘 要:介绍一种看门狗集成电路DS1232的功能及与单片机的实际接口电路,结合工程实际指出了DS1232在应用中的注意事项。 关键词:看门狗; DS1232; 接口;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 拆除旧墙重建新墙施工合同范本
- 2025年计算机技术发展试题
- 教育与职业发展的紧密结合
- 车辆租赁合同终止与驾驶员权益保障协议
- 高端豪车典当服务长期借款合同
- 户外家具与景观设计的融合
- 推拿手法对慢性疼痛的缓解效果
- 教育信息化与教育技术应用案例
- 公司筹备母亲节活动方案
- 银行业务财务信息保密与承诺协议
- 电子政务内网机房运维管理制度
- 2025年北京高考化学试卷试题真题及答案详解(精校打印版)
- 陕西省专业技术人员继续教育2025公需课《党的二十届三中全会精神解读与高质量发展》20学时题库及答案
- 福利院财务管理制度
- 学习通《科研诚信与学术规范》课后及考试答案
- GB/T 24025-2009环境标志和声明Ⅲ型环境声明原则和程序
- 《半导体及二极管》教学课件
- 病房床头卡模板
- 2022年西双版纳傣族自治州景洪教师进城考试笔试题库及答案解析
- 公路改建工程边施工边通车安全专项施工方案
- 道路交通安全法律法规知识测试题
评论
0/150
提交评论