支持记录发送的时间,2 个 3 级深度的接收 FIFO(两个 FIFO 队列,每个队列都可以存储最多 3 个数据项),不支持DMA(直接内存访问,用于高效数据传输的技术,不需要 CPU 的干预) 框架示意图: CAN 控制器1和2 CAN1 是主设备(控制存储访问控制器) CAN2 无法直接访问存储区域(必须支持CAN1 外设时钟) 组件解析 CAN...
一般而言,Rx FIFO都会存在两个,一个是Rx FIFO0,两外一个是Rx FIFO1,这个根据实际情况进行选择。
2 消息 FIFO 满中断 在 CANFD 初始化的时候需要设置 FIFO0/1 的深度,根据设置的深度会决定 FIFO0/...
如果是来自FIFO0的接收中断,则用CAN1_RX0_IRQn中断来处理。如果是来自FIFO1的接收中断,则用CAN1_RX1_IRQn中断来处理。在CAN的初始化配置过程中,用CAN_FilterFIFOAssignment来选择要使用FIFO。 这个fifo是在MX_CAN1_FilterInit函数里定义的,这个函数stm32cubemx不会自动生成,需要手动添加设置,这里 1 使用的CAN_RX...
FxR2的[15-0]位配置过滤器2,FxR2的[31-16]位配置过滤器3。 STM32的CAN有两个FIFO,分别是FIFO0和FIFO1。为了便于区分,下面FIFO0写作FIFO_0,FIFO1写作FIFO_1。 每组过滤器组必须关联且只能关联一个FIFO。复位默认都关联到FIFO_0。 所谓“关联”是指假如收到的报文从某个过滤器通过了,那么该报文会被存到...
STM32 的有两组 CAN 控制器,其中 CAN1 是主设备,框图中的“存储访问控制器”是由 CAN1控制的,CAN2 无法直接访问存储区域,所以使用 CAN2 的时候必须使能 CAN1 外设的时钟。框图中主要包含 CAN 控制内核、发送邮箱、接收 FIFO 以及验收筛选器,下面对框图中的各个部分进行介绍。
⑤接收FIFO 接收FIFO是验收滤波器和主控制器之间的接口,用于存储从CAN总线上接收并通过了过滤的报文,使CPU处理一个报文同时可以接收其他报文。 ⑥位流处理器BSP 位流处理器是在发送缓冲器、RXFIFO和CAN总线之间控制数据流的程序装置,还在CAN总线上执行错误检测、仲裁、填充和错误处理。
Rx Fifo0 Elmt Size:8 bytes data filed Rx Fifo1 Elmts Nbr:0 Rx Buffers Nbr:0 发送区配置: 发送区和接收区差不多,不过多赘述了,我们不使用Events和Buffers发送,直接写0,我们采用FIFO发送不用Queue(队列),选择FIFO mode,Nbr数量根据CAN收发最大带宽数配置,大于等于这个数,Size选择8字节就行,大一点也可...
(1) DBF 调试冻结功能 DBF(Debug freeze) 调试冻结,使用它可设置 CAN 处于工作状态或禁止收发的状态,禁止收发时仍可访问接收 FIFO 中的数据。这两种状态是当 STM32 芯片处于程序调试模式时才使用的,平时使用并不影响。 (2) TTCM 时间触发模式 TTCM(Time triggered communication mode) 时间触发模式,它用于配置 ...
1、CAN数据接收报文首先通过过滤器,需要设置过滤器过滤条件,过滤器0条件为空的话,所有报文都通过过滤器0进入FIFO,其他的过滤器不起作用。(即过滤器的优先级选择,参看下面链接) 2、报文过滤了以后送给FIFO 3、过滤器给哪个FIFO是通过过滤器关联设置的 4、FIFO1接收中断是CAN1_RX1_IRQn , FIFO0接收中断是USB...