0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

MM32F0010使用总结

jf_pJlTbmA9 来源:灵动MM32MCU 作者:灵动MM32MCU 2023-11-01 17:07 次阅读

案例一

工程师提到:MM32F0010 的 PA13 和 PA14 引脚能否设置成GPIO?如何设置?

分析原因

PA13PA14 默认是 SWD 功能,并且可以设置成通用 GPIO 或其他复用功能,需要将 PA13PA14 的 SWD 功能进行 disable 才可以实现 GPIO 功能。

解决办法

设置方式:

void SWDasGPIO_Init(void)
{
    GPIO_InitTypeDef  GPIO_InitStructure;

    RCC_AHBPeriphClockCmd(RCC_AHBENR_GPIOA, ENABLE);

    GPIO_PinAFConfig(GPIOA,GPIO_PinSource14,GPIO_AF_4);   
    GPIO_PinAFConfig(GPIOA,GPIO_PinSource13,GPIO_AF_4);

    GPIO_StructInit( GPIO_InitStructure);
    GPIO_InitStructure.GPIO_Pin  =  GPIO_Pin_14|GPIO_Pin_13;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_Init(GPIOA,  GPIO_InitStructure);
}

案例二

有工程师提到:SWD 复用成 GPIO 后如何恢复 SWD 功能并进行二次下载

分析原因

PA13PA14被设置成 GPIO 或者其他复用功能后,如果需要再次通过 SWD 接口连接目标 MCU,需要做如下动作:

因为 PA14 被设置成 GPIO 或者其他复用功能后, 该 I/O 不再是 SWCLK 功能,但只要进入 RESET(内部软件复位,IWDG 复位,Standby 唤醒,初始上电等过程)会短时间还会把该 IO 切换为 SWCLK 功能,直到执行 Main Flash 中的把该 Pin(nRST/PA14/SWCLK)功能配置为 GPIO 或 UART1_TXD 后,SWD 接口才会 Disable;

解决办法 1

可通过 SWD 接口的 PA14和 PA13 输入 Boot Switch 时序,切换到 ISP Boot,擦除目标 MCU 中 Main Flash 空间的程序,可以参考官网AN:《AN0010_MM32F0010_PIN_AF_Mode_Setting_SC》。

资料链接:https://www.mindmotion.com.cn/products/mm32mcu/mm32f/mm32f_value_line/mm32f0010/

本次以 MM32-LINK 为例,新建 MM32F0010 的工程后需要设置芯片锁定解锁状态,设置功能如下:

a) 当编程对象为 MM32F0010 系列芯片锁定时的解锁状态设定

b) 单击鼠标左键弹出对话框如右图,设置解锁重复次数和上电延时时间

c) 点击按键[OK]按键后状态栏显示“Unlock”

d) 当目标对象被解锁时, 状态栏显示“Normal”

wKgZomUD6syAROikAAZg4cM08os856.png

单击状态栏的“Normal”在弹出的对话框中单击OK,状态栏从 Unlock 跳变到Normal 听到滴两声,同时状态栏内核识别指示灯亮黄灯,说明解锁成功,最后单击 Erase Chip 听到滴一声解锁完成,同时状态栏显示芯片擦除成功,内核指示灯跳变成绿灯。

如果解锁不成功,断开仿真器与目标板连接的烧录线,单击 Normal,在弹出的对话框中 Repeat 设置成500(该值依据具体情况可灵活修改),然后单击 OK,仿真器再与目标板连接并自动解锁,状态栏从Unlock跳变到 Normal 听到滴两声,同时状态栏内核识别指示灯亮黄灯,说明解锁成功,最后单击 Erase Chip 听到滴一声解锁完成,同时状态栏显示芯片擦除成功,内核指示灯跳变成绿灯。

解决办法 2

如果程序中进入 main()程序后,需要将 PA13 和 PA14 设置成 GPIO 功能时,可以预置较长时间的延时等待(在调试过程设置延时>10s,量产阶段屏蔽延时),可通过重新上电 MCU,立刻执行 Erase Chip 功能,擦除目标 MCU 中 Main Flash 空间的程序;

案例三

有工程师提到:使用 MM32-LINK 对 MM32F0010 下载,提示下载失败?该如何设置?

分析原因

MM32-LINK 会通过 Vref 引脚检查 MCU 的供电电压,若Vref引脚未连接到主电源上,MM32-LINK 会认为目标 MCU 未供电且在下载时弹出相应的错误提示。

解决办法

硬件接线如下所示:

wKgaomUD6s2AO6_2AAHTOve8Rec806.png

