标题: STM32 CAN发送和接收过滤原理 (过程详细说明,语言生动形象) [打印本页]

作者: njchenmin    时间: 2018-4-14 18:19
标题: STM32 CAN发送和接收过滤原理 (过程详细说明,语言生动形象)
语言生动形象,让人一看就懂。
STM32 CAN发送和接收过滤原理
通过对 CANBUS 协议的理解 , 我们知道 : CAN 总线上的节点接收或发送数据都是以帧为单位的 ! ! ! CAN 协议规定了好几种帧类型,但是对于我们应用来说,只有数据帧和远程帧可以通过软件编程来控制 。 ( 其他几种帧都是由 CAN 控制器硬件实现的 , 我们想管也管不了 ) 。而数据帧和远程帧最大的区别在于 : 远程帧没有数据域 。 数据帧分为标准数据帧和扩展数据帧,它们之间最大的区别在于:标识符 (ID) 长度不同(标准帧为 11 位,扩展帧为 29 位 ) 。为了能更好地理解下面的内容,让我们先来回忆一下标准数据帧是什么样子的:


1 :假如我们只想收到别人发过来的 ID 为 0x317 的标准数据帧:
0X317 二进制位: 011 0001 0111
那么可以这样设置 :


种标准数据帧了。
以上是 32 位模式下标识符屏蔽模式和标识符列表模式下的设置方法。
在 16 位模式下,只不过把两个 32 位寄存器拆成了 4 个 16 位的而已,原理和 32 位模式下是一样的。就不赘述了。
接收数据是通过指向 Can Can Can Can R R R R xMsg xMsg xMsg xMsg 结构体变量的指针传递的。直接调用 CAN_Receive 即可轻松完成。
typedef struct
{
uint32_t StdId;
uint32_t ExtId;
uint8_t IDE;
uint8_t RTR;
uint8_t DLC;
uint8_t Data[8];
uint8_t FMI;
} CanRxMsg;
CanRxMsg 结构与 CanTxMsg 差不多。只是多了一个 FMI 域。

FMI

FMI 设定为消息将要通过的过滤器索引 , 这些消息存储于邮箱中 。 该参数取值范围 0 到0xFF 。

完整的pdf格式文档51黑下载地址:
STM32CAN详解.pdf (252.93 KB, 下载次数: 595)



作者: MCreator    时间: 2018-4-25 12:52
学习下目前正在学习can协议
作者: chenjuntang    时间: 2018-6-14 00:53
正在学习,非常实用
作者: tangdongming    时间: 2019-3-29 14:58
值得学习,推荐
作者: puresilicon    时间: 2019-4-29 00:44
的确写得很生动形象,不错
作者: puresilicon    时间: 2019-5-1 10:13
写得很好,值得学习
作者: ztsos123    时间: 2019-5-1 20:11
写得真好.
好好学习一下
感谢楼主的分享

      
作者: 00750    时间: 2019-6-13 15:48
好东西,值得学习!
作者: chh543    时间: 2019-6-14 16:04
汽车电子必备的通讯协议
作者: yaozhonlei    时间: 2019-6-14 18:33
谢谢分享!
作者: 大白兔190101    时间: 2019-8-13 08:36
学习了,谢谢指教
作者: 仓道与    时间: 2019-9-6 09:47
学习了
作者: 北雁南飞112    时间: 2019-9-7 08:55
不错的资料,谢谢分享
作者: 离谱    时间: 2019-9-10 21:32
非常不错,卡在过滤器几天了  看了这篇感觉思路都通了。
作者: eee123    时间: 2019-10-8 10:59
以前用的是恒润的协议,现在看看能不能自己搞

作者: Gerage    时间: 2019-10-14 13:43

学习下目前正在学习can协议
作者: Lee_2019    时间: 2019-12-14 23:19

谢谢分享!
作者: lkjd3k    时间: 2019-12-15 19:28
收藏 正在用的是485 想转为CAN通讯
感谢楼主
作者: yiran19880808    时间: 2020-2-18 09:25
谢谢分享,学习了
作者: xiaoxudiy    时间: 2020-3-18 12:06
CAN如何接收?如何过滤?无数初学者都倒在这里!算我一位,幸好,到此得到“超度”,没有比这更易理解的了,感谢作者的用心付出!受教了。
作者: 电子小萌    时间: 2020-3-24 16:27
讲得非常好
作者: shuangxuehuu    时间: 2020-3-31 16:42
这是我看到的最最好的例子
作者: jjwangxu2008    时间: 2020-4-10 08:43
的确写得很生动形象,不错
作者: huihui.    时间: 2020-4-14 11:31
很形象,已收藏
作者: mango_lin    时间: 2020-4-21 16:08
资料不错,这几天CAN通信运行过程中莫名其妙停止,一段时间后恢复,不知道啥原因
作者: abc2de    时间: 2020-6-30 11:50
请教个问题,这句话什么意思:”接收数据是通过指向 Can Can Can Can R R R R xMsg xMsg xMsg xMsg 结构体变量的指针传递的”。这里的can can can can  r r r r  xmsg xmsg xmsg xmsg是啥意思
作者: abc2de    时间: 2020-6-30 11:51
请教个问题:”接收数据是通过指向 Can Can Can Can R R R R xMsg xMsg xMsg xMsg 结构体变量的指针传递的”,这句话里面的can can can... xmsg xmsg xmsg xmsg 啥意思
作者: 99312312    时间: 2020-9-6 19:31
谢谢分享 感恩付出 谢谢
作者: wawq2003    时间: 2020-11-15 16:01
学习下,正在学习OBD相关的东西
作者: lylmirror    时间: 2021-1-4 18:33
学习下目前正在学习汽车can通信
作者: useridqq    时间: 2021-1-27 10:01
好文章值的学习
作者: 夜空之巅    时间: 2021-4-26 09:25
写的非常好,要是再加一点代码和解释就更好了
作者: jokerjoster    时间: 2021-8-26 13:46
好帖子顶了
作者: zyluglugl    时间: 2021-8-27 09:16
这个写得太好了!下载下来认真学习。
作者: kyle_2021    时间: 2021-8-30 13:46
非常清楚,描述也很生动
作者: 1714730483    时间: 2021-9-22 13:44
讲的很细致!!!感谢大大分享!
作者: 弓长张    时间: 2024-1-19 16:35
正在学习CAN,感谢作者
作者: jxchen    时间: 2024-2-2 09:51
非常好,谢谢楼主
作者: huaishang    时间: 2024-2-25 18:05

写得真好.
好好学习一下
感谢楼主的分享
作者: 内卷1234    时间: 2024-6-19 11:33
如果我要设置只接受指定的诺干个ID应该要怎么设置
作者: tangystt    时间: 2024-6-20 08:48
谢谢分享!收藏





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1