导航:首页 > 净水问答 > can屏蔽过滤器2812

can屏蔽过滤器2812

发布时间:2022-08-31 09:32:06

❶ ESP32 如何配置 CAN 双滤波器模式

在互联型产品中,CAN1和CAN2分享28个过滤器组,其它STM32F103xx系列产品中有14个过滤器组,用以对接收到的帧进行过滤。
每组过滤器包括了2个可配置的32位寄存器:CAN_FxR0和CAN_FxR1。这些过滤器相当于关卡,每当收到一条报文时,CAN要先将收到的报文从这些过滤器上"过"一下,能通过的报文是有效报文,收进相关联FIFO(FIFO1或FIFO2),不能通过的是无效报文(不是发给"我"的报文),直接丢弃。
(标准CAN的标志长度是11位。扩展格式CAN的标志长度是29。CAN2.0A协议规定CAN控制器必须有一个11位的标识符。CAN2.0B协议中规定CAN控制器的标示符长度可以是11位或29位。STM32同时支持CAN2.0A/CAN2.0B协议。)
每组过滤器组有两种工作模式:标识符列表模式和标识符屏蔽位模式。
标识符屏蔽位模式:可过滤出一组标识符。此时,这样CAN_FxR0中保存的就是标识符匹配值,CAN_FxR1中保存的是屏蔽码,即CAN_FxR1中如果某一位为1,则CAN_FxR0中相应的位必须与收到的帧的标志符中的相应位吻合才能通过过滤器;CAN_FxR1中为0的位表示CAN_FxR0中的相应位可不必与收到的帧进行匹配。
标识符列表模式:可过滤出一个标识。此时CAN_FxR0和CAN_FxR1中的都是要匹配的标识符,收到的帧的标识符必须与其中的一个吻合才能通过过滤。
注意:CAN_FilterIdHigh是指高16位CAN_FilterIdLow是低16位应该将需要得到的帧的和过滤器的设置值左对齐起。
所有的过滤器是并联的,即一个报文只要通过了一个过滤器,就是算是有效的。
按工作模式和宽度,一个过滤器组可以变成以下几中形式之一:
(1) 1个32位的屏蔽位模式的过滤器。
(2) 2个32位的列表模式的过滤器。
(3) 2个16位的屏蔽位模式的过滤器。
(4) 4个16位的列表模式的过滤器。
每组过滤器组有两个32位的寄存器用于存储过滤用的"标准值",分别是FxR1,FxR2。
在32位的屏蔽位模式下:
有1个过滤器。
FxR2用于指定需要关心哪些位,FxR1用于指定这些位的标准值。
在32位的列表模式下:
有两个过滤器。
FxR1指定过滤器0的标准值FxR2指定过滤器1的标准值。
收到报文的标识符只有跟FxR1与FxR1其中的一个完全相同时,才算通过。
在16位的屏蔽位模式下:
有2个过滤器。
FxR1配置过滤器0,其中,[31-16]位指定要关心的位,[15-0]位指定这些位的标准值。
FxR2配置过滤器1,其中,[31-16]位指定要关心的位,[15-0]位指定这些位的标准值。
在16位的列表模式下:
有4个过滤器。
FxR1的[15-0]位配置过滤器0,FxR1的[31-16]位配置过滤器1。
FxR2的[15-0]位配置过滤器2,FxR2的[31-16]位配置过滤器3。
STM32的CAN有两个FIFO,分别是FIFO0和FIFO1。为了便于区分,下面FIFO0写作FIFO_0,FIFO1写作FIFO_1。
每组过滤器组必须关联且只能关联一个FIFO。复位默认都关联到FIFO_0。
所谓“关联”是指假如收到的报文从某个过滤器通过了,那么该报文会被存到该过滤器相连的FIFO。
从另一方面来说,每个FIFO都关联了一串的过滤器组,两个FIFO刚好瓜分了所有的过滤器组。
每当收到一个报文,CAN就将这个报文先与FIFO_0关联的过滤器比较,如果被匹配,就将此报文放入FIFO_0中。
如果不匹配,再将报文与FIFO_1关联的过滤器比较,如果被匹配,该报文就放入FIFO_1中。
如果还是不匹配,此报文就被丢弃。
每个FIFO的所有过滤器都是并联的,只要通过了其中任何一个过滤器,该报文就有效。
如果一个报文既符合FIFO_0的规定,又符合FIFO_1的规定,显然,根据操作顺序,它只会放到FIFO_0中。
每个FIFO中只有激活了的过滤器才起作用,换句话说,如果一个FIFO有20个过滤器,但是只激话了5个,那么比较报文时,只拿这5个过滤器作比较。
一般要用到某个过滤器时,在初始化阶段就直接将它激活。
需要注意的是,每个FIFO必须至少激活一个过滤器,它才有可能收到报文。如果一个过滤器都没有激活,那么是所有报文都报废的。
一般的,如果不想用复杂的过滤功能,FIFO可以只激活一组过滤器组,且将它设置成32位的屏蔽位模式,两个标准值寄存器(FxR1,FxR2)都设置成0。这样所有报文均能通过。(STM32提供的例程里就是这么做的!)
STM32 CAN中,另一个较难理解的就是过滤器编号。
过滤器编号用于加速CPU对收到报文的处理。
收到一个有效报文时, CAN会将收到的报文 以及它所通过的过滤器编号, 一起存入接收邮箱中。CPU在处理时,可以根据过滤器编号,快速的知道该报文的用途,从而作出相应处理。
不用过滤器编号其实也是可以的, 这时候CPU就要分析所收报文的标识符, 从而知道报文的用途。
由于标识符所含的信息较多,处理起来就慢一点了。
STM32使用以下规则对过滤器编号:
(1) FIFO_0和FIFO_1的过滤器分别独立编号,均从0开始按顺序编号。
(2) 所有关联同一个FIFO的过滤器,不管有没有被激活,均统一进行编号。
(3) 编号从0开始,按过滤器组的编号从小到大,按顺序排列。
(4) 在同一过滤器组内,按寄存器从小到大编号。FxR1配置的过滤器编号小,FxR2配置的过滤器编号大。
(5) 同一个寄存器内,按位序从小到大编号。[15-0]位配置的过滤器编号小,[31-16]位配置的过滤器编号大。
(6) 过滤器编号是弹性的。 当更改了设置时,每个过滤器的编号都会改变。
但是在设置不变的情况下,各个过滤器的编号是相对稳定的。
这样,每个过滤器在自己在FIFO中都有编号。
在FIFO_0中,编号从0 -- (M-1), 其中M为它的过滤器总数。
在FIFO_1中,编号从0 -- (N-1),,其中N为它的过滤器总数。
一个FIFO如果有很多的过滤器,,可能会有一条报文, 在几个过滤器上均能通过,这时候,,这条报文算是从哪儿过来的呢?
STM32在使用过滤器时,按以下顺序进行过滤:
(1) 位宽为32位的过滤器,优先级高于位宽为16位的过滤器。
(2) 对于位宽相同的过滤器,标识符列表模式的优先级高于屏蔽位模式。
(3) 位宽和模式都相同的过滤器,优先级由过滤器号决定,过滤器号小的优先级高。
按这样的顺序,报文能通过的第一个过滤器,就是该报文的过滤器编号,被存入接收邮箱中。

