最近有部分刚接触MM32 MCU的用户朋友们碰到了MCU无法进行下载的情况,然后跟我们反馈芯片有问题,最后经过技术工程师跟进,其实都是用户程序使用错误或者操作不规范等原因造成的,并非芯片有问题。如果大家有碰到这种情况请不要着急,此篇文章灵动微总代理英尚微电子专门来讲解如何解决烧写失败的情况及有可能出现该类问题的原因。2 p+ L1 P& x! b + P1 E; ~. K/ ^7 P- k/ J: o7 L3 \% B MM32无法进行烧写原因有多种情况,我们从硬件和软件两个方面分析:0 d G0 B p: @* [$ l. R ( X- B; m: j4 y; _( u 硬件原因:; z5 M/ j" {$ N7 I/ M% j% G 1、使用的调试器不支持调试下载MM32 MCU,IAR/KEIL上仿真器选择/配置不正确,MM32 MCU已经获得Segger官方认证。在Segger官网J-Link驱动6.40以上版本支持MM32 MCU系列,MM32 MCU支持如MM32-Link、U-link、J-Link、DAP-Link等使用SWD/JTAG(M3)等方式对内核、外设、FLASH进行访问。: F. J- @9 R; x3 w" G, f6 s 2、MM32 MCU最小系统不完整,复位电路设计错误、MCU供电不正常等也会出现无法识别设备Device等情况。MM32 MCU支持宽电压2.0-5.5v供电,在用户自己设计产品PCB时,建议用户预留VCC、SWDIO、SWCLK、GND、NRST五线下载口方式。大家在进行电路设计时请参考demo板进行设计。9 H1 ~. C3 V4 W% `$ M6 ^ / ?1 c4 g; a, U* u- f 3、SWD的两个引脚PA13、PA14引脚虚焊,外部硬件有上拉或下拉,与调试器连接不正确或未连通等情况。 , [2 i4 {( l i. Z, M5 i& h0 P. A 软件原因: 1、程序下载错误,MM32 MCU有F、L、SPIN、W、P五大系列,对于不同的MCU我们有不同的库、启动文件与例程,大家下载程序前请查看自己MCU版本型号是否与要下载的程序对应,例如MM32F031C6T6分q版和n版,两个型号由于时钟域配置不同,程序不能直接共用。 2、MCU处于读/写保护状态,当MCU处于读保护状态时,FLASH空间处于写保护状态,此时无法使用SWD协议对内核、外设、FLASH进行访问,无法进行下载调试。, C6 g) ~5 `" I: s 3、MCU处于低功耗状态,当MCU处于不同模式低功耗状态时,MCU的外设区域会处于断电状态,调试器识别MCU处于断电状态,无法进行下载调试。: V* R$ S, I" [4 a% { 8 F+ y8 u; ] O& d 4、SWD的两个引脚PA13、PA14被复用为其他功能或通用IO,PA13、PA14被配置为其他工作模式,此时PA13、PA14无法正常工作在SWD模式,调试器无法通过SWD协议进行下载调试。 2 `7 p9 G- D. m- d/ |, @% x 5、程序下载过程中出错,由于下载速度和调试器版本特性等原因造成下载过程中出错,导致MCU进入HardFault状态(程序跑飞),此时无法进行下载调试。4 i. ]4 w6 H+ l4 R; w; l ] |