问题:MDK烧写时一直报错cannot stop ARM device,无法烧写。
总体:从三个部分排查问题:硬件,软件及配置,烧写器。
L战略方法:1. 芯片手册+原理图。2.利用示波器观察各个信号的波形,从根本上看是哪个信号产生的问题。3. 网上找相关的解决方法。4.逐级排查逼近(前→后;两端→中间;中间→两端)。
H战略方法:逐级归因+对比实验+单一变量对照。与好的板子进行对比,参照好板向此方向靠拢。
方法:工程路径 全英文
方法:Reset脚处理,RST无法拉高导致
方法:解决:从大电源上的GND引出一根线。上电下载程序,弹出“cannot stop arm device”后,用GND引出线将RESET_INn脚点住3秒(复位),再下载看看现象。
现象:实现解锁,但下载时出现“cannot load flash algorithm”(此问题在去年时也时常会出现,但不算大问题)改用ULINK2并降低烧写速率后可以正常烧写了✅。
方法:思路集中于芯片被锁了,尝试不同方式进行复位或是解锁。
方法:根本原因:NRST(复位引脚)电平持续<2V,此引脚要被上拉至3.3v才能正常工作,否则一直处于复位状态,程序无法执行,也无法烧写程序
检查:(1)检查电路是否有上拉电阻或上拉电阻脱落 (2)检查JTRSTn引脚是否与其余引脚短接了,尤其是在焊接的时候如果使用了劣质助焊剂,而NRST与GND引脚比较接近,就容易产生这个问题,所以可以用酒精擦拭一下nRST引脚片区
方法:换成MDK4.10就正常了
方法:从MDK5换成MDK3,MDK3中下拉列表里的下载方式有更多选择。
现象:都不好使。
方法:algorithm算法删除后重新添加
方法:关闭开门狗,开门狗导致芯片被锁
方法:主频过高。因为ST的例子代码,默认是8M晶振,锁相环9倍,结果我外部是25M晶振,就变成了25×9=225M!不知道什么原因,不过2把频率改了,暂时没出现问题。
方法:参照此CSDN成熟设计,将RTCK照此法接上。
方法:断电插拔
方法:降低jlink下载波特率速率
方法:当系统的频率过高时,会导致该错误的发生。(换个频率较低的晶振,或者检查一下时钟配置,看是否是倍频设置的过高。)改成8M晶振
方法:上下拉电阻全去掉,让JTAG信号线与Arm直连,但出现2.1V问题(即JTAG直连的信号用示波器观察发现非0非3V3,而是2.1V电压),好使一段时间再复发。(JTAG各个信号口只能是3.3V或0V,不存在中间状态。)
方法:仅去掉TDO的上拉电阻,其余不变,好使了几天。
方法:用SEGGER Jlink Commander进行解锁,输入rx 0,随后下拉RESET_INn复位。
方法:J-Flash for ARM
https://blog.csdn.net/firefly_cjd/article/details/77363600
方法:好板子用的是直供电源,我的是自己转的电源。尽量减少干扰,直接供电。
方法:重焊换一片芯片。
现象:头几次可以烧写,后续在CJ-575-A1E上复发“cannot stop Arm device”
方法:在裸板上焊上最小系统,验证最小系统是否可靠运行。
现象:带有上下拉电阻后的25M晶振的最小系统可以正常跑最新程序。
方法:示波器观察晶振是否起振,频率是否正确。
方法:JTAG烧写器太长在高速烧写时容易受干扰,尽量缩短JTAG烧写线。
方法:电源供电用示波器查看稳不稳有没噪声。
方法:用示波器看复位脚是否有干扰。
方法:与开发板的烧写时各信号波形进行对比,观察我的JTAG各信号是哪一路出现了问题。并且通过引出线看JTAG信号有没有干扰。
方法:串口下载程序。可能在ARM的TX、RX与USB口之间加个CH340G转换芯片(串口转TTL模块)就可以达到硬件要求。
所需工具: 串口转 TTL 模块一个,STM32 最小系统,MCUISP软件。《解决Keil 下载LPC2378 FLASH时报错“can not stop ARM...”》https://blog.csdn.net/frank0rain/article/details/16976813