您好,看了你的【FDCAN】STM32G0B1+FDCAN+HAL库调试记录
链接:https://blog.csdn.net/qq_37449342/article/details/119170811?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0-119170811-blog-127026990.235^v32^pc_relevant_yljh&spm=1001.2101.3001.4242.1&utm_relevant_index=3
经调试发现以下问题:
Error 报了0x00000200 ,HAL_FDCAN_ERROR_FIFO_FULL
发送 FIFO 中存储的消息是先 从【获取索引】 TXFQS[TFGI] (某个寄存器标志位)引用的消息开始发送的。每次发送后,获取索引会循环递增,直至发送 FIFO 为空。如下图所示,先发【获取索引】对应的元素。发送 FIFO 可按消息写入发送 FIFO 的顺序发送来自不同发送缓冲区但消息 ID 相同的消息。前面专门发送缓存区,是按照缓冲区编号顺序一个个发,从小发到到,是不管ID的。而发送FIFO发送的时候,是允许把不同缓存区的相同ID的消息发出。
如果要存入新元素,那就存入【放入索引】对应的位置,然后【放入索引】就会递增,指向新的空白位置。如果【放入索引】到达了【获取索引】的位置,那证明发送FIFO已经满了。HAL库是通过下列这条函数存入发送FIFO的。
如果有一条消息添加到发送 FIFO,则会通过向与发送 FIFO 【放入索引】引用的发送缓冲区相关的 TXBAR 位写入“1”来请求发送消息。
如果有多条 (n) 消息添加到发送 FIFO,则会写入以【放入索引】开始的 n 个连续发送缓冲区中。 随后会通过 TXBAR 请求发送。【放入索引】随后会循环递增 n。请求的发送缓冲区数不应超过 发送 FIFO 空闲级别指示的空闲发送缓冲区数。