[STM32F4] Cube IDE中的CAN初始化错误

[复制链接]
362|10
 楼主| zhouyou99 发表于 2025-7-4 10:10 | 显示全部楼层 |阅读模式
用CubeIDE初始化我的STM32F446RE的两个CAN接口中的任意一个时(通过CubeMX配置),出现了一个舍入误差。
我的配置如下:
  • Prescaler: 5
  • Time Quanta in Bit Segment 1: 6 Times
  • Time Quanta in Bit Segment 2: 2 Time
  • ReSynchronization Jump Width: 1 Time
配置时,软件总是提示"Nominal Bit Time is too short (999ns)",波特率已正确设置为精确的1M波特率。

公羊子丹 发表于 2025-7-31 13:27 | 显示全部楼层
你这个提示“Nominal Bit Time is too short”一般是时钟频率和时序配置导致的,检查一下CAN的时钟源设置。
周半梅 发表于 2025-7-31 13:28 | 显示全部楼层
Prescaler设为5,Time Quanta总数(6+2+1=9)可能和时钟频率配合不太合适,试着调整一下。
帛灿灿 发表于 2025-7-31 13:28 | 显示全部楼层
STM32F4的CAN时钟一般来自APB1,确认一下APB1的时钟频率是多少。
童雨竹 发表于 2025-7-31 13:29 | 显示全部楼层
你可以用在线CAN时序计算器,输入时钟和波特率,看推荐的参数是多少,参考调整。
万图 发表于 2025-7-31 13:30 | 显示全部楼层
有时候CubeMX自动生成的参数不一定完全匹配硬件实际时钟,手动微调试试。
Wordsworth 发表于 2025-7-31 13:30 | 显示全部楼层
Jitter和重新同步跳宽(Resynchronization Jump Width)设为1没问题,但Time Segment1和2比例要合理。
Bblythe 发表于 2025-7-31 13:31 | 显示全部楼层
建议用标准波特率参数,先把Prescaler调成整数倍,然后调整段长度,尽量避免非整数时间。
Pulitzer 发表于 2025-7-31 13:32 | 显示全部楼层
另外确认一下CAN引脚配置和滤波器是否设置正确,虽然不影响时序但能排除其他问题。
Uriah 发表于 2025-7-31 13:32 | 显示全部楼层
这种时序错误多半不会影响实际通信,实测波特率对了就可以了,但最好能消除提示。
Clyde011 发表于 2025-7-31 13:33 | 显示全部楼层
也可以升级CubeIDE和CubeMX版本,有时新版修复了这类时序计算的误判。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

54

主题

54

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部