STM8单片机CAN滤波器的设置
▼更多精彩推荐 , 请关注我们▼
大家好 , 我是小舒 , 今天和大家分享一下CAN滤波器相关的内容 , 滤波器主要用来设置CAN的接收ID , 当CAN总线上所挂接的节点较多 , 数据量较大的话 , 对单节点的接收判断可能造成较大的压力、占用较多的资源 。为了解决这个问题 , 可以通过设置滤波器实现只接收特定ID 。ST系列单片机的滤波器设置非常绕 , 很容易把自己绕晕了 , 下面以STM8为例和大家分享一下 。
注意 , 此文需要看多遍 。
前言
在CAN协议里 , 报文的标识符不代表节点的地址 , 而是跟报文的内容相关的 。因此 , 发送者以广播的形式把报文发送给所有的接收者 。节点在接收报文时 , 根据标识符的值决定软件是否需要该报文;如果需要 , 就拷贝到RAM里;如果不需要 , 报文就被丢弃且无需软件的干预 。为满足这一需求 , beCAN为应用程序提供了个可配置的、位宽可变的6个(0-5)过滤器组 , 用于只接收那些软件需要的报文 。硬件过滤的做法节省了CPU开销 , 否则就必须由软件进行过滤 , 从而占用一定的CPU资源 。
滤波器设置
滤波器设置包括下面几个寄存器:CAN滤波模式寄存器1 (CAN_FMR1)和CAN滤波模式寄存器2(CAN_FMR2)、CAN滤波配置寄存器1 (CAN_FCR1)、CAN滤波配置寄存器2 (CAN_FCR2)和CAN滤波配置寄存器3 (CAN_FCR3) , CAN滤波组i寄存器x (CAN_FiRx) (i = 0 .. 5, x = 1 .. 8) 。
滤波模式寄存器用于设置滤波器为标识符列表模式和掩码模式 , 滤波配置寄存器用于开启或关闭滤波器和滤波器的宽度设置 , 滤波组用于具体滤波设置 。
6个可配置的位宽可变的过滤器组 , 通过FSCx0(x=1..6)和FSCx1(x=1..6)设置滤波宽度 ,
就32位滤波器设置进行解读 , CAN报文分为标准帧和扩展帧 , 标准帧ID11位 , 扩展帧29位 , ID与滤波配置映射关系如上表所示 , 如滤波模式设置可知可以分为两个ID或者一个ID+Mask 。当需要过滤某一段ID时 , 使用ID+Mask模式 , 当过滤具体ID时直接使用ID模式即可 。
如果我的扩展id是0x12345678 ;想只接收0x12xxxxxx的标识符号 , 该如何设置滤波器 ,
此处采用32位滤波器0进行滤波配置 , 因此FSC00 = 1;FSC01 = 1;FMH0 = 0;FML0 = 0;
将扩展帧ID填入CAN帧ID格式中
RTR位我们设置为0表示数据帧 , IDE位设置为1表示扩展ID , 因为我们的ID是29位的 , 所以RTR = 0;IDE = 1;
在滤波器中填充如下:
如果要关心到具体的某一个比特位置;如果要过滤让它只接收0x12xxxxxx的表示符号;
这时候要根据它实际在identify中的位置去修改idmask ; 前八个比特 , 对应的就是黄色和绿色的部分 , 所以其他的颜色 , 可以都填0表示不需要关心 , 则这里填入:1 1 1 1 ,1 x x x,我们这里填0xF8 ;
CAN_F0R1 = 0x91; CAN_F0R2 = 0x00; CAN_F0R3 = 0x00; CAN_F0R4 = 0x00;
CAN_F0R5 = 0x91; CAN_F0R6 = 0x00; CAN_F0R7 = 0x00; CAN_F0R8 = 0x00;
因为也是数据帧 , 所以RTR = 0,标准的id , 所以IDE = 0 ;所以填入到:
文章图片
文章图片
CAN_F0R1 = 0x64; CAN_F0R2 = 0x20; CAN_F0R3 = 0x00; CAN_F0R4 = 0x00;
CAN_F0R5 = 0xFF; CAN_F0R6 = 0xE0; CAN_F0R7 = 0x00; CAN_F0R8 = 0x00;
设置过滤器0只接收ID为0x1828A0EF和0x1828A0EE的数据帧 。(工作在标识符列表模式)
首先我们把这两个ID写成二进制:
0x1828A0EF:0001 1000 0010 1000 1010 0000 1110 1111
0x1828A0EE:0001 1000 0010 1000 1010 0000 1110 1110
然后我们将0x1828A0EF二进制的格数据组成如上图mapping所示的格式
Can_fxr1:1100 0001 0xc1
Can _fxr2:0100 1001 0x49 //这里有个RTR位我们设置为0表示数据帧 , IDE位设置为1表示扩展ID ,
- canalys公布2021年全球个人电脑市场数据
- Canalys:苹果2021年四季度重夺全球手机销量第一,小米第三
- Canalys :2021年Q3中国云服务市场华为云和腾讯云市占率环比下降
- 与Win10/11联动,微软在Edge Canary版中测试数据共享
- 佛山汽车涡轮叶片三维尺寸检测CASCAN S5三维扫描仪
- Handyscan Black elite 三维扫描仪租赁
- CASCAN S5三维扫描仪尺寸测量检测设备仪器广东广州
- CanonRumor讨论了佳能EOS R1的信息
- 说说CAN转232模块在火灾报警主机系统中的妙用
- 奥恳aoocanes07电竞耳机
