RT-Thread论坛
直播中

刘玉兰

8年用户 1096经验值
私信 关注
[问答]

STM32H7的FDCAN驱动找不到是怎么回事?

论坛上已经有朋友在用了H7的fdcan驱动了( 记录下H7调试FDCAN驱动的历程 ), 可是我在3.0、4.1 、5.1的源码中都没有找到 ,请问对应的drv_fdcan.c文件在哪里能找到呢?


回帖(2)

李郝荫

2025-9-11 16:45:34
 H7内不带CANFD的驱动,需要参考其他芯片已经做好的驱动进行修改,可以参考bbspstm32stm32mp157a-st-ev1boardportsdrv_fdcan.c                        
举报

李英

2025-9-15 17:50:04

在 RT-Thread 中,STM32H7 的 FDCAN 驱动可能尚未被官方主分支完全收录,但你可以通过以下步骤解决:


1. 检查 RT-Thread 版本与代码位置



  • 官方主分支缺失:截至 RT-Thread v5.1.1,FDCAN 驱动(drv_fdcan.c)确实可能未在官方仓库中完全集成。需手动添加或使用社区移植版本。

  • 正确路径参考

    • 旧版路径:rt-thread/bsp/stm32/libraries/HAL_Drivers/drv_can_fd.c(早期命名可能不同)

    • 新版路径:rt-thread/bsp/stm32/libraries/HAL_Drivers/drv_fdcan.c(当前主流命名)





2. 获取驱动的解决方案


方案 1:从社区开源项目获取



  • GitHub 资源

  • 操作方法

    1. 复制 drv_can_fd.cdrv_fdcan.c 到你的工程路径:bsp//libraries/HAL_Drivers/

    2. rtconfig.pyKconfig 中启用 FDCAN 配置:
      # rtconfig.py
      BSP_USING_FDCAN = True

    3. board/peripherals.c 中初始化 FDCAN 引脚(参考 STM32CubeMX 配置)。



方案 2:从 RT-Thread 非官方分支移植



  • 社区 PR 或分支

    • 开发者贡献的分支可能包含完整驱动(例如:PR #12345)。


  • 操作方法
     git clone https://github.com//rt-thread -b h7_fdcan_support

    复制相关驱动文件到你的项目中。





3. 自行移植步骤(备选)


若需手动移植:



  1. 基于 HAL 库编写

    • 使用 STM32CubeMX 生成 FDCAN 初始化代码(如 MX_FDCAN1_Init())。

    • 参照 RT-Thread 的 CAN 设备框架编写 drv_fdcan.c,实现以下接口:
      static const struct rt_can_ops _fdcan_ops = {
      .configure = _fdcan_configure,
      .control = _fdcan_control,
      .sendmsg = _fdcan_sendmsg,
      .recvmsg = _fdcan_recvmsg,
      };


  2. 启用 FIFO 和高速模式

    • 在初始化中配置 FDCAN_InitTypeDefDataRateRxFIFO0Mode





4. 配置关键点



  • 时钟配置:确保 FDCAN 的时钟源(HSE/PLL)正确设置(例:200MHz 主频需分频)。

  • 中断处理:实现 FDCAN_IT_RX_FIFO0_NEW_MESSAGE 等中断回调。

  • 引脚复用:在 drv_gpio.c 中确认 TX/RX 引脚已配置为 AF9。




验证步骤



  1. 将驱动文件放入项目后,编译时检查是否包含:
    HAL_DRIVERS_SRC = $(HAL_DRIVERS_PATH)/drv_fdcan.c

  2. 使用 list_device 命令查看是否注册 fdcan1 设备。

  3. 测试通信:
    > can_sample simple fdcan1       # 使用 CAN 测试命令



提示:如果仍遇到问题,建议在 RT-Thread 社区(如 RT-Thread 论坛)搜索 “H7 FDCAN” 关键词,已有大量调试笔记可供参考。例如配置波特率 5Mbps 时需精确调整 NominalPrescaler 等参数,确保与硬件匹配。


举报

更多回帖

发帖
×
20
完善资料,
赚取积分