以STM8为例的CAN滤波器内容

发布者:w2628203123最新更新时间:2021-10-14 来源: eefocus关键字:STM8  CAN  滤波器 手机看文章 扫描二维码
随时随地手机看文章

前言在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的滤波器设置比较麻烦,每次用到的时候都要花较长时间去回忆。

关键字:STM8  CAN  滤波器 引用地址:以STM8为例的CAN滤波器内容

上一篇:STM8S之TIM4自学笔记
下一篇:基于STM8主控的物美价廉的毫欧表设计

推荐阅读最新更新时间:2024-11-10 12:08

高通推出全新射频滤波器技术,赋能新一代5G和Wi-Fi解决方案
高通推出全新射频滤波器技术,赋能新一代5G和Wi-Fi解决方案 先进的高通ultraBAW滤波器技术面向5G和Wi-Fi市场将射频组合扩展至7GHz 2021年10月20日,圣迭戈——高通技术公司今日宣布推出面向7GHz以下频段的高通ultraBAW射频滤波器技术,公司此前通过调制解调器到天线解决方案推动无线产品细分市场的高性能5G和连接系统的发展,为此项创新奠定了坚实基础。 射频滤波器将手机发射和接收的无线电信号从不同频段中分离出来。全新高通ultraBAW射频滤波器技术将支持5G和Wi-Fi解决方案使用高达7GHz以下的频谱,在更高频段实现高性能。使用7GHz以下频段将使5G和Wi-Fi共存惠及下一代移动终端、笔
[网络通信]
高通推出全新射频<font color='red'>滤波器</font>技术,赋能新一代5G和Wi-Fi解决方案
STM8的定时唤醒单元的使用
STM8L的“RTC periodic wakeup unit”可以通过寄存器RTC_CR1的WUCKSEL bits来配置不同的唤醒周期。具体的有以下的三种模式:   1.1,WUCKSEL = 0xxb for short wakeup periods   1.2 WUCKSEL = 10xb for medium wakeup periods   1.3 WUCKSEL = 11xb for long wakeup periods 其中short wakeup periods时钟的分频是如下流程: 则的周期唤醒在不同时钟源频率下的clk为:      最小的唤醒周期为(0x0001+1)*0.125us
[单片机]
<font color='red'>STM8</font>的定时唤醒单元的使用
同星智能推出创新型CAN FD转光纤产品
新品发布/New products release 同星智能为应对汽车行业的快速发展,一直在积极推出新产品,以满足市场对汽车电子基础工具链产品的不断升级和多样化需求。同星智能近期又推出一款创新型CAN FD光电收发器。 01 产品简介 TO1013是一款创新型的CAN FD转光纤产品,与传统光电收发器的不同点在于TO1013的一端可以直接通过USB链接到PC,相当于做EMC测试时不再需要额外的CAN工具。 CAN FD总线速率最高支持8Mbps,产品采用光纤作为数据传输的介质,使得传输损耗降低,从而增加传输距离,同时光纤还具备优良的抗EMI和EMC特性,使得设备的抗干扰性能进一步提升。 TO1013 Is
[汽车电子]
同星智能推出创新型<font color='red'>CAN</font> FD转光纤产品
avr studio 的使用小记——有关cannot find ‘*.elf’ 的问题
最近在学习avr单片机,并下载了avr studio4.19和winavr20110110,试着写了一些代码,可是变异的时候提示: avr-objcopy: '*.elf': No such file 网上找了很多资料,可是还得具体问题具体分析的, 于是我就在project- Configuration Options- 下面的custom options的external tools的avr-gcc和make这两个文件制定到我安装的winavr路径上,于是乎,便于就通过了,不知为什么,以前4.18版本的时候都没又遇到这种问题的,哈哈
[单片机]
整车厂测试设备如何快速实现CANFD升级?
一、新一代智能网联车 CANFD 的应用 传统的汽车网络架构主要是由 CAN 总线组成,车内分布式电控单元 ECU 按照功能划分为动力总成、车身控制、辅助驾驶等总线区域;车窗、车灯、天窗等则通过 LIN 总线接入 CAN 网络。 在新一代智能网联车的浪潮下,随着车载 ECU 的与日倍增以及处理器运算能力和硬件的高速发展,连接 ECU 的网络需要更大的带宽,这一需求远超 CAN 等传统车载网络的容量极限。 因此,比较明确的趋势是向 CAN FD 过渡,CAN FD 提供了 64 字节的数据吞吐量以及最高 5Mbps 的传输速率。由于车载以太网具有高带宽、低延迟、低成本的特性,在新一代整车架构中将替代 CAN 总线成为优选网
[嵌入式]
整车厂测试设备如何快速实现<font color='red'>CAN</font>FD升级?
汽车电子系统接地及CANDT地偏移测试系统设计
伴随越来越多的高科技汽车电子产品的开发与应用,如何解决汽车电子系统的电磁兼容问题,提高汽车的可靠性和安全性,已经成为一个非常重要和迫切的问题。然而接地设计作为根治电磁兼容问题方法之一,地偏移测试显得就尤为重要了,因此本文对接地设计及地偏移测试进行了解读。 一、整车系统接地设计 1、地线的意义 地线在汽车上不仅仅是一个接点,它是一个综合的系统的汽车电气系统,它的主要功能有: ●提供给直流负载、交流负载和瞬变负载电流回路,连接蓄电池或发电机的负极端; ●提供电压给传感器、通讯系统、单端数字输入等; ●静电屏蔽,隔离外部RF辐射; ●提供静电放电泄流,ESD保护; ●汽车天线的地平面; ●降低电平,
[汽车电子]
汽车电子系统接地及<font color='red'>CAN</font>DT地偏移测试系统设计
基于CAN总线和传感器实现自攀爬机器人控制系统的软硬件设计
1、引言 随着机器人技术的发展,高层建筑幕墙自动化清洗成为可能。“复杂弧面幕墙清洗机器人开发”为863计划资助项目,机器人设计任务是清洗位于北京长安街的国家大剧院金属和玻璃顶棚。该剧院地处北京市中心,必将成为北京的标志性建筑之一,加之北方的气候条件恶劣,剧院外露墙面的清洗非常重要。 机器人系统应用于高层幕墙清洗作业,工作条件恶劣,面向工程使用无疑要求系统具有更高的安全性和可靠性。因此机器人需要好的控制系统。本文针对曲面高空作业特点,在介绍自攀爬式机器人的机构组成的基础上详细介绍机器人控制硬件系统和结构。 2、国家大剧院结构特点及机器人设计 剧院主体外形呈半椭球形,外墙由玻璃和钛合覆盖,总表面面积达到36000m2
[机器人]
一般无源滤波器能否用于变频器的谐波治理
一般的无源谐波滤波器采用LC陷波电路,并联在线路上,为谐波电流提供一个低阻抗通路,如图1所示。   图1 传统陷波器型滤波器   这种原理的滤波不能用于 变频器 的 电源 输入端,主要是存在以下几个方面的问题:    第一:滤波效果不确定:   这种滤波器与变频器组合起来时,并不能保证传动系统的谐波电流发射满足特定的要求,因为滤波器的实际效果与电网的阻抗有很大关系;   用如图2所示的电路来分析滤波器的效果。图中,ZS表示 变压器 的阻抗,ZL表示线路的阻抗,(ZS+ZL)代表了电网的阻抗。利用并联电路分析的方法可知,流过滤波器的谐波电流越大,意味着流入电网的谐波电流越小,也就是滤波器的效果越好。   
[电源管理]
一般无源<font color='red'>滤波器</font>能否用于变频器的谐波治理

