跳转到主要内容

MM32

MM32 MCU之BKP备份寄存器

judy /

<strong>一、MM32 BKP简介及功能描述</strong>

在使用MCU的过程中,当系统在待机模式下被唤醒,或者系统复位或电源复位时,会导致我们在RAM中的一些重要数据丢失,此时该怎么处理呢?MM32为我们提供了备份寄存器(BKP), 备份寄存器是 10 个 16 位的寄存器,可用来存储 20 个字节的用户应用程序数据。他们处在备份域里,当 1.5V 电源被切断,他们仍然由 VDD维持供电。当系统在待机模式下被唤醒,或系统复位或电源复位时,他们也不会被复位。
复位后,对备份寄存器的访问被禁止,并且备份域被保护以防止可能存在的意外的写操作。通过设置寄存器 RCC_APB1ENR 的 PWREN 位来打开电源和后备接口的时钟,可以用半字(16 位)或字(32 位)的方式操作这些外设寄存器。

<strong>二、BKP实验分析</strong>

&nbsp; • &nbsp; 实验内容简介

以MM32L073PF为例,往BKP写数据,如果成功则LED慢闪,如果失败则LED快闪。

&nbsp; • &nbsp; 实验代码分析

MM32 定时器捕获比较器输出

judy /

MM32L0系列MCU内嵌两个通用比较器 COMP1 和 COMP2,为通用的可编程电压比较器,可独立使用(适用所有终端上的 I/O 口),也可与定时器结合使用, 支持两个独立的比较器。它们可用于多种功能,包括:由模拟信号触发低功耗模式唤醒事件调节模拟信号与 DAC 和定时器输出的 PWM 相结合,组成逐周期的电流控制回路。

<center><i>比较器框图</i></center><center><img src="http://mcu.eetrend.com/files/2018-04/wen_zhang_/100011030-38835-00.jpg&…; alt="MM32 定时器捕获比较器输出"></center>

COMPx信号宽度需要测量的输入信号连接到 PA0-PA7。参考信号可通过以下方式供电:

MM32 独立看门狗(IWDG)

judy /

<strong>一、IWDG简介</strong>

MM32 MCU内置两个看门狗,提供了更高的安全性、时间的精确性和使用的灵活性。两个看门设备(独立看门狗和窗口看门狗)可用来检测和解决由软件错误引起的故障;当计数器达到给定的超时值时,触发一个中断(仅适用于窗口型看门狗)或产生系统复位。

独立看门狗(IWDG)由专门的低速时钟(LSI)驱动,即使主时钟发生故障它也仍然有效。窗口看门狗从APB1时钟分频后得到的时钟驱动,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的操作。

IWDG最适合应用于那些需要看门狗作为一个正在主程序外,能够完全独立工作,并且对时间精度要求低的场合。WWDG最适合那些要求看门狗在精确计时窗口起作用的应用程序。

<strong>二、IWDG主要性能</strong>

自由运行的递减计数器

时钟由独立的振荡器提供(可在停止和待机模式下工作)
看门狗被激活后,则在计数器计数至 0x0000 时产生复位。

<strong>三、IWDG 功能描述</strong>

下图为独立看门狗模块的功能框图。

如何使用定时器做脉冲计数?

judy /

<strong>一、应用简介</strong>

在实际应用的一些产品上可能需要使用到对脉冲的个数进行计数,本文小编将给大家介绍如何使用TIM来做一个脉冲计数的功能。在MM32 TIM中正好有一个外部时钟模式1可以来帮助我们实现这个功能。

<strong>二、外部时钟源模式1描述</strong>

首先我们来了解一下外部时钟源模式1,当 TIMx_SMCR 寄存器的 SMS = 111 时,此模式被选中。计数器可以在选定输入端的每个上升沿或下降沿计数。下图是TI2外部时钟连接例子。
<center><img src="http://mcu.eetrend.com/files/2018-03/wen_zhang_/100010842-38058-1.jpg&q…; alt="如何使用定时器做脉冲计数"></center>

MM32 六步PWM输出

judy /

针对电动马达方案中需要使用到六步PWM输出功能,本篇文章将向大家介绍如何使用MM32L0系列MCU实现六步PWM输出功能。

MM32高级控制定时器TIM1有互补输出的功能,我们便可以利用定时器 TIM1 来产生 3 对 6 路的互补 PWM 输出。MM32高级控制定时器TIM1产生六步PWM输出,用于驱动三相电机,对应着直流无刷电机的六步换相。

六步 PWM 产生:当在一个通道上应用了互补输出时, OCxM、CCxE 和 CCxNE位的预载位有效,这些预装载位被传送到影子寄存器,因此可以预先设置好下一步的配置,并在同一时间更改所有通道的配置。COM 事件可以通过硬件(在 TRGI的上升沿) 设置或者软件修改TIM1_EGR 寄存器的 COM 位来产生。

