跳转到主要内容

工程师笔记——MM32F0040使用总结

cathy 提交于

MM32F0040 是一款搭载高性能 Arm® Cortex®-M0 作为内核的 32 位微控制器,最高工作频率可达到72MHz,提供 32KB FLASH 和 4KB SRAM。MM32F0040 系列 MCU 适用于多种应用场合,如工业物联网设备、PC外设、电子门锁控制、医疗和保健设备、手持设备、电机控制、电梯呼叫面板、游戏娱乐以及 8/16 位 MCU 升级替换。

我们对客户经常问到的问题进行一一解答。

<strong><font color="#4e5e9e">案例一</font> </strong>

MM32F0040 的工作电压范围在 2.0V~5.5V 之间,当 MCU 工作在 3.3V 供电电压时,能够容忍 5.0V 的外设操作吗?

<strong>分析案例</strong>

MM32F0040 支持 2.0V ~ 5.5V 的宽电压工作范围,所有的引脚为标准输入/输出引脚,输入信号不得超过 VDD 供电电压,所以当 MCU 工作在 3.3V 供电电压时,不支持 5.0V 的外设操作。

<strong>参考建议</strong>

根据系统硬件设计需求,可以将 MM32F0040 的供电电压提升至 5.0V,或者是在 MM32F0040 与 5.0V 外设之间增加电压匹配电路或电平转换芯片,使之与外设电压保持一致。

<strong><font color="#4e5e9e">案例二</font> </strong>

MM32F0040 支持 ISP 方式进行程序烧录吗?

<strong>分析案例</strong>

MM32F0040 在 QFN20 和 TSSOP20 封装芯片中不支持 ISP 功能。

<strong>参考建议</strong>

MM32F0040的烧录方式可以使用 J-Link、U-Link、CMSIS-DAP 或者其它第三方的专用烧录工具来进行程序烧录。

推荐的量产烧录工具合作伙伴名单:

<a href="https://www.mindmotion.com.cn/support/ecosystem_partner/">https://www.m…;

<strong><font color="#4e5e9e">案例三</font> </strong>

之前项目有用到 MM32F0010 和 MM32F0020,但都没有 DMA 功能,MM32F0040 带有 DMA 功能吗?

<strong>分析案例</strong>

MM32F0040 带有 1 路 5 通道的DMA控制器,支持的外设类型包括 ADC、I2C、SPI、TIMx 和 UART。

<strong>参考建议</strong>

MM32F0040 DMA 共有 5 个通道,可配置处理优先级分为很高、高、中、低 4 个级别,如果优先级相同,则由硬件自动决定处理顺序(低编号通道请求优先处理)。数据传输宽度可配置为字节、半字、全字 3 个类型,数据会根据源的宽度配置进行打包,再根据目的地的宽度进行拆包,但要求源地址和目的地址必须是根据各自的数据传输宽度对齐。MM32F0040 DMA 支持循环缓冲控制,每个通道支持 DMA 半传输、DMA 传输完成和 DMA 传输出错 3 种事件标志,支持存储器对存储器传输,支持的数据传输方向为外设到存储器,或者是存储器到外设。

<strong><font color="#4e5e9e">案例四</font> </strong>

我想使用 MM32F0040 替换 MM32SPIN05,对于 ADC 部分的功能有哪些区别呢?

<strong>分析案例</strong>

MM32F0040 当前仅有 QFN20 和 TSSOP20 这两种封装,所以对于被替换的型号应该是MM32SPIN05NW 或者是 MM32SPIN05TW 与之封装相一致的。

<strong>参考建议</strong>

MM32F0040 与 MM32SPIN05 的 ADC 都是 12 位精度的逐次逼近型(SAR)的模数转换器,最大的输入时钟经由 PCLK2 分频产生,都不得超过 16MHz,最高可实现高达 1Msps 的转换速率。ADC 都支持 DMA 传输、都支持软件启动、外部触发启动和 TIMER 匹配这 3 种转换开始条件,都支持普通工作模式和任意通道工作模式。但 MM32F0040 还支持注入通道的工作模式,相比于 MM32SPIN05 能够实现更加灵活的 ADC 采样和功能实现。

<strong><font color="#4e5e9e">案例五</font> </strong>

我想使用 MM32F0040 作为 MM32F0020 的升级可以吗?

<strong>分析案例</strong>

很多用户在使用 MM32F0020 进行产品开发到后期的时候,会出现因为 FLASH 空间或者 SRAM 空间不够用,而导致需要切换芯片型号的问题。MM32F0040 带有 4KB 的 SRAM 空间,是 MM32F0020 的 2 倍,其引脚封装相同,成了客户首选的替换型号。

<strong>参考建议</strong>

MM32F0040 与 MM32F0020 的封装相同,但在性能和外设上还是有不少不同之处的,部分可以参照下表所示。此外 MM32F0040 还增加了 MM32F0020 所不具有的外设功能,比如硬件除法器、比较器、32 位定时器等。所以项目之初做好评估,在硬件设计时做好兼容,在替换的时候,需要结合项目实际的硬件需求,做好对比;满足条件的情况下,可以进行升级。

<center><img src="http://mcu.eetrend.com/files/2022-05/wen_zhang_/100560111-252708-1.png&…; alt=“工程师笔记——MM32F0040使用总结"></center>

