MM32F0040

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

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

上期回顾

案例九

MM32F0040 的时钟源有哪些?

分析案例

MM32F00040有四个系统时钟源:

  • 高速内部时钟(HSI 上电后默认),频率为 8MHz,全温全压范围时钟精度 ±2.5%
  • 高速外部时钟(HSE),有源晶振频率范围是 2MHz ~ 32MHz ,无源晶振频率范围是 4MHz ~ 24MHz
  • 锁相环(PLL):当 HSI(或 HSE)作为 PLL 时钟源时, HSI(或 HSE)不可关闭
  • 低速内部时钟(LSI)

“MM32F0040使用总结

参考建议

MCU 时钟输出(MCO)允许时钟输出到外部 MCO 引脚上。相应 GPIO 端口的配置寄存器必须被配置为相应功能。可以选择以下 6 个时钟信号中的一个作为 MCO 时钟:

“MM32F0040使用总结

用户可以通过 MCU 时钟输出确认配置的时钟,受限于 MCU 的 IO 的速度,建议 MCO 输出频率小于 24M,配置如下:

static void MCO_Config(void)
{
    GPIO_InitTypeDef  GPIO_InitStruct;

    RCC_AHBPeriphClockCmd(RCC_AHBENR_GPIOA, ENABLE);
    RCC_APB2PeriphClockCmd(RCC_APB2ENR_SYSCFG, ENABLE);

    GPIO_PinAFConfig( GPIOA, GPIO_PinSource9, GPIO_AF_5);

    //MCO use PA9
    GPIO_StructInit(&GPIO_InitStruct);
    GPIO_InitStruct.GPIO_Pin  = GPIO_Pin_9;
    GPIO_InitStruct.GPIO_Speed =  GPIO_Speed_50MHz;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_Init(GPIOA, &GPIO_InitStruct);

    RCC_MCOConfig(RCC_MCO_SYSCLK);
}

案例十

MM32F0040 的时钟安全系统有什么作用?要怎么使用?

分析案例

时钟安全系统可以监测HSE时钟是否失效,一旦发现 HSE 时钟失效,将自动切换系统时钟源到 HSI,并引发NMI 中断,在 NMI 中断中对时钟做处理,从而确保时钟系统的稳定性和可靠性。

用户可以根据实际的需求选择是否使能时钟安全系统,一旦启用 CSS,如果 HSE 时钟发生故障,CSS 中断发生,并自动生成 NMI 中断。除非 CSS 中断挂起位被清除,否则 NMI 将被不停地执行。因此,在 NMI 的处理程序中,用户必须通过设置时钟中断寄存器(RCC_CIR)的 CSSC 位为 1 来清除 CSS 中断。

时钟安全系统启用的步骤如下:

配置控制状态寄存器 (RCC_CSR)的 LSION 位为 1 和 LSI_OEN_LV 位为 1,使能 LSI

等待控制状态寄存器 (RCC_CSR) 中的 LSIRDY 位被置位为 1,表示 LSI 稳定,可输出有效时钟

配置时钟控制寄存器(RCC_CR)中的 CSSON 位为 1 ,时钟安全系统使能

案例十一

MM32F0040 有 SysTick 吗?如何配置?

分析案例

SysTick 系统定时器是属于 ARM-M 内核中的一个外设。系统定时器是一个 24bit 的向下递减的计数器,RCC 通过 AHB 时钟 8 分频后供给 CPU 系统定时器的(SysTick)外部时钟。当重装载数值寄存器的值递减到 0 的时候,系统定时器就产生一次中断,将从RELOAD 寄存器中自动重装载定时初值,开始新一轮计数,以此循环往复。只要不把它在 SysTick 控制及状态寄存器中的使能位清除,就永不停息。

SysTick定时器位于在NVIC中,用于产生SysTick异常,并且SysTick中断的优先级也可以设置。

参考建议

SysTick有四个寄存器,分别为CTRL(控制与状态寄存器)、LOAD(自动重装载值寄存器)、VAL(当前值寄存器)、CALIB(校准值寄存器)。配置参考链接:

Cortex-M0中断控制和系统控制

案例十二

MM32F0040 有几种看门狗?它们分别有什么作用?

分析案例

MM32 系列 MCU 都有两个看门狗:独立看门狗和窗口看门狗。

独立看门狗:

