0
\ \ begingroup \美元

我一直在研究两个不同的板(一个使用STM32F7,另一个使用STM32F3)的问题。当试图编程的板(使用ST-Link提供在Nucleo/发现板)我得到各种错误围绕重置。

基本上,当尝试从STM32CubeIDE“运行”一个程序时,选择“软件系统重置”,取决于我使用的调试器,我得到:

  • ST-Link GDB:

    STM32_AppReset(),失败复位目标。

  • OpenOCD:

    未定义调试原因8 -目标需要重置
    在tcp/3333上接受'gdb'连接
    未定义调试原因8 -目标需要重置
    错误:在等待目标停止时超时
    在目标STM32F373CCTx.cpu上执行gdb-flash-erase-start事件出错:
    目标:stm32f373cctx.cpu - 没有停止
    错误:目标没有停止
    擦除0到10扇区失败
    错误:flash_erase返回-304

对MCU编程的唯一方法是使用ST-Link Utility,将其设置为硬件复位(因为在使用软件系统复位时,它甚至不会连接到MCU),对MCU编程,然后手动电源循环。如果在MCU内存中已经有一个程序,ST-Link Utility将会失败。F3和F7的失败是不同的。在F7,它会说它不能重置目标,而在F3,输出是:

13:06:09:设备ID:0x432
13:06:09:设备flash大小:256KBytes
13:06:09:设备系列:STM32F37xx
精灵加载程序程序功能失败。
精灵加载程序程序功能失败。
内存加载器错误
13:06:28:程序运行出错!
13:06:28:编程错误@ 0x08000188!

我不确定这是软件问题还是硬件问题。关于我的连接,在两个板上我只使用SWDIO, SWCLK和GND。MCU在两块板上都稳定在3.3V。没有复位按钮,两块板上的NRST引脚直接连接到3.3V。我尝试在NRST和GND之间添加100nF电容,以确保不会从3.3V下降,但这并没有改变什么。

作为输入保护,在SWDIO和SWCLK线上有100欧姆电阻,也有TVS二极管,但我已经移除了它们,同时试图找到一个解决方案(它没有改变任何东西)。我也尝试了几种不同的ST-Link设备,但没有任何影响。

我希望我已经提供了所有必要的细节,因为我已经为这个问题心烦意乱了几个小时,却找不到一个解决办法。我设计了其他几块板与完全相同的连接方案(只有SWDIO和SWCLK, 100欧姆电阻等),并没有问题编程和调试他们。一开始我以为是一个F7板出了问题,但是同样的问题在不同的PCB和不同的MCU上仍然存在,这说明我可能犯了更大的错误。

先谢谢你。

\ $ \ endgroup \ $
    2
    \ \ begingroup \美元

    NRST直接连接3.3V VCC错误。断开。

    \ $ \ endgroup \ $
    1
    • \ \ begingroup \美元 非常感谢!我知道这是一个愚蠢的错误;) \ $ \ endgroup \ $- - - - - -kavon7 1月31日12:44

    你的答案

    点击“发布你的答案”,即表示你同意我们的服务条款隐私政策饼干的政策

    不是你想要的答案?浏览其他带标签的问题或者问你自己的问题