ME32x系列MCU Keil调试技巧

demi的头像
demi 发布于:周一, 03/08/2021 - 14:34 ,关键词:

概述

ME32x系列是内嵌ARM Cortex™ M0/M3核的32位微控制器。该系列控制器由敏矽微电子有限公司自主开发,并具有自主知识产权。敏矽微电子的微控制器包括有通用MCU和专用SOC系列,具有非常高的性价比,是MCU产品升级换代和国外产品替代的最佳选择。通用功能有高精度ADC,CAN接口,I2S音频接口,UART串口,SPI接口,I2C总线接口,看门狗定时器(WDT),通用计数器/定时器。特殊接口包括人机界面控制器(LCD驱动,电容触摸按键)和马达控制功能模块。

调试端口

所有ME32x系列产品都支持ARMSWD 两线调试协议。由于调试端口与IO复用,调试端口管脚在系统初始化时为SWD调试功能SWD_CLK和SWD_IO(用户加密情况除外),调试管脚状态在BootLoader运行时不会改变。用户可以使用Jlink或Ulink仿真器与之连接,从而下载和调试用户程序。

调试技巧

3.1 如何确认硬件连接

理论上,仿真器与目标板只需要连接GND,SWD_CLK和SDW_IO三根线即可调试(建议nRST也连接)。如目标板没有电源,JLINK/ULINK仿真器是可以通过USB5V提供一个3.3V电源给目标板供电,前提是目标板是3.3V供电并且电源功耗所需要电流不超过USB能提供的电流:

JLINK缺省是输出3.3V

ULINK缺省是不输出3.3V电源,接口芯片电源要外供。要输出3,3V,需要把一个3针排插全部连在一起(ULINK标准版)
如果目标板系统接口是1.8V或5V,就只能使用ULINK,并且使用不输出3.3V电源设置,目标板需要自己供电,并且1.8V或5V 电源还需要接入仿真器的接口电源。

连接好电源及信号线后,可以检验一下你的工作结果:

打开一个对应的MCU 的工程,在OPTION窗口的Debug Tab,选择你的仿真器,再点击Setting按键


如果你能看到IDCCODE,那么恭喜你,你的硬件连接没有问题了。

3.2 程序下载失败

在确认硬件连接没有问题后,如果出现程序下载失败并且连续重试也一样(已确认对应Flash烧写算法已正确设置并且运行Flash算法的SRAM地址空间也正确设置,不同芯片设置不同,看下图),可能有以下原因:


SWD端口被用户程序复用,此时端口功能不再具有SWD功能

解决方法:MCUBoot引脚接地,重新上电或用Reset重启系统,这样系统会停留在Bootloader,同时SWD引脚功能恢复,即可下载。

SWD接口需要重启

解决方法:在OPTION->Debug->SettingTAB 窗口,选择设置Connect &Reset Options使用Reset,如下图


如nRST没有连接,也可以选择SYSRESETREQ Reset。

3.3 不能进入调试界面或总是从调试界面弹出

有时用户会发现,以前的工程可以下载,但不能进入调试界面进行调试,并且还可能导致SWD不工作,但换一个工程又可以调试。其原因是该工程上次调试有非法操作(如访问非法地址),并且非法操作被工程记录,每一次进入调试都会调用该操作,从而导致Keil从调试窗口弹出。

所以我们要做的事情就是把保留在工程的非法操作从工程中清除掉。

在工程Options->DebugTab,拿掉下面的勾选项目:


选择OK保存。

再在File->SaveAll 保存所有工程内容。

退出工程。

重新调入工程即可解决问题了。

Revision History


来源: 敏矽MCU

围观 160