您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 3.6-验收滤波解读
3.6验收滤波器目录验收滤波的作用SJA1000验收滤波器原理SJA1000延时滤波器设置函数测试例程生存者-消费者模型01010101010101010101010101010101010101010101010101010101生产者消费者发送CAN帧的节点,其发送的数据被网络中的所有消费者接收。接收CAN帧的节点,接收总线上的所有CAN帧。CAN节点不需要处理所以的CAN帧,CAN控制器通过滤波器来过滤不需要接收的CAN帧。生产者消费者验收滤波作用验收通过的帧放入接收FIFO过滤不需要处理的CAN帧,降低主控制器的处理负载。SJA1000CAN内核验收滤波器接收FIFO接口管理逻辑发送缓冲区收发器TXRXCAN-HCAN-L丢弃验收不通过的帧目录验收滤波的作用SJA1000验收滤波器原理SJA1000延时滤波器设置函数测试例程单滤波原理SJA1000通过对帧ID和数据字节逐位比较,将符合要求的报文存入RXFIFO。同或ACR验收代码位AMR验收屏蔽位ACR+|AMR信息位输出逻辑=输出逻辑信息位或&其它位的比较结果其它位的比较结果与输出逻辑为1的帧验收通过,被存入接收FIFO单滤波原理真值表同或ACR验收代码位AMR验收屏蔽位输出逻辑信息位或其它位的比较结果与01110信息位验收代码位验收屏蔽位其它位比较结果输出逻辑XXX有一个00010都为10100都为10000都为11110都为11XX1都为1111110•其它位比较结果有一个为0,则验收不通过10000•其它位比较结果都为1,屏蔽位为0,信息位与验收代码位不同,则验收不通过•其它位比较结果都为1,屏蔽位为0,信息位与验收代码位形同,则验收通过•其它位比较结果都为1,屏蔽位为1,则验收通过假设:验收代码寄存器ACR0~ACR3分别为0x21,0x00,0x05,0x24,屏蔽代码寄存器AMR0~AMR3分别为0x00,0x00,0x00,0x03。ACR3=0X03ACR2=0X21AMR1=0X00AMR0=0X00ACR2=0X24ACR2=0X05ACR1=0X00ACR0=0X21AMR0~AMR3ACR0~ACR3单滤波标准帧比较规则00000000000000000000000000000011待验收的信息位ID28ID27ID21ID26ID25ID24ID23ID22ID20ID19ID18RTRDB1.7DB1.6DB1.0DB1.5DB1.4DB1.3DB1.2DB1.1DB2.7DB2.6DB2.0DB2.5DB2.4DB2.3DB2.2DB2.10010000100100001000000000000帧ID=0x108,RTR=0,DATA2=0x24~0x27,DATA1=0x05的能被验收通过数据帧。00000101000001010010011100100100屏蔽位为1的位不做比较对于标准帧,单滤波模式下比较帧ID、RTR位和前两个数据字节。接收到的CAN数据未使用xx0x10x00x80x00x50x20x4~7AMR位为1的位对应信息为不做比较,AMR为0的位对应的信息位与验收代码位相同才能验收通过。ACR1=0X00代验收的信息位ID28ID27ID21ID26ID25ID24ID23ID22ID20ID19ID18ID17ID12ID11ID05ID10ID09ID08ID07ID06ID04ID03ID02ID01ID00RTRID16ID15ID14ID13ACR3=0X03ACR2=0X21AMR1=0X00AMR0=0X00ACR2=0X24ACR2=0X05ACR0=0X21AMR0~AMR3ACR0~ACR3单滤波扩展帧比较规则00000000000000000000000000000011001000010010000100000101000001010010011100100100屏蔽位为1的位不做比较对于扩展帧,单滤波模式下比较帧ID和RTR位。接收到的CAN数据xxAMR位为1的位对应信息为不做比较,AMR为0的位对应的信息位与验收代码位相同才能验收通过。假设:验收代码寄存器ACR0~ACR3分别为0x21,0x00,0x05,0x24,屏蔽代码寄存器AMR0~AMR3分别为0x00,0x00,0x00,0x03。帧ID=0x42002A4,RTR=1远程帧能被验收通过。0x40xA0x20x0000000000x00x20x40x000000000双滤波原理双滤波器定义了两组比较规则,每组规则的判断方式与单滤波器模式相同。相或其中一个滤波器比较通过,就能接收该帧。ID28ID27ID21ID26ID25ID24ID23ID22000000000000ID20ID19ID18RTR00000000DB1.7DB1.6DB1.0DB1.5DB1.4DB1.3DB1.2DB1.1待验收的信息位双滤波标准帧比较规则0000010100100010000100010000①ID.28~ID.18=0x052的数据帧验收通过。0100对于标准帧,滤波器2比较帧ID.28~ID.18和RTR位;滤波器1比较ID.28~ID.18、第一个字节和RTR位。假设:验收代码寄存器ACR0~ACR3分别为0x21,0x10,0x05,0x24,屏蔽代码寄存器AMR0~AMR3分别为0x00,0x00,0x00,0x00。AMR000000000AMR100000000ACR000100001ACR100010000AMR30000ACR30100滤波器1AMR200000000AMR30000ACR200000101ACR30010滤波器2②ID.28~ID.18=0X211,且第一个字节=0x04的数据帧验收通过。bit7~4bit3~0接收到的CAN数据接收到的CAN数据ID28ID27ID21ID26ID25ID24ID23ID22000000000000ID20ID19ID18D170000ID16ID15ID14ID13待验收的信息位双滤波扩展帧比较规则00100001①ID.28~ID.13=0x2110的帧能被验收通过。对于扩展帧,两个滤波器都是比较帧的ID.28~ID.13。假设:验收代码寄存器ACR0~ACR3分别为0x21,0x10,0x05,0x24,屏蔽代码寄存器AMR0~AMR3分别为0x00,0x00,0x00,0x00。②ID.28~ID.18=0X0524的数据帧验收通过。接收到的CAN数据00100000接收到的CAN数据AMR100000000AMR10000ACR000100001ACR10010滤波器1000000000000010100010100AMR200000000AMR300000000ACR200000101ACR300100100滤波器2目录验收滤波的作用SJA1000验收滤波器原理SJA1000延时滤波器设置函数测试例程SJA1000验收滤波设置函数voidSJA1000_Config_Filter(charmode,char*Filter){SetBitMask(REG_CAN_MOD,RM_AFM_BIT);if(mode0){SetBitMask(REG_CAN_MOD,AFM_BIT);}else{ClearBitMask(REG_CAN_MOD,AFM_BIT);}WriteSJARegBlock(REG_CAN_ACR0,Filter,8);ClearBitMask(REG_CAN_MOD,RM_AFM_BIT);}//进入复位模式//双滤波模式//单滤波模式//配置验收代码//退出复位模式目录验收滤波的作用SJA1000验收滤波器原理SJA1000延时滤波器设置函数测试例程测试例程voidmain(){timerInit();SJA1000_RST=1;timerDelay(50);SJA1000_Init(0x00,0x14,SJA_CAN_Filter);//初始化SJA100SJA1000_Config_Filter(0,SJA_CAN_Filer);for(;;){if(SJARcvData(STD_SEND_BUFFER,0x00)){D1=!D1;//D1取反}}}测试方法:设置CAN接收滤波器:ACR0~ACR3分别为0x21,0x10,0x05,0x24,AMR0~AMR3分别为0x00,0x00,0x00,0x03,当接收到报文时LED等D1闪烁
本文标题:3.6-验收滤波解读
链接地址:https://www.777doc.com/doc-5268458 .html