Conversation
|
👋 感谢您对 RT-Thread 的贡献!Thank you for your contribution to RT-Thread! 为确保代码符合 RT-Thread 的编码规范,请在你的仓库中执行以下步骤运行代码格式化工作流(如果格式化CI运行失败)。 🛠 操作步骤 | Steps
完成后,提交将自动更新至 如有问题欢迎联系我们,再次感谢您的贡献!💐 |
📌 Code Review Assignment🏷️ Tag: bsp_stm32Reviewers: Liang1795 hamburger-os wdfk-prog Changed Files (Click to expand)
📊 Current Review Status (Last Updated: 2026-03-18 21:12 CST)
📝 Review Instructions
|
|
@wdfk-prog 帮忙看看谢谢~ |
|
| return -RT_ERROR; | ||
| } | ||
| /* Transceiver Delay Compensation */ | ||
| #ifdef RT_CAN_USING_CANFD |
There was a problem hiding this comment.
只有使用canfd的时候才需要配置TDC,但h7上只有canfd,没有普通can,所以如果要在h7上用canfd用来当作普通can使用,不需要配置宏内的代码。
| #ifdef RT_CAN_USING_CANFD | ||
| if (cfg->enable_canfd) | ||
| { | ||
| HAL_FDCAN_ConfigTxDelayCompensation(&pdrv_can->fdcanHandle, 0x0C, 0x00); |
拉取/合并请求描述:(PR description)
[
为什么提交这份PR (why to submit this PR)
我在使用stm32H7的fdcan驱动时遇到了无法发送与接收的问题,并且发现没有ISO-CANFD常用的5M速率
你的解决方案是什么 (what is your solution)
1.解决了发送数据时没有对是否进行数据位加速(BRS)进行判断的问题,新增了一个if判断,判断上层传来的pmsg->brs,如果是1,则把TxHeader.BitRateSwitch置为FDCAN_BRS_ON;如果是0,则置为FDCAN_BRS_OFF
2.解决了在数据接收时对数据位数判断错误,原来是直接把RxHeader.DataLength,这样只能传入0-15这几个数,所以需要做对应的转换,比如把15转换成64,代表实际上有64位数据。在开头新增了字节数查询表的函数
4.新增发送延迟补偿配置,防止高速率(>2M)下传输出错
请提供验证的bsp和config (provide the config and bsp)
BSP:
\rt-thread\bsp\stm32\libraries\HAL_Drivers\drivers\drv_fdcan.c
.config:
https://gitee.com/User_lwh/fes/tree/master/04_Software/04_STM32H7B0/project
]
当前拉取/合并请求的状态 Intent for your PR
必须选择一项 Choose one (Mandatory):
代码质量 Code Quality:
我在这个拉取/合并请求中已经考虑了 As part of this pull request, I've considered the following:
#if 0代码,不包含已经被注释了的代码 All redundant code is removed and cleaned up