硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2206|回复: 9
收起左侧

[CAN/FDCAN] FDCAN 应用上,选择队列、FIFO、专用缓冲,有什么依据吗?

[复制链接]

20

主题

275

回帖

335

积分

高级会员

积分
335
发表于 2023-8-21 16:32:13 | 显示全部楼层 |阅读模式
FDCAN 应用上,选择队列、FIFO、专用缓冲,有什么依据吗?
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
121126
QQ
发表于 2023-8-22 08:55:47 | 显示全部楼层
应用场景不同,选择合适的方式。
回复

使用道具 举报

20

主题

275

回帖

335

积分

高级会员

积分
335
 楼主| 发表于 2023-8-23 09:35:33 | 显示全部楼层
eric2013 发表于 2023-8-22 08:55
应用场景不同,选择合适的方式。

现在只知道为了省事避免索引的话,不选用专用buffer。不关注发送优先级的话,用TX FIFO。
回复

使用道具 举报

20

主题

275

回帖

335

积分

高级会员

积分
335
 楼主| 发表于 2025-12-10 11:47:27 来自手机 | 显示全部楼层
yunqi 发表于 2023-8-23 09:35
现在只知道为了省事避免索引的话,不选用专用buffer。不关注发送优先级的话,用TX FIFO。

专用buffer适合固定ID,配合滤波器使用,高速模式下他的优先级比FIFO和队列快
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
121126
QQ
发表于 2025-12-11 09:33:35 | 显示全部楼层
yunqi 发表于 2025-12-10 11:47
专用buffer适合固定ID,配合滤波器使用,高速模式下他的优先级比FIFO和队列快

从用户角度来说主要还是应用方式差异,一个类似RTOS的事件标志,一个类似消息队列,且还可以配置消息事件优先级。
回复

使用道具 举报

20

主题

275

回帖

335

积分

高级会员

积分
335
 楼主| 发表于 2025-12-13 07:09:00 来自手机 | 显示全部楼层
eric2013 发表于 2025-12-11 09:33
从用户角度来说主要还是应用方式差异,一个类似RTOS的事件标志,一个类似消息队列,且还可以配置消息事件 ...

是这回事
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2025-12-30 21:28:56 | 显示全部楼层
eric2013 发表于 2025-12-11 09:33
从用户角度来说主要还是应用方式差异,一个类似RTOS的事件标志,一个类似消息队列,且还可以配置消息事件 ...

Queue模式可以自动按照队列中CAN优先级发送,不过我还没有搞懂Queue是否也使用的是FIFO相关的处理
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
121126
QQ
发表于 2025-12-31 11:07:16 | 显示全部楼层
CaFeZn 发表于 2025-12-30 21:28
Queue模式可以自动按照队列中CAN优先级发送,不过我还没有搞懂Queue是否也使用的是FIFO相关的处理
主要是多了个消息优先级设置。其它一样的。

回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2026-2-5 15:48:04 | 显示全部楼层
eric2013 发表于 2025-12-31 11:07
主要是多了个消息优先级设置。其它一样的。

寄存器上好像有些不同,我之前遇到这样一个问题
FIFO可以通过TFFL判断非空
而TFFL不能用来做Queue的非空判断
2a7d90fc5cf1796c2f701c1a2b32ec0a.png

发送只管
HAL_FDCAN_AddMessageToTxFifoQ
往里塞就是了
FIFO和QUEUE都通用
但是不能用 HAL_FDCAN_GetTxFifoFreeLevel(读TFFL) 来判断QUEUE的缓冲区非空

回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
121126
QQ
发表于 2026-2-6 09:27:06 | 显示全部楼层
CaFeZn 发表于 2026-2-5 15:48
寄存器上好像有些不同,我之前遇到这样一个问题
FIFO可以通过TFFL判断非空
而TFFL不能用来做Queue的非 ...

谢谢分享。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2026-2-24 15:24 , Processed in 0.077651 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表