若 MM32F0010 未独立供电,Keil 中需要配置 MM32-LINK 电源输出,并且取消 Reset 的设置。

wKgZomUD6s6AciVrAAJEG9vaSpU085.png

案例四

有工程师提到:MM32F0010 的 ADC 多通道采样存在串扰是什么原因?

分析原因

MM32F0010 有 1 个 12 位模数转换器,1uS 转换时间(多达 8 个输入通道),支持单次模式、单周期模式和连续模式,多通道采样需要使用单周期或者连续模式。当 ADC 的采样电容在两个通道之间进行切换时等效电路如下所示:

wKgaomUD6tCAGKNtAAAlMvFdssQ493.png

两路信号源 A 和 B 的电平分别为Ua和Ub,其内阻分别是 Ra 和 Rb,其中,Cs 是 ADC 的采样电容,Rs 是 ADC 的采样电阻,MM32F0010 的内部采样电容 Cs 为 10pF。

为了简化问题,假定两路信号的扫描次序是由信号源 B 到信号源 A,且信号源 B 接入的时间足够长,以至在通道切换时采样电容 Cs 上的电压可以近似的等于 Ub ,于是,在通道切换到信号源 A 后,采样电容 Cs 上的电压将会随着时间进行充放电的动作,随着采样保持时间t 的增长,采样电容 Cs 上的电压逐渐趋近于 Ua ,而其与 Ua 之间的误差 ∆U 即是信号源 B 通过采样电容 Cs 对信号源 A 的藕合值,且随着采样保持时间t的增长,该值逐渐减小,最终趋近于零。

解决办法

在实际 ADC 转换中,由于 ∆U 的值的误差最终会反馈在 ADC 最终的转换结果中,所以有的用户反馈转换结果比实际结果存在偏差。我们在应用中避免该问题,需要 ∆U 的值趋近于 0 才符合实际的要求。

有种方法可以减小 ∆U 的取值:

1. 通过增加采样保持时间 t,使 ∆U 获得更多的衰减时间;

2. 通过减小信号源的内阻 Ra,使 ∆U 具有更快的衰减速率;

在实际运用时,在增加采样保持时间方面可以通过修改 ADC 的设置参数来实现(通过调整 ADC 采样率和 ADC 的采样周期),而在降低信号源内阻方面可以通过在信号源与 ADC 之间加入跟随器进行隔离来实现。

案例五

有工程师提到:MM32F0010 功耗水平是多少?如何降低整机功耗?

分析原因

芯片有三种低功耗模式:

睡眠模式 (CPU 停止,所有外设包括 CPU 的外设,如 NVIC、系统时钟 (SysTick) 等仍在运行)

停机模式 (所有的时钟都已停止,寄存器和 SRAM 的内容依然保存)

待机模式 (内核电源关闭,寄存器和 SRAM 的内容全部丢失)

低功耗一览表:

wKgZomUD6tGACo9kAAIlm0PjKp0451.png

低功耗模式供应电流:

wKgaomUD6tOAMyKaAACJX2YBINw134.png

解决办法

在系统或电源复位以后,微控制器处于运行状态。当 CPU 不需继续运行时,可以利用多种低功耗模式来节省功耗,例如等待某个外部事件时。用户需要根据最低电源消耗、最快速启动时间和可用的唤醒源等条件,选定一个最佳的低功耗模式。

在运行模式下,可以通过以下方式中的一种降低功耗:

● 降低系统时钟频率

● 关闭 APB 和 AHB 总线上未被使用的外设时钟

案例六

有工程师提到:MM32F0010 进入 STOP 模式后无法通过串口唤醒 ?

分析原因

MM32F0010 没有 LPUART,进入 STOP 模式后不能直接通过 UART 直接唤醒,只能通过 EXTI 外部中断方式唤醒。

解决办法

我们可以在 MCU 进入 STOP 前将 RX 脚设为 EXTI 模式,并使能对应的中断来实现。

案例七

有工程师提到:MM32F0010 进入低功耗之后,实际功耗远大于理想功耗,是什么原因?

分析原因

MCU 在进入 STOP 模式的时候,GPIO 的状态都是保持在进入低功耗模式之前的状态。当连接到外设后,外设的电平状态和所连接的 GPIO 不一致的时候,就会产生电流消耗,这个就是很多用户实际测试过程中发现功耗大于手册中的功耗。

解决办法

1、进入低功耗之前,对使用和未使用IO状态进行调整,比如有外部上拉,可配置成模拟输入等。

2、关闭外设时钟,例如 ADC、UART 等外设时钟进行关闭。

案例八

有工程师提到:通过按键唤醒 MM32F0010,串口不能正常工作?

分析原因