<strong><font color="#4e5e9e">案例六</font> </strong>

MM32F0040 和 MM32SPIN05 的差异在哪些地方?

<strong>分析案例</strong>

<strong><font color="red">RCC</font> </strong>

MM32F0040 系列与 MM32SPIN05 系列在 RCC(复位和时钟控制器)的主要区别是 MM32F0040 增加了 PLL 部分,相关的 PLL 控制器在 PLLCFGR 寄存器中。

<strong><font color="red">UART</font> </strong>

MM32F0040 系列与 MM32SPIN05 系列在中断向量部分互相兼容,向量地址相同,主要区别是 MM32F0040 增加了 UART3 对应的中断。

<strong><font color="red">中断</font> </strong>

MM32F0040 系列与 MM32SPIN05 系列在中断向量部分互相兼容,向量地址相同,主要区别是 MM32F0040 增加了 UART3 对应的中断。

<strong><font color="red">FLASH</font> </strong>

MM32F0040 系列与 MM32SPIN05 系列在 Flash 部分互相兼容,寄存器及寄存位功能相同,主要区别是读保护设置方式有差异,及编程时间与寿命不同。

<strong><font color="red">ADC</font> </strong>

MM32F0040 系列与 MM32SPIN05 系列的 ADC 模块基本互相兼容,部分需要注意的功能差异如下:MM32F0040 增加了对任意通道的配置功能及相关 ADC转换触发源, MM32SPIN05 的采样保持时间是一处设置影响所有的通道,MM32F0040 系列的每个通道支持独立设置采样保持时间。

<strong><font color="red">PWR</font> </strong>

MM32F0040 系列与 MM32SPIN05 系列在 PWR 部分大部分功能互相兼容,寄存器及寄存位功能相同,主要区别是 MM32F0040 在低功耗模式下,增加了 DeepStop 的功能配置, Standby 唤醒方式下增加唤醒时间延迟的配置。

<strong><font color="red">TIM1</font> </strong>

MM32F0040 系列与 MM32SPIN05 系列在 TIM1 部分大部分功能互相兼容,寄存器及寄存位功能相同,主要区别是 MM32F0040 增加了 PWM Shift 移相功能。

<strong>参考建议</strong>

MM32F0040 的内核和大部分的外设兼容 MM32SPIN05,在此基础上部分外设做了增强。主要有以下几种情况:

1、两个系列外设相同,其寄存器基地址,寄存器功能,寄存器偏移地址,及寄存器位都是一样的。移植过程中,无需进行相关代码的更改,可在应用程序级别上保持相同的功能,外设的主要特性和行为均保持不变。

2、MM32F0040 针对功能做小幅度增强的外设,其相同部分的寄存器基地址,寄存器功能,寄存器偏移地址,及寄存器位也都是一样的。移植过程中,这部分代码无需更改,可在应用程序级别上保持相同的功能。只有在需要用到新功能时,才要通过调用新的函数,对新增的控制位和状态位的操作。

3、同类型的外设,MM32F0040 上功能发生了显著的变化,使用新的 IP,新架构,新特性,移植过程中,需要从上到下,从应用层开始进行替换。在当前的样例中,底层 HAL 已通过相同的函数名,来实现相同的操作,只是参数会随着寄存器的变化,从而导致参数变化。

<strong><font color="#4e5e9e">案例七</font> </strong>

MM32F0040 在全温全压下时钟精度范围?

<strong>分析案例</strong>

MM32F0040 支持内部 RC 时钟和外部晶振供电两种时钟来源。

MM32F0040 上电启动后先使用内部的 8 MHz 振荡器作为默认的系统时钟,随后可根程序配置选择使用内部的振荡器进行 PLL 倍频得到最终想要的主频(最高为 72 MHz,且默认为系统时钟 1 分频而来)。

<center><img src="http://mcu.eetrend.com/files/2022-05/wen_zhang_/100560111-252709-2.png&…; alt=“工程师笔记——MM32F0040使用总结"></center>

<strong>参考建议</strong>

MM32F0040 全温范围时钟精度 ±2.5%,其精度在全温全压下可以满足串口正常通讯,且 MM32F0040的 UART 支持硬件波特率自适应功能,能够满足全温全压范围下的 UART 通信要求。

<strong><font color="#4e5e9e">案例八</font> </strong>

MM32F0040 的低功耗有几个模式?

<strong>分析案例</strong>

芯片有四种低功耗模式, 电源消耗不同、唤醒时间不同、唤醒源不同,用户需要根据应用需求,选择最佳的低功耗模式。

停机和待机模式下的典型和最大电流消耗:

<center><img src="http://mcu.eetrend.com/files/2022-05/wen_zhang_/100560111-252710-3.png&…; alt=“工程师笔记——MM32F0040使用总结"></center>

<strong>参考建议</strong>

为了延长电池供电类产品寿命,在 MCU 不需要工作时,可以利用 MCU 的多种低功耗模式来节省功耗,当需要 MCU 开始工作时,可以通过外部唤醒源或者 IWDG 等方式唤醒 MCU 开始工作,从而达到分时工作的目的以节省产品的电流消耗。

来源:<a href="https://mp.weixin.qq.com/s/jHa3xq8I1m5h7wbqRyWU6g">灵动MM32MCU</a&gt;
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。