0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

以STM8为例的CAN滤波器内容

奈因PCB电路板设计 来源:ST MCU技术部门 作者:Felix.zhao 2021-08-11 11:06 次阅读

前言在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为0x12345678 (0001,0010,0011,0100,0101,0110,0111,1000)将扩展帧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;同理,对于下面的配置是只接收标准id= 0x321(0011,0010,0001)的ID(也是32位过滤器),因为也是数据帧,所以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 11110x1828A0EE:0001 1000 0010 1000 1010 0000 1110 1110然后我们将0x1828A0EF

二进制的格数据组成如上图mapping所示的格式Can_fxr1:1100 0001 0xc1Can _fxr2:0100 1001 0x49 //这里有个RTR位我们设置为0表示数据帧,IDE位设置为1表示扩展ID,Can _fxr3:0100 0001 0x41Can _fxr4:1101 1110 0xDE

这时我们工作在标识符列表模式,identifier/Mask的寄存器相当于identifier使用。

再将0x1828A0EE二进制的格数据组成如上图mapping所示的格式Can _fxr5:1100 0001 0xc1Can _fxr6:0100 1001 0x49 //这里有个RTR位我们设置为零表示数据帧,IDE设置为1表示扩展IDCan _fxr7:0100 0001 0x41Can _fxr8:1101 1100 0xDC

16位配置模式也经常使用,如CAN网络管理中往往涉及到网络管理ID-0x4xx,因此需要利用ID和Mask模式,其余的采用ID模式,可以建立滤波器设置寄存器数组。

0x400网段,0x330,0x3200x400:

展开 0000 0100 0000 0000,采用标准帧数据帧格式0x330: 展开 0000 0011 0011 00000x320:

展开 0000 0011 0010 0000CAN_F0R1: 100 0000 0 0x80CAN_F0R2: 000 00 000 0x00CAN_F0R3:

111 0000 0 0xE0CAN_F0R4:

00000000 0x00CAN_F0R5: 011 0011 0 0x66CAN_F0R6: 00000000 0x00CAN_F0R7: 011 0010 0 0x64CAN_F0R8: 00000000 0x00FSC00 = 0; FSC01 = 1; FMH0 = 1; FML0 = 0; FACT0 = 1;

在以往的项目中用过多个品牌单片机,包括国产的,一直感觉ST的滤波器设置比较麻烦,每次用到的时候都要花较长时间去回忆。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6039

    文章

    44583

    浏览量

    636602
  • 滤波器
    +关注

    关注

    161

    文章

    7846

    浏览量

    178425
  • CAN
    CAN
    +关注

    关注

    57

    文章

    2757

    浏览量

    463958
  • STM8
    +关注

    关注

    18

    文章

    392

    浏览量

    56844

原文标题:STM8单片机CAN滤波器的设置

文章出处:【微信号:pcbgood,微信公众号:奈因PCB电路板设计】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    切比雪夫I型滤波器设计一个低通滤波器

    设计的低通滤波器要求其采样频率44100Hz,通带8kHz,过渡带500Hz,阻带衰减为30dB.
    发表于 05-08 15:39

    视频滤波器有什么作用?

    FMS6403来说明视频滤波器的原理,它是飞兆半导体公司针对电视、机顶盒和DVD播放机对扩展滤波器的需要而设计的新一代
    发表于 09-30 09:02

    低通滤波器设计

    低通滤波器设计内容有:低通滤波器的基本电路和方程,低通勃脱华滤波器,二阶低通勃脱华斯滤波器,低通契比雪夫
    发表于 12-01 12:39 85次下载
    低通<b class='flag-5'>滤波器</b>设计

    带通滤波器设计

    带通滤波器设计内容有:二阶带通滤波器的基本电路和方程,二阶VCVS带通滤波器,二阶多路所馈带通滤波器,二阶正反馈带通
    发表于 12-01 12:45 1047次下载
    带通<b class='flag-5'>滤波器</b>设计

    基于Multisim8的RC有源模拟滤波器设计

    详细介绍了常用的 RC有源滤波器 的两种结构及其设计步骤.第一种VCVS结构,设计了基于巴特沃斯逼近的带通滤波器,并介绍了一款最新的常
    发表于 06-16 10:45 115次下载
    基于Multisim<b class='flag-5'>8</b>的RC有源模拟<b class='flag-5'>滤波器</b>设计

    多速率采样中的CIC滤波器设计与分析

    CIC滤波器是常用于多速率采样抽取或内插过程中的高效滤波器,具有结构简单,易于工程实现的特点。提高采样速率,首先介绍了内插理论和CtC
    发表于 09-20 15:12 73次下载
    多速率采样中的CIC<b class='flag-5'>滤波器</b>设计与分析

    滤波器的材料是什么

    滤波器的材料一般有:金属壳,铜漆包线、阻燃材料骨架、磁环磁柱导磁体等,下面这个电感滤波器:所用到的材料有铜漆包线、磁环和阻燃材料制成。
    的头像 发表于 01-14 15:46 1.1w次阅读

    STM8单片机,如何实现Bootloader?

    上位机把.bin/hex文件CAN通讯的方式发送给单片机并存储在规定的Flash中。这个过程与手机端更新APP类似。 STM8单片机
    的头像 发表于 04-12 09:48 3201次阅读
    <b class='flag-5'>STM8</b>单片机<b class='flag-5'>为</b><b class='flag-5'>例</b>,如何实现Bootloader?

    AD7173-8滤波器模型

    AD7173-8滤波器模型
    发表于 05-22 14:48 14次下载
    AD7173-<b class='flag-5'>8</b><b class='flag-5'>滤波器</b>模型

    关于CAN滤波器相关的内容

    。为了解决这个问题,可以通过设置滤波器实现只接收特定ID。ST系列单片机的滤波器设置非常绕,很容易把自己绕晕了,下面STM8
    的头像 发表于 09-08 09:39 3727次阅读

    模拟无源滤波器设计(九)-Gaussian滤波器设计详解

    文章详细对高斯滤波器的综合设计进行讲解,解释如何从时域无过冲推导出高斯滤波器的。并且深入探讨了高斯滤波器的零极点分布。最后介绍基于Matlab的滤波器设计软件,
    的头像 发表于 05-28 11:31 7402次阅读

    LinearAmplitude滤波器设计详解

    本文提出了一种新型的滤波器,其频响具有直线特性,本文将详细解释如何推导这种特殊的滤波器。最后介绍基于Matlab的滤波器设计软件,低通为
    的头像 发表于 07-11 09:51 748次阅读
    LinearAmplitude<b class='flag-5'>滤波器</b>设计详解

    最适合CAN FD的共模滤波器

    CAN FD用共模滤波器 - ACT1210D 信号线的共模扼流圈/滤波器   ACT1210D型是一种通过包含绕组工艺的独有结构设计,使泄漏电感、寄生电容、模式转换特性最小化,针对比以往更容易受到
    的头像 发表于 08-22 11:37 2104次阅读
    最适合<b class='flag-5'>CAN</b> FD的共模<b class='flag-5'>滤波器</b>

    STM8单片机CAN滤波器的设置

    STM8单片机CAN滤波器的设置
    的头像 发表于 10-17 14:50 2510次阅读
    <b class='flag-5'>STM8</b>单片机<b class='flag-5'>CAN</b><b class='flag-5'>滤波器</b>的设置

    CAN线滤波器

    CAN线滤波器
    发表于 04-14 10:07 0次下载