CAN总线学习(2018-5.31)

STM32F103中集成了一个CAN总线控制器,所以我们进行CAN总线通信的时候只需要将CAN接口的H、L接口接到一个Transceiver(转换器),然后经过转换器就可以连接到其他CAN设备了。


CAN的优势特点:
1.可以连接的CAN设备不限数量,且每一个设备都可以做为主设备/从设备,即当其做为主设备时都可以主动发送数据。
2.没有地址的概念,可以通过标识符来识别设备。即使增加和减少CAN设备也不会影响通信。
3.速度快,距离远。最高1Mbps(距离<40M),最远可达10KM(速率<5Kbps)
4.所有单元都可以检测错误(错误检测功能),检测出错误的单元会立即同时通知其他所有单元(错误通知功能)
5.故障封闭功能。CAN可以判断出错误的类型是总线上暂时的数据错误(如外部噪声等)还是持续的数据错误(如单元内部故障、驱动器故障、短线等)。由此功能,当总线上发生持续的数据错误时,可将引起故障的单元从总线上隔离出去。
6.所有CAN总线上的设备波特率都是相同的,所以设备接入前要知道总线上的波特率是多少
7.CAN总线上发送数据时,一次最多只能发送8个字节的数据,这是由CAN协议规定的。
多于8个的需要第二次再发送,或者做一个上层的连续多数据发送的函数。

-------------------------------------------------------------------------------------------
CAN补充:
1.对于CAN总线发送的数据我们统称为“报文”,报文中包含了“标识符(ID)”用于各个设备对主设备发送的数据进行识别和判断,即判断属于自己的标识符的数,如果吻合了,就接收发送过来的数据。否则就不接收。另外标识符中又包括”标准格式(11个位标识符)“和”扩展格式(29个位标识符)“两种。

                             

说明:图片均来自网易云课堂“杨桃电子”的“STM32入门100步”,感谢图片提供者提供的图片资源。

2.对于CAN邮箱的理解:
CAN总线有接收邮箱和发送邮箱:
”发送邮箱“是用于CAN总线数据发送的,总共有3个,并且存在优先级关系。优先级越高表示其里面的数据会被优先发送。数据在发送前都会被送到优先级最高且空闲的发送邮箱,然后依次发送。最后说明一点:“发送邮箱有3个,且每个邮箱只能装一个报文”。
”接收邮箱“是用于CAN总线数据接收用的,在接收数据端会有一个过滤器处于”接收邮箱“的前面,过滤器使用于删选”标识符“的,只有标识符符合的报文才会被放入到”接收邮箱“当中。注意:”接收邮箱不同于发送邮箱,接收邮箱只有2(FIFO0、FIFO1)个,但是每一个有三层,每层都可以存放一个报文,即每一个接收邮箱可以接收三个报文。但读取时只能读到最先收到的报文,等这个读完之后,才能读下一个报文”。

                   

                   

------------------------------------------------------------------------------------------
对过滤器的补充:
---》过滤器模式说明:
因为过滤器是用来删选标识符的,而标识符有标准模式(11位)和扩展模式(29位)两种,所以过滤器同样有两种模式。一种是“列表模式”,还有一种是“屏蔽模式”。
->“列表模式”中的过滤器会将设置好的所需的ID与报文中的标识符进行比较,只有每个位数据都相同时才视为匹配。因其这样的特性,所以只有唯一的标识符能成功进入接收邮箱。
->“屏蔽模式”的过滤器有两个值,“ID值” & “屏蔽值“。通过这两个值的配合与报文中的标识符进行比较从而删选出想要的报文。那么他们是如何配合的呢?其实屏蔽值就是对ID值进行限定的,即屏蔽值的为”1“的位表示对应ID值上的这个位的值报文中的标识符必须与其完全相同,即视为”关心位“。反之为”0“就是”不关心“位,标识符中对应的位可以相同也可以不相同。由于这样的特性,这种模式下所能匹配的标识符就不止唯一的一个了,就可以是一组标识符,这是与列表模式最大的不同的地方。这样说起来还是不够直观,建议去看看,图解,在我的资料中有。

                            

---》过滤器优先级问题:
1.位宽位32位的过滤器,优先级高于位宽为16位的过滤器。它会优先过滤。
2.对于位宽相同的过滤器,列表模式高于屏蔽模式。
3.位宽和模式都相同的过滤器,优先级由过滤器号决定,小的号优先级高
---》过滤器号
STM32F103系列有14组过滤器。具体看图解

                     

问题:
一.关于过滤器组号,不是很理解组号的编配。
二.为什么有14组过滤器组?

Fist day
原文地址:https://www.cnblogs.com/NULL-ROOT/p/9120195.html