一、配置
CANFD 如果要配置成 DMA 传输,只有 RX FIFO 才能启用 DMA 传输,其余发送和接收都不能启用 DMA 传输。,这里以 CAN0 为例。说明配置过程(时钟和引脚除外)
如图,在 DMA 模块里面,将 DMA 的传输回调指向 CAN 里面的 DMA传输完成处理。
如图,这里是 MCAL 里面的 Rm 模块,由于这里仅使用 DMAMUX,所以在相应位置做出选择
这里需要注意 DMA 里面配置的是使用那个通道,这里需要对应相应的通道
注意:由于这里使用的是 MCAL 的代码,所以注意参数使用与以下配置有关
配置 IntCtrl_Ip 模块,注意 CAN 的中断和对应 DMA 通道中断都要配置,这里如果没进行中断使能的需要在代码里面实现中断使能
这里 RX 需要配置为 FIFO,DMA 通道使用以上配置的 DMA 通道
需要注意的是:理论上 Enhanced FIFO 不占用 MB 的空间,因为其是 2000h~204Ch,而MB 的空间是 80h~67Fh。
对于 watermark e而言,参考 ERFCR->ERFWM,该设置表示 RX FIFO 接收到大于多少个就会触发中断
其过滤 ID 和掩码的设置在 ERFFELx 寄存器中完成,与全局掩码或单体掩码类型等无关,该设置的大小种类可以查看 ERFCR->NEXIF 和 ERFCR->NFE。
对于过滤元素,如果1全是扩展ID,那么最多配置 64 个过滤元素;如果全是标准 ID,那么最多配置 128 个过滤元素;如果扩展 ID 和标准ID都有,那么标准ID 过滤元素数量是 2 的倍数,扩展 ID 过滤元素数量是 1 的倍数,2个标准ID 过滤元素占据大小相当于1 个扩展 ID 过滤元素,总的数量不能超过上述数量
过滤规则如下章(寄存器 ERFFELx)
该设置一个过滤设置 和 掩码设置,结构如下:
31 30
29 28
27
26 16
15 12
11
10 0
FSCH=b00
保留
RTR filter
ID filter
保留
RTR mask
ID mask
该设置表示 ID 在以下范围内即可接收:
ID filter1≤ID≤ID filter2;(接收 RTR=RTR filter) 或者 (RTR mask =0)
31 30
29 28
27
26 16
15 12
11
10 0
FSCH=b01
保留
RTR filter
ID filter2
保留
RTR mask
ID filter1
该设置表示 ID 在以下范围内即可接收:
ID =ID filter1 或者 ID filter2;接收 RTR=RTR filter1 或者 RTR filter2
31 30
29 28
27
26 16
15 12
11
10 0
FSCH=b10
保留
RTR filter2
ID filter2
保留
RTR filter1
ID filter1
该设置一个过滤设置 和 掩码设置,结构如下:
31 30
29
28 0
FSCH=b00
RTR filter
ID filter
保留
RTR mask
ID mask
该设置表示 ID 在以下范围内即可接收:
ID filter1≤ID≤ID filter2;(接收 RTR=RTR filter1) 或者 (RTR mask =0)
31 30
29
28 0
FSCH=b01
RTR filter
ID filter2
保留
RTR mask
ID filter1
该设置表示 ID 在以下范围内即可接收:
ID =ID filter1 或者 ID filter2;接收 RTR=RTR filter1 或者 RTR filter2
31 30
29
28 0
FSCH=b10
RTR filter2
ID filter2
保留
RTR filter1
ID filter1
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/jszy-jszl/66769.html