ST意法半导体
直播中

乔丽娜

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

怎样在STM32H745上发出FDCAN Bootloader所需的复位呢?

我们目前在设计中使用 H745,我们注意到引导加载程序手册 (AN2606) 中的这个小摘录:
“关闭/打开电源后需要额外的重置才能连接到 BL 接口”
似乎并不是所有的复位都是相等的,如果在芯片已经在引导加载程序中等待时应用复位,则复位被计入此要求。
目前,我们的程序是这样的(我们使用 STLink v3:
  •    进入调试模式
  •    使用 Keil uVision IDE 发出三个重置(调试配置将此分配给 HWReset)
  •    按“运行代码”运行我们的应用程序
  •    在此之后,我们发出“Enter bootloader command”(如 ST 的文章中所述)
  •    控制器准备进入引导加载程序并停止
  •    我们按下“run code”,开发板进入bootloader
  •    我们可以使用 FDCAN 命令
如您所见,我们依靠 IDE 来获得一个正常运行的引导加载程序。我们需要能够以编程方式执行此操作。
关于如何做到这一点的任何想法?
我们还以不同的方式做到了这一点:
  •    让电路板在连接调试适配器的正常环境中启动(此阶段不涉及 IDE)
  •    发出“输入引导加载程序命令”
  •    例如使用 STM32CubeProgrammer 重置开发板
  •    控制器正在响应 FDCAN 引导加载程序命令
我们已将两个内核设置为同时启动,CM4 只是在 main 中等待(我们使用信号量来阻止进程),直到 CM7 完成系统配置。
我们可以通过编程方式访问 Boot0 引脚,但不幸的是,我们没有连接 nRST 引脚(仅连接到 jtag)。
另外,图 58 中的 AN2606 可能有错误,FDCAN 没有简单地通过,我认为状态机像其他接口一样循环回到它。

回帖(1)

史岩超

2022-12-28 15:15:50
我无法找出如何发出重置(即使通过官方支持渠道创建一个单独的案例),他们不可能对此进行测试,因为他们所有的核心和开发板都没有正确的引脚拉出到 CAN 接口。唯一的可能性是使用 RC 电路将 Boot0 引脚“充电”至高电平并发出复位。这样做两次,第二次,引导加载程序和 can 将能够正确回答。
重要的是要注意,我被告知重置只是为了稳定芯片的电源(加电和进入引导加载程序不应同时发生。同时意味着什么,未指定),但使用后大量的工业电源和在为芯片供电之间有缓和时间(到那时一切都应该稳定,除非在芯片复位期间存在内部差异),我无法摆脱所需的复位。
第二个问题,这是一个破坏交易的问题:每个存储区写入 63 字节有一个硬限制(在引导加载程序文档中如此说明)。在那之后,它不再写任何东西了。你对此无能为力。我没有测试在每 63 个字节后再次退出和进入引导加载程序以查看它是否会重置,但我认为这不是可行的选择。
我也得到了官方的回应,ST不会修复这个问题。因此,远离他们基于 CAN-FD 的引导加载程序,因为它不起作用,而且他们不会修复它。
我希望他们能更清楚地了解这个问题,并不是说每个命令写入超过 63 个字节是行不通的,而是总字节数是行得通的。
举报

更多回帖

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