❷ 2812本身支持can通信,那为什么板子上还要有can收发器

2812是自带can总线的控制器 但是can总线接口芯片是can控制器和物理总线之间的接口自带232接口 用MAX3232等芯片是实现TTL和RS232双向电平的转换

❸ can总线的ID掩码有什么作用

通过设置CAN过滤器来,可以使CAN端口只接收源符合规定的的CAN数据包,这样就能将CAN总线划分成若干网段用于支持不同应用、
例如:
节点A接受前四位为1010的数据,即ID:1010 xxxxxxx的数据。使用掩码可屏蔽后七位。

❹ STM32里面的CAN,过滤器的设置有什么用(答案好,有追加)

CAN总线传复送到数据是基于消息制而不是地址的,每个消息用不同的编号表达(2.0A用11位、2.0B用29位)。在CAN上进行简单传送而自定义传送协议时,要把所有需要传送的命令列出,然后根据传送的紧急程度(优先级)从高到低进行排序,然后把最高优先级的设定一个最低的编号、以此类推...最低优先级的设定最高的编号。因为CAN物理上是不分主从,所以当有几个站点同时发送而发生碰撞时,编号最低的将优先传送。
从总线上接收消息:每个站点可能只对所有协议中的几个消息感兴趣,CAN初始化时,在过滤器中设置本站点需要接收的消息编号,这样一旦总线上有需要的消息将会自动接收,并产生中断,通知CPU收到新消息,CPU在中断程序中接收、处理。
发送消息到总线上:CAN初始化时设置本站点将来需要发送的消息编号,当运行过程中需要发送消息时,填入相关数据,设置相关消息对象发送。
CAN控制器内部一般设有32个消息对象,分成2组,分别各用一组寄存器来操作。一般一组用来接收过滤,另一组用来发送。

