使用SWD通过J-Flash烧写STM32时,会出现各式各样的错误;
总结下原因:
1、复位脚被拉低了,这次我遇到的就是复位引脚的电容焊反了(钽电容),可以正常连接,但是烧写程序时会出现如下报错
–>
- Erasing affected sectors …
- ERROR: RAM check failed @ address 0x20000000.
- ERROR: Write: 0x03020100 07060504
- ERROR: Read: 0x00000000 00000000
- ERROR: (0 bytes of RAM have been checked successfully)
- ERROR: Failed to erase sectors
- De-initializing CPU core (Exit sequence) …
- ERROR: Failed to auto program target
2、SWDIO和SWCLK线序错误、虚焊 、短接,错误表现为连接不成功;
3、另外会出现STM32: Connecting to CPU via connect under reset failed.
此时可以检查下VDDA和VSSA电压是否均正常,如果VDDA低于VDD太多会导致无法正常烧写芯片;
4、如果出现读取的id和工程设置的芯片id不符合的情况,多半是jlink本身有问题,固件与驱动不符,导致的读取数据错误;可以尝试更换低版本的驱动,有时候最新的不一定是最合适的。
5、如果在程序中禁用了SWD调试接口,即将SWD所用的IO口当作普通的IO口使用时,下载完第一次程序后,如果从flash启动(BOOT0==0)则无法继续使用SWD接口重新下载程序或者调试;
此时可能会出现如下提示:
- Connecting …
- Connecting via USB to J-Link device 0
- Target interface speed: 200 kHz (Auto)
- VTarget = 3.345V
- ERROR: Failed to connect.
Could not establish a connection to target.
解决办法是将BOOT0拉高,让程序从ram启动,则可以使用SWD重新下载程序; |