K65 Flex_CAN 匹配过程

K65 Flex_CAN 匹配过程匹配过程 匹配过程扫描 MB 内存以寻找具有和从 CAN 总线上接收到帧相同 ID 的接收 MBs 如果 FIFO 被使能 可以在邮箱和 FIFO 过滤器中选择扫描的优先级 在任何情况下 匹配将从具有最小 号的报文缓冲区向最大号的报文缓冲区进行 如果在第一个结构中没有找到匹配的 那么随后 将扫描下一个结构 如果 FIFO 队列满

大家好,我是讯享网,很高兴认识大家。

匹配过程

  匹配过程扫描MB 内存以寻找具有和从CAN 总线上接收到帧相同ID 的接收MBs。如果FIFO
被使能,可以在邮箱和FIFO 过滤器中选择扫描的优先级。在任何情况下,匹配将从具有最小
号的报文缓冲区向最大号的报文缓冲区进行。如果在第一个结构中没有找到匹配的,那么随后
将扫描下一个结构。如果FIFO 队列满,那么匹配算法会在FIFO 区域之外选择匹配的MB。
如果正在接受帧,那么它将会被存储在一个隐藏的附加MB,该MB 称之为接收串行报文缓
冲区(Rx SMB)。
匹配的开始点取决于以下条件:
1.如果接收到的帧为远程帧,那么开始点位帧的CRC 字段;
2.如果接受到的帧为数据帧并且其DLC 字段的值为0,那么开始点为帧的CRC 字段;
3.如果接受到的帧为数据帧并且其DLC 字段的值不为0,那么开始点为帧的DATA 字段;

  匹配过程扫描所有的接收队列FIFO(如果开启)以及激活的接收邮箱(CODE 字段为
EMPTY,FULL,OVERRUN 或者RANSWER)来寻找从CAN 总线上接收到的SMB 的匹配元素的一次成功
比较。SMB 和邮箱具有相同的结构。接受结构(接受队列FIFO 或者邮箱)与具有一次成功比
较的匹配元素称之为“匹配结构”。在扫描所有这些匹配结构的最后将会选择出匹配成功者并
且这取决于前面所描述的条件。参考下表。 


讯享网

当满足以下条件中的任何一个时,接受结构为free-to-receive:
1.邮箱的CODE 字段为EMPTY;
2.邮箱的CODE 字段是FULL 或者OVERRUN,并且该邮箱已经被处理过(C/S 字已经被CPU 读取
过并且已经被解锁);
3.邮箱的CODE 字段为FULL 或者OVERRUN,并且该邮箱已经失活;
4.接受队列不满。

一、
对于邮箱匹配优胜者受MCR[IRMQ]为的影响。如果该位为0那么匹配优胜者为第一个被
匹配的邮箱而不管它是不是free-to-receive
如果该位置位,那么匹配优胜者通过以下优先
级来选择:

1.第一个匹配邮箱的free-to-receive;
 2.最后一个匹配邮箱的非free-to-receive;

 如果 non-safe Mailbox inactivation(参见“ Mailbox inactivation“)发生在匹配过程中,并且这个失活的邮箱
是此时匹配邮箱那么这个临时匹配邮箱将会变为无效。匹配扫描不会停止也不会重新启动,
它将继续进行。当前的匹配过程正常进行,因此可能会丢失一个报文。

例如假设禁止FIFO,MCR[IRMQ ]置1 MB2和MB5具有相同的ID,FlexCAN 模块将以该ID 开始接收报文。
第一个报文到达,匹配算法会找到第一个与ID值相匹配的MB2,MB2 的code 为EMPTY, MB2接收报文.
 当第二个报文到达时,匹配算法会又找到MB2,但是它不为“free-to-receive”,因此它将继续寻找并且找到MB5
 然后将报文存储在MB5

 第三个相同ID报文到达时 匹配算法会发现已经没有可匹配的MB(free-to-receive),它将覆盖MB5
 然后设置该MB5 的CODE 字段为OVERRUN。

二、
请参阅Rx单个屏蔽寄存器(CAN_RXIMRx)的说明。
在匹配算法期间,如果断言掩码位,则比较相应的ID位。
如果掩码位被否定,则相应的ID位是“不比较”。
请注意,单个屏蔽寄存器在RAM中实现,因此它们不会在复位后初始化,此外,它们只能在模块处于冻结模式时进行编程;           否则,它们被硬件阻止。

三、                                                                                                                                                                                       FlexCAN还支持备用屏蔽方案,仅具有四个屏蔽寄存器(CAN_RXMGMASK,CAN_RX14MASK和CAN_RX15MASK),         以便与传统应用程序向后兼容。仅当CAN_MCR寄存器中的IRMQ位被取反时,将启用此备用屏蔽方案

  四、                                                                                                                                                                                               通过CTRL2[MRP]位选择扫描的优先级为邮箱优先或者接收队列FIFO 优先

(1)如果扫描优先级是接收队列FIFO优先:
1.如果接收队列FIFO 是匹配结构并且是free-to-receive,那么接收队列FIFO 就是匹配
优胜者而不再扫描邮箱;
2.否则(接收队列FIFO 不是匹配结构或者不是free-to-receive),则匹配优胜者是在上
面所描述的邮箱中找到的。

(2)如果扫描优先级是邮箱优先:
1.如果匹配邮箱的free-to-receive 被找到,那么它就是匹配优胜者而不再扫描接收队列FIFO;
2.如果没有找到匹配的邮箱,那么匹配优胜者将会在接收队列FIFO 中寻找。
如果上面的两个情况都不满足并且没有找到一个匹配邮箱的free-to-receive,那么匹配优胜者将由MCR[IRMQ]位来决定:
如果MCR[IRMQ]位为0,那么匹配优胜者为第一个匹配的邮箱;
如果MCR[IRMQ]位为1,那么如果有一个free-to-receive 匹配结构,匹配优胜者为接收
队列FIFO,不然匹配胜利者为最后一个非free-to-receive 匹配邮箱。

 

小讯
上一篇 2025-03-23 15:33
下一篇 2025-03-11 18:29

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/15888.html