过滤器与邮箱(四)"/>
CAN总线的过滤器与邮箱(四)
系列文章目录
文章目录
- 系列文章目录
- 前言
- 一、过滤器的作用
- 二、可变的位宽
- 三、屏蔽位模式
- 四、标识符列表模式
- 五、过滤器组位宽和模式的设置
- 六、过滤器优先级规则
- 七、邮箱
- 1.发送邮箱
- 2.接收邮箱
前言
STM32提供两种过滤器模式供用户选择,屏蔽位模式(标识符屏蔽位模式)和标识符列表模式。
一、过滤器的作用
过滤器在接收时使用,在发送时不需配置过滤器!过滤器会根据标识符而决定节点要不要发送者发过来的报文。通俗一点:是我想要的,我就要;不是我想要的,我就不要。
二、可变的位宽
三、屏蔽位模式
四、标识符列表模式
五、过滤器组位宽和模式的设置
过滤器组可以通过相应的CAN_FMR寄存器配置。在配置一个过滤器组前,必须通过清除CAN_FAR寄存器的FACT位,把它设置为禁用状态。通过设置CAN_FS1R的相应FSCx位,可控制器局域网(bxCAN)
通过CAN_FMR的FBMx位,可以配置对应的屏蔽/标识符寄存器的标识符列表模式或屏蔽位模式
为了过滤出一组标识符,应该设置过滤器组工作在屏蔽位模式。
为了过滤出一个标识符,应该设置过滤器组工作在标识符列表模式
。
应用程序不用的过滤器组,应该保持在禁用状态。
过滤器组中的每个过滤器,都被编号为(叫做过滤器号)从0开始,到某个最大数值-取决于过滤器组的模式和位宽的设置
一旦收到的报文被存入FIFO,就可被应用程序访问。通常情况下,报文中的数据被拷贝到
SRAM中;为了把数据拷贝到合适的位置,应用程序需要根据报文的标识符来辨别不同的数
据。 bxCAN提供了过滤器匹配序号,以简化这一辨别过程。
六、过滤器优先级规则
根据过滤器的不同配置,有可能一个报文标识符能通过多个过滤器的过滤;在这种情况下,存放在接收邮箱中的过滤器匹配序号,根据下列优先级规则来确定:
- 位宽为32位的过滤器,优先级高于位宽为16位的过滤器
- 对于位宽相同的过滤器,标识符列表模式的优先级高于屏蔽位模式
- 位宽和模式都相同的过滤器,优先级由过滤器号决定,过滤器号小的优先级高
七、邮箱
邮箱是软件和硬件之间传递报文的接口。邮箱包含了所有跟报文有关的信息:标识符、数据、控制、状态和时间戳信息。
1.发送邮箱
软件需要在一个空的发送邮箱中,把待发送报文的各种信息设置好(然后再发出发送的请求)。发送的状态可通过查询CAN_TSR寄存器获知。
2.接收邮箱
在接收到一个报文后,软件就可以访问接收FIFO的输出邮箱来读取它。一旦软件处理了报文(如把它读出来),软件就应该对CAN_RFxR寄存器的RFOM位进行置’1’,来释放该报文,以便为后控制器局域网(bxCAN)
面收到的报文留出存储空间。过滤器匹配序号存放在CAN_RDTxR寄存器的FMI域中。 16位的时间戳存放在CAN_RDTxR寄存器的TIME[15:0]域中。
更多推荐
CAN总线的过滤器与邮箱(四)
发布评论