经分析发现,开发者进入的低功耗模式为停机模式,唤醒之后,未初始化串口外设,导致串口不能正常工作。

解决办法

唤醒 MM32F0010 之后,重新初始化串口(以及所有使用的)外设。

案例九

有工程师提到:进入低功耗后无法使用调试器二次下载是什么原因?

分析原因

由于进入低功耗后会关闭 SWD 的电源域,所以无法二次下载。

解决办法

● 在程序中需要设置正确的唤醒源,对 MCU 唤醒后才能进行下载。

● 可以参考问题2中的解决办法对 MCU 内部的程序进行擦除。

来源:灵动MM32MCU

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    447

    文章

    47815

    浏览量

    409184
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16021

    浏览量

    343674
  • GPIO
    +关注

    关注

    16

    文章

    1136

    浏览量

    50582
  • SWD
    SWD
    +关注

    关注

    1

    文章

    54

    浏览量

    11692
收藏 人收藏

    评论

    相关推荐

    灵动微全新MM32F0010资料分享

    灵动微全新MM32F0010资料
    发表于 12-15 06:55

    MM32F0010在性能/功耗和外设配置方面的特点有哪些?

    MM32F0010在性能、功耗和外设配置方面具有显著的特点
    发表于 12-21 06:24

    MM32F0010 该用什么demo板开放呢

    我想用 MM32F0010开放无线充方面的产品,请问用什么型号的demo板呢?
    发表于 09-07 18:27

    MM32F0010 该用什么demo板开放呢

    我想用 MM32F0010开放无线充方面的产品,请问用什么型号的demo板呢?
    发表于 03-30 13:43

    灵动微的新产品MM32F0010是替代8位MCU的最佳方案

    MM32F0010概述 灵动微电子新产品MM32F0010使用内核M0的高性能32位微控制器,工作频率最高可达48MHz,内置高速存储器,丰富的增强型I/O端口和外设连接到外部总线
    发表于 09-23 16:08 6499次阅读

    MM32F0010 产品手册(中文版)

    MM32F0010 产品手册(中文版)
    发表于 02-22 18:23 0次下载
    <b class='flag-5'>MM32F0010</b> 产品手册(中文版)

    MM32F0010 产品手册(英文版)

    MM32F0010 产品手册(英文版)
    发表于 02-22 18:26 0次下载
    <b class='flag-5'>MM32F0010</b> 产品手册(英文版)

    MM32F0010 用户手册(中文版)

    MM32F0010 用户手册(中文版)
    发表于 02-22 18:27 0次下载
    <b class='flag-5'>MM32F0010</b> 用户手册(中文版)

    MM32F0010 用户手册(英文版)

    MM32F0010 用户手册(英文版)
    发表于 02-22 18:28 0次下载
    <b class='flag-5'>MM32F0010</b> 用户手册(英文版)

    MM32F0010 勘误表(中文版)

    MM32F0010 勘误表(中文版)
    发表于 02-22 18:28 0次下载
    <b class='flag-5'>MM32F0010</b> 勘误表(中文版)

    MM32F0010 勘误表(英文版)

    MM32F0010 勘误表(英文版)
    发表于 02-22 18:29 0次下载
    <b class='flag-5'>MM32F0010</b> 勘误表(英文版)

    AN6417 基于MM32F0010的霍尔高压单相冰箱散热风扇方案(中文版)

    AN6417 基于MM32F0010的霍尔高压单相冰箱散热风扇方案(中文版)
    发表于 02-22 18:29 0次下载
    AN6417 基于<b class='flag-5'>MM32F0010</b>的霍尔高压单相冰箱散热风扇方案(中文版)

    AN0010 MM32F0010 PA13_PA14引脚的复用与使用(中文版)

    AN0010 MM32F0010 PA13_PA14引脚的复用与使用(中文版)
    发表于 02-22 18:31 0次下载
    AN<b class='flag-5'>0010</b> <b class='flag-5'>MM32F0010</b> PA13_PA14引脚的复用与使用(中文版)

    AN0061 从MM32F0010移植到MM32F0020(中文版)

    AN0061 从MM32F0010移植到MM32F0020(中文版)
    发表于 02-22 18:33 0次下载
    AN0061 从<b class='flag-5'>MM32F0010</b>移植到<b class='flag-5'>MM</b>32F0020(中文版)

    AN0061 从MM32F0010移植到MM32F0020(英文版)

    AN0061 从MM32F0010移植到MM32F0020(英文版)
    发表于 02-22 18:34 0次下载
    AN0061 从<b class='flag-5'>MM32F0010</b>移植到<b class='flag-5'>MM</b>32F0020(英文版)