S32K144入门笔记(二十四):FlexCAN传输、接收简述
文章目录
- 1. 传输过程简述
- 2. 仲裁过程简述
-
- 2.1 本地优先级禁用
- 2.2 本地优先级使能
- 3 接收过程简述
1. 传输过程简述
当传输一个报文帧时,CPU必须准备一个邮箱并执行以下程序:
- 检查相关的中断位是否置位并且清除
- 如果邮箱处于激活状态,则需要使用打断请求以打断传输
- 通过轮询相关的标志位寄存器等待相关标志位有效或者在使能相关中断时判断中断请求
- 判断传输是否被打断或传输完成
- 清除相关中断标志位
- 写报文标识符寄存器
- 写负载数据
- 配置控制与状态的相关信息
2. 仲裁过程简述
仲裁过程会扫描邮箱,寻找在下一个要发送消息的 Tx 邮箱。这个邮箱被称为仲裁获胜者。扫描从编号最低的邮箱开始,并向编号更高的邮箱进行。
如果仲裁过程在 CAN 总线到达间歇字段的第一位之前未能评估所有邮箱,则临时仲裁获胜者将无效,并且 FlexCAN 在下一个机会中将不会竞争 CAN 总线。
仲裁过程在扫描结束时根据 CTRL1[LBUF] 和 MCR[LPRIOEN] 的设置从活动的 Tx 邮箱中选择获胜者。
如果 CTRL1[LBUF] 被断言,找到的第一个(编号最低)活动 Tx 邮箱即为仲裁获胜者。当 CTRL1[LBUF] 被断言时,MCR[LPRIOEN] 不起作用。
如果 CTRL1[LBUF] 被否定,那么仲裁过程会搜索具有最高优先级的活动 Tx 邮箱,这意味着当多个外部节点同时竞争 CAN 总线时,该邮箱的帧将有更高的概率在 CAN 总线上赢得仲裁。
如果有多个报文邮箱优先级相同,那么编号最细的邮箱仲裁获胜。
仲裁值的组成取决于 MCR[LPRIOEN] 的设置。
2.1 本地优先级禁用
如果 MCR[LPRIOEN]