有玩stm32 can的么?求助一下
- maxims我用stm32 can读总线,现在想用16位宽进行一个滤波,一个设备有两组数据,0x110/0x120,0x130/0x140类推,110这个组,有帧0x110/112/114/115/116/117,同理,120这组有0x120/122/124/125/126/127,后边类似……
那么,如果我要过滤出0x110,验证码和屏蔽码该怎么算?
如果,我需要过滤出0x110/112/114/115/116/117多帧,又该怎么算?
卖家支持有限,我看了一宿的stm32 CAN教程,也没个demo……没完全整明白。
求计算过程,谢谢 iPhone SE fly ~
--------------------------------
更新一下,如何计算:
1、计算校验码:
比如,过滤出单个帧,ID=0x117,先把0x117进行十六进制转二进制变换,得到B000100010111,由于CAN滤波器只支持11位,所以需要去掉最高位的0,得到B00100010111=。
2、计算屏蔽码:
屏蔽码是如何起作用的呢?从1的最后结果来看,如果我们需要精确得到0x117这帧数据内容,那么就需要精确匹配B00100010111,STM32和ZLG CanTest在屏蔽码的计算上是有区别的,STM32需要精确匹配的位需要置1,无所谓的位需要置0。
精确匹配0x117的屏蔽码=B11111111111,也就是0x7FF,把2校验码和屏蔽码对应起来看:复制代码- B00100010111 = 0x117
- B11111111111 = 0x7FF
3、填入STM32的过滤寄存器
由于STM32的CAN寄存器是32位(也可以拆分为两个16),按寄存器格式填入上边计算所得,需要对计算所得的值进行一个变换。
校验码=0x117<<21=0x22E00000,这里的计算抛弃计算出来的末尾三位(也是由于寄存器设计的原因,我是这么理解的),取前面8位即可。
屏蔽码=0x7FF<<21=0xFFE00000,这里的计算抛弃计算出来的末尾三位(也是由于寄存器设计的原因,我是这么理解的),取前面8位即可。
4、如果需要对一个帧ID段进行过滤,比如0x110到0x117,先来看看规律复制代码- 110 100010000
- 112 100010010
- 114 100010100
- 115 100010101
- 116 100010110
- 117 100010111
- 规律 100010xxx
根据总结出来的规律进行屏蔽码的计算即可。 - B00100010111 = 0x117
- 寒冰炫没读过can总线,读过i2c总线
- linuxpro
- zengxin你这个描述感觉不是很清晰。硬件过滤应该是针对id部分的。
- jckimi你数据都读出来了,过滤还不简单???
- maxims我原来用的ZLG,现在我用的uart can,我想把can数据转到uart上,交给别的软件处理。读数据什么都没问题,就是数据量太大,现在想滤出我要的帧,处理的数据量少点。 iPhone SE fly ~
- maxims我说的就帧id,0x110就是一个帧id iPhone SE fly ~
- maxims算校验码和屏蔽码不会……和cantest不一样, iPhone SE fly ~
- jckimi
- maxims我可能没描述清楚……
100个帧里面,只有我提到的0x110/112/114/115/116/117是我需要的,剩下的是别的数据帧,这对我来说100个帧无效数据太多……我需要计算出两个过滤码,填进去! iPhone SE fly ~ - jckimi
- maximsCANTEST,我知道怎么过滤出来我要的,问题是stm32的can滤波器计算方式和电脑上的cantest不同……我求的是stm32 的can滤波器计算方式。 iPhone SE fly ~
- bluebaby看不懂
- MaipoGeekTalks/D版电子DIY爱好者
欢迎大佬莅临指导
————————————————
因为讨论PC/NAS的话题信息实在已经很多了,
本群主题方向偏电子硬件一些,
有一个能自己动手用电子硬件改造和DIY生活的乐趣所在。
电子电路类话题,模拟数字电路,棚撘功放
单片机类话题,低级的51,AVR,Arduino,STM32,ESP8266,ARM,高级各种树莓派嵌入式系统
DIY类话题,时钟,显示,VFD,LCD,3D制作,机械。。。
————————————————
原来群是NAS类IPSAN的DIY群,后来有更热闹的NAS大群就一直荒废了,现在改主题吧。
放一个临时群二维码,进群后加群主进主群退临时群
关联
[D版微信群][电子DIY爱好者][数模电路单片机Arduino/STM32/ESP8266/时钟/3D打印/]
[https://www.hi-pda.com/forum/viewthread.php?tid=2811471]