[STM32F0] 042f6p6 can bus

[复制链接]
538|10
chuandaoxy 发表于 2025-11-30 13:23 | 显示全部楼层 |阅读模式
硬件查了没有问题,软件移植的072发送是好的,管脚也remap了,还是发送不出来,我的boot0接地没有影响吧
其他代码是可以运行的,那位做过分型一下,基于hal的code
公羊子丹 发表于 2025-12-7 08:03 | 显示全部楼层
我之前也遇到过 F0 的 CAN 发送问题,最后发现是 HAL 初始化顺序没对,特别是 GPIO remap 和 CAN 时钟必须先配置,否则发送一直不成功。
周半梅 发表于 2025-12-7 08:04 | 显示全部楼层
你检查过 CAN 的滤波器配置吗?F0 默认滤波器可能不匹配消息 ID,导致发送看起来没反应,其实是被自己 MCU 屏蔽了。
帛灿灿 发表于 2025-12-7 08:05 | 显示全部楼层
我怀疑 boot0 接地一般没问题,但如果你在调试过程中偶尔拉高过,可能触发了系统内置 bootloader,需要重新复位才能正常发送。
童雨竹 发表于 2025-12-7 08:06 | 显示全部楼层
顺便提醒一下,F0 系列的 CAN 收发需要上拉电阻,如果外设板没加或者不匹配,也会导致发送失败,这点容易被忽略。
万图 发表于 2025-12-7 08:07 | 显示全部楼层
我自己做过基于 HAL 的分型工程,发现如果 CubeMX 生成的 CAN Init 没选上正常模式而选了 Loopback,发送是不会出去的,要特别注意模式选择。
Wordsworth 发表于 2025-12-7 08:08 | 显示全部楼层
你可以在发送前读取 CAN 状态寄存器,看 TX FIFO 有没有占满或者报错标志,有时候看不到报错,但状态寄存器会告诉你为什么没发送。
Bblythe 发表于 2025-12-7 08:09 | 显示全部楼层
有时候延迟初始化也会影响,比如 HAL_CAN_Start() 必须在所有 GPIO 和时钟初始化完成后调用,否则发送函数不会成功。
Pulitzer 发表于 2025-12-7 08:10 | 显示全部楼层
我建议先用简单示例测试 CAN 发送,先不考虑复杂 bootloader 或 remap,确认能发送后再集成到你现有代码,这样排查更快。
Uriah 发表于 2025-12-7 08:10 | 显示全部楼层
顺带说一句,如果你用的是多段分型或者 CubeMX 自动生成的代码,检查下 HAL_CAN_AddTxMessage() 的参数,ID 格式或 DLC 不对也会导致发送失败。
Clyde011 发表于 2025-12-7 08:11 | 显示全部楼层
最后一个小技巧:用示波器或者 CAN analyzer 看一下实际总线波形,有时候软件逻辑看着正常,但物理层没信号才是真问题根源。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

860

主题

1051

帖子

4

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