❺ 请教 两个STM32 CAN通信过滤器设置问题

CAN总线传送到数据是基于消息而不是地址的,每个消息用不同的编号表达(2.0A用11位、2.0B用29位)。在CAN上进行简单传送而自定义传送协议时,要把所有需要传送的命令列出,然后根据传送的紧急程度(优先级)从高到低进行排序,然后把最高优先级的设定一个最低的编号、以此类推...最低优先级的设定最高的编号。因为CAN物理上是不分主从,所以当有几个站点同时发送而发生碰撞时,编号最低的将优先传送。
从总线上接收消息:每个站点可能只对所有协议中的几个消息感兴趣,CAN初始化时,在过滤器中设置本站点需要接收的消息编号,这样一旦总线上有需要的消息将会自动接收,并产生中断,通知CPU收到新消息,CPU在中断程序中接收、处理。
发送消息到总线上:CAN初始化时设置本站点将来需要发送的消息编号,当运行过程中需要发送消息时,填入相关数据,设置相关消息对象发送。
CAN控制器内部一般设有32个消息对象,分成2组,分别各用一组寄存器来操作。一般一组用来接收过滤,另一组用来发送。
希望能解决您的问题。

❻ STM32 CAN 过滤器设置

看手册里有关该模式过滤寄存器的每位含义,最低三位是IDE RTR和 0,前面高位是标识符

❼ 你好,在问问中看到您有关DSP2812 CAN外围电路的问题想问下是否还记得外围硬件设计

我本科学的是控制,在公司主要做的是控制算法及数字实现。所以对硬件的设计

不是很了解,对protel的了解仅限于学过。不过做嵌入式这一行的肯定软件硬件

都多少有些了解,我说一下我们的can硬件电路,你参考一下吧。

你这个隔离我不太明白是仅仅是使用的电源不进行隔离吗?我认为如果芯片VCC用Dsp的3.3V

电压,问题不是很大。因为我们经常用一个vcc去带dsp和fpga.所以使用vcc用dsp的3.3应该是可以。

但是对于端口,我认为隔离还是有必要的。我用的can总线收发器为P82C250(直接抄的开发板)。5v供电。我的芯片中TXD和RXD是经过一个CPLD再和DSP相连的。CPLD的驱动能力比2812

端口的驱动能力强,这相当于进行了隔离,可以防止后面的干扰。我的芯片电路如下:

这里CANTX_1和CANRX_1是连到CPLD上的。右边是连到总线上的电路。

❽ DSP 2812 CAN 发送TA标志位不能置位,老是卡在while循环处,但接收端能收到数据。怎么回事啊!!

接收端收到的应该不是发送端发出的数据吧?你是拿什么做CAN通信的?两个实验板还是一边是接收器,接收端没有收到信息当然不会回复应答信号了,发送端没有收到确认符号肯定会卡在循环处,建议检查两个方面
1 比特率是不是太高 2 通信线是否良好
CAN通信程序我都做完了,里面基本所有中断功能都添加了,比如中断收发,备用邮箱,错误重发,空闲睡眠什么的,总体来说不是很难

阅读全文

与can屏蔽过滤器2812相关的资料

热点内容
ro膜的厂家 浏览:70
饮水机的水能放多少天 浏览:653
cf800过滤桶使用方法 浏览:937
道路雨污水管道施工网络图 浏览:517
10年奥拓空调滤芯怎么换视频 浏览:866
含盐废水处理方法有哪些 浏览:13
超滤和浓缩 浏览:443
ro反渗透膜的工作原理 浏览:903
自来水过滤水垢水碱 浏览:404
直饮水机管理费怎么算 浏览:629
专业污水处理机多少钱 浏览:952
ro膜拆卸视频 浏览:635
过滤棉好点的香烟 浏览:105
室内树脂水池 浏览:201
快速给锅底除垢 浏览:873
江苏玻璃钢污水处理设备多少钱 浏览:272
硅片如何清洗废水 浏览:93
郑州净水反渗透设备价格 浏览:546
为什么中国不能帮日本处理核废水 浏览:191
污水处理厂土建部分套 浏览:845