推荐帖子

怎么样打包驱动程序
本人想做一个关于IDCamera的驱动程序现在有个需要从新硬件发现然后搜索的那个东西但是需要的是,做出一个像EXE一样的打包出来,让人家方便点安装请问需要有那些环境,和配置支持怎么样打包驱动程序可以参考一下winpcap,就是你说的那种方式。如果是普通的Camera驱动程序?都没有人知道吗?
dqlm016 嵌入式系统
继电器的使用
这款继电器能不能用作控制33V的通断?本来继电器是用于风扇的控制(风扇12V),但现在要求对加热块的电源输入处加一个继电器作为故障保护;电源电33V的;加热块功率60W,电流小于2A继电器是28V10A的,但我用来控制33V直流,请问我如果还用这个继电器,是否会有大的影响?继电器具体参数在附件图片中,线圈电压是5V继电器的使用可以的,继电器的控制通断能力,看触点的接触的电流电压大小。与线包没有关系的。可以使用,没有问题。但是继电器的生产厂家肯定不给你服安全责任我觉得用着肯定没问
mark0908 单片机
STM8还有准备送demo板吗?
SWIM协议已经都看完了,想试试看(硬件已经准备好了,需要测试一下底层)。STM8还有准备送demo板吗?如果分析没有错的话,应该支持STM8是没有问题的相关链接:http://group.ednchina.com/1065/14987.aspx对SWIM的分析以及实现方法我们是ST的代理,已与多家STM32客人在合作,经验丰富,可以提供你需要的帮助,需要在STM32上了解的请与我联系,谢谢!邓世宏SimonDeng文晔集团/庆成企业
abncat stm32/stm8
求助!! 我想学习WinCE方向的驱动编程(主要是网卡驱动),请问该怎么入门啊,我没写过驱动,只做过上层应用程序,或者给介绍基本好书也行,谢谢啦!!
麻烦各位高手指点!!求助!!我想学习WinCE方向的驱动编程(主要是网卡驱动),请问该怎么入门啊,我没写过驱动,只做过上层应用程序,或者给介绍基本好书也行,谢谢啦!!我也是的哈~~请求帮助
nankeey WindowsCE
我用C8051f想编modbus协议
本帖最后由似是而非君于2015-8-117:20编辑 我想问如果编程modbus协议,我用单片机写的串口程序,发的是ASCll模式的,然后用串口助手接收的话收到的对(下边的图),,但是用modbus调试助手收到的就不对(第一张图),有不一样的,还有不是完整收到的。是有可能是什么情况,求大家踊跃发言我用C8051f想编modbus协议modbus可以用RS232作为物理层,但它并不完全是RS232,
似是而非君 51单片机
[X-NUCLEO-53L4A3 TOF评估板]2.传感器光谱、激光功率、温度测试
下面分别从板子功率、激光功率、温度、光谱进行测试。首先进行板子的功率测试,使用USB功率测试仪,板子的工作电压5V,电流0.1A,总功耗0.5W左右。然后进行激光高功率测试,测试结果:正常工作时约2mW左右。接下来进行光谱测试,由测试结果可知激光的波长约940nm左右,这与官方参数基本一致。最后进行温度测试,使用后外热成像分辨率160*120,工作时单片机温度约为32℃左右,传感器温度约为27℃左右。总结: 测试项目 结果 板
镜花水月000 传感器
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved