在FlexCAN启用RxFIFO以后,独立掩码器可以作用于RxFIFO的过滤表,如下图参考手册中所说:
但是我不明白独立掩码器是如何和过滤表中的过滤元素一一对应起来的。就比如说,一个A类型的32位过滤元素,在我启用独立掩码器以后,我怎么知道哪个独立掩码器对应于这个过滤元素的?
Solved! Go to Solution.
Hi @TheSix ,
当设置MCR[RFEN] = 1时,启用接收FIFO,接收FIFO共6级深度,会占用邮箱0到5的内存区域。
如果RXFIFO enable ,首先MB[0:5] 用来作为FIFO 缓存, 但是MB[6]之后的MB 可以用来定义 filter, 具体占用几个MB, 是通过CTRL2[RFFN] 来定义的。每个MB空间可以定义4个filter。
1. 那最少的定义(RFFN=0)MB6, 7 会被用做filter 的设置。 MB 6-7的空间能容纳8个filter, 这样RXIMR[0…7] 也有8个mask 与之对应, 所以就用不到 Rx FIFO global mask 了。
2. 如果 RFFN = 1, 再加两个MB空间用作filter,即一共是6-9,那么会有16个filter, 但是 0-9 只有10个RXIMR 与之对应, 这样还有6个filter (10…15)没有mask 与其对应,那么这时RX FIFO global mask就发挥作用,就跟这6个filter 合作,过滤收到的ID。
Best regards,
Gavin
Hi @TheSix ,
当设置MCR[RFEN] = 1时,启用接收FIFO,接收FIFO共6级深度,会占用邮箱0到5的内存区域。
如果RXFIFO enable ,首先MB[0:5] 用来作为FIFO 缓存, 但是MB[6]之后的MB 可以用来定义 filter, 具体占用几个MB, 是通过CTRL2[RFFN] 来定义的。每个MB空间可以定义4个filter。
1. 那最少的定义(RFFN=0)MB6, 7 会被用做filter 的设置。 MB 6-7的空间能容纳8个filter, 这样RXIMR[0…7] 也有8个mask 与之对应, 所以就用不到 Rx FIFO global mask 了。
2. 如果 RFFN = 1, 再加两个MB空间用作filter,即一共是6-9,那么会有16个filter, 但是 0-9 只有10个RXIMR 与之对应, 这样还有6个filter (10…15)没有mask 与其对应,那么这时RX FIFO global mask就发挥作用,就跟这6个filter 合作,过滤收到的ID。
Best regards,
Gavin
感谢你的回复,我明白了。