独立看门狗是一个 12 位的递减计数器,当计数器的值从某个值一直减到 0 的时候,系统就会产生一个复位信号或者中断信号,即 IWDG_RESET或IWDG_IRQ。如果在计数没减到 0 之前,刷新了计数器的值的话,那么就不会产生复位信号,这个动作就是我们经常说的喂狗。

独立看门狗的时钟由独立的 RC 振荡器 LSI 提供,即使主时钟发生故障它仍然有效,有独立的时钟源,可以与内部高速时钟形成相互监督的功能。LSI 的频率一般在 20~80KHz 之间,根据温度和工作场合会有一定的漂移,我们一般取 40KHz,所以独立看门狗的定时时间并不是非常精确,只适用于对时间精度要求比较低的场合。

“MM32F0040使用总结

窗口看门狗:

窗口看门狗跟独立看门狗一样,也是一个递减计数器不断的往下递减计数,当减到一个固定值 0x40 时还不喂狗的话,产生复位,这个值叫窗口的下限,是固定的值,不能改变。这个是跟独立看门狗类似的地方,不同的地方是窗口看门狗的计数器的值在减到某一个数之前喂狗的话也会产生复位,这个值叫窗口的上限,上限值由用户独立设置。窗口看门狗计数器的值必须在上窗口和下窗口之间才可以喂狗。

“MM32F0040使用总结

参考建议

独立看门狗的设计初衷是为了检测和解决由软件错误所引起的故障,它的原理可简述为:当独立看门狗(IWDG)计数器不断递减到达给定数值时,产生一个系统复位信号使系统复位,从而提高系统整体安全性能。

在 MM32F0040 中,独立看门狗可以配置成不复位系统的外部中断方式,可用于对时钟精度要求不高的短周期低功耗唤醒的应用场景。

硬件看门狗及选项字节操作配置参考链接:

硬件看门狗及选项字节操作

窗口看门狗就是其喂狗时间有上下限范围的(窗口) 看门狗,主要用于检测由外部干扰和可预测的逻辑条件导致程序跑飞所引起的软件问题。

案例十三

MM32F0040 的 I2C 接口有两种速率模式,我们在实际应用中需要注意些什么吗?

分析案例

MM32F0040 的 I2C 支持两种速率模式:

  • 标准模式,数据传输速率为 0~100kbps
  • 快速模式,数据传输速率最大为400kbps

I2C 接口是挂载在 PCLK1 时钟总线上的,为达到标准I2C 的最大频率,要求 PCLK1 的时钟频率必须大于 3MHz;为达到快速 I2C 的最大频率,要求 PCLK1 的时钟频率必须大小 12MHz。

MM32F0040 的 I2C 接口符合标准 I2C 通信协议,但有如下限制:SDA 和 SCK 不是“真”的开漏引脚,当配置为开漏输出时,在引出脚和 VDD 之间的 PMOS 管被关闭,但仍然存在,这个在实际应用电路设计时,需要关注。

案例十四

MM32F0040 的 UART 通讯波特率容忍度如何?

分析案例

在实际项目中使用 UART 接口与其它设备进行通讯交互数据时,由于运行环境等多因素的影响,存在因时钟偏差导致收发双方波特率产生偏差的情况。MM32F0040 为了提高接收端对波特率变化的容忍度,在 STOP 状态时,当三次数据采样完成后,接收端就会开始准备下一帧数据的接收。当收发双方波特率偏差处于 ±3% 以内时,仍然能够保证数据的正确传输。

同时 MM32F0040 支持硬件波特率自适应功能,配置参考链接:

UART硬件波特率自适应

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

围观 19

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

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

案例一

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

分析案例

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

参考建议

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

案例二

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

分析案例

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

参考建议

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

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

https://www.mindmotion.com.cn/support/ecosystem_partner/

案例三

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

分析案例

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

参考建议

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

案例四

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

分析案例

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

参考建议

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

案例五

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

分析案例

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

参考建议

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

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

案例六

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

分析案例

RCC

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

UART

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

中断

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

FLASH

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

ADC

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

PWR

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

TIM1

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

参考建议

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

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

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

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

案例七

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

分析案例

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

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

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

参考建议

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

案例八

MM32F0040 的低功耗有几个模式?

分析案例

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

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

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

参考建议

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

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

围观 35
订阅 RSS - MM32F0040