当 COM 事件发生时会设置一个标志位(TIM1_SR 寄存器中的 COMIF 位),这时如果已设置了TIM1_DIER 寄存器的 COMIE 位,则产生一个中断;如果已设置了 TIMx_DIER寄存器的COMDE位,则产生一个DMA请求。

MM32如何使用比较器产生中断

judy /

<strong>一、比较器简介</strong>

在实际应用过程中有时候我们需要去判断两个变化的电压大小,在不同变化时需要做出不同的反应,这时候我们就可以用到比较器。MM32系列芯片内嵌两个通用比较器COMP1和COMP2, 比较器为通用的可编程电压比较器,支持两个独立的比较器。可独立使用(适合所有终端上的I/O),也可与定时器结合使用。它们可用于多种功能,包括:
• 由模拟信号触发低功耗模式唤醒事件
• 调节模拟信号
• 与 DAC 和定时器输出的 PWM 相结合,组成逐周期的电流控制回路

本文主要介绍一下如何通过比较器产生中断。

<strong>二、比较器功能描述</strong>

1、比较器输入输出介绍:

MM32 IAP中断向量表重定义

judy /

有客户需要用到MM32L073,需要通过IAP进行固件升级,在FLASH里面要烧录两份代码:一个Boot loader,一个用户应用程序。在开发应用程序时,使用中断函数不能相应中断。

在开发IAP的用户应用程序时,必须得重新映射中断向量表,中断向量表即某个中断服务程序的入口地址的集合。

在Cortex-M3内核的MCU上可以通过设置SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET;该寄存器的值来实现中断向量表的重定义。但用户反馈在MM32L0xx系列以Cortex-M0为内核的单片机中却怎么也找不到这个设置中断向量表的寄存器,用户可以通过以下方法来实现中断向量表重定义。

实现方法基本思想:

MM32 基于PWM做DAC输出设计

judy /

有客户需要用到高精度的DAC模块,MM32L0系列产品内部没有集成DAC模块,考虑到外接DAC芯片会增加成本,所以在本实验中将为大家介绍使用PWM输出,经过简单的变换电路即可实现DAC,这将大量降低电子设备的成本、减少体积,并提高精度。本实验在PWM到DAC转换关系的理论分析基础上,设计出输出为0~5V电压的DAC。

MM32L0系列产品包含1个高级控制定时器、5个通用定时器(1个32 位定时器和5个16 位定时器),以及 2个看门狗定时器和1个系统嘀嗒定时器。

每个定时器都有 PWM 输出或单脉冲模式输出,所以MM32L0系列产品任意一款型号都可以用PWM做DAC输出功能。

MM32 呼吸灯功能

judy /

呼吸灯,就是指电子产品上的LED灯的亮度随着时间由暗到亮逐渐增强,再由亮到暗逐渐衰减,有节奏感地一起一伏,就像是在呼吸一样,因而被广泛应用于手机、电脑等电子设备的指示灯中。在使用MCU开发相关的应用产品中也可以加入呼吸灯功能,增强用户的体验感,在本实验中将介绍如何使用MM32L0系列产品芯片做呼吸灯功能。

在平时应用中可以知道,MCU的GPIO输出高低电平变化可以实现LED灯的亮、灭两个过程,如果GPIO的电平一直维持高电平或者低电平,LED灯就处于长亮或长灭的状态,呼吸灯就是通过较高频率的电平变化来实现亮灭的切换,由于人的视觉暂留效应,肉眼无法迅速捕捉快速亮灭变化的过程,所以在视觉中一直出现一直亮或者灭的状态,通过调整占空比可以控制LED灯的亮度,给人视觉上一种灯光由暗到亮逐渐增强,然后又由亮到暗逐渐衰减。

正常的成年人的吸气呼气时间整个过程持续大约3秒时间,即吸气时间(LED灯亮度逐渐变亮)时间为1.5S,吸、呼气时间(LED灯亮度逐渐变暗)时间为1.5S。

亮度随着时间逐渐变强再衰减,可以用两种算数方式实现:半周期的正弦函数曲线和指数上升曲线及对称的下降沿曲线。

MM32 定时器操作

judy /

<font color="#33b1c8"><strong>1、定时器同步</strong></font>

在MM32L073一个定时器有4 通道 PWM 输出,有客户在应用中需要使用两个定时器控制6路PWM输出,为了使两个定时器的PWM输出相同的波形,所以需要两个定时器实现同步功能。

所有 TIMx 定时器在内部相连,用于定时器同步或链接。当一个定时器处于主模式时,它可以对另一个处于从模式的定时器的计数器进行复位、启动、停止或提供时钟等操作。

MM32L073的每个定时器都可以由另一个定时器触发启动定时器一般是通过软件设置而启动,MM32L073的每个定时器也可以通过外部信号触发而启动,还可以通过另外一个定时器的某一个条件被触发而启动。这里所谓某一个条件可以是定时到时、定时器超时、比较成功等许多条件。这种通过一个定时器触发另一个定时器的工作方式称为定时器的同步,发出触发信号的定时器工作于主模式,接受触发信号而启动的定时器工作于从模式。