你好!欢迎来到深圳市颖特新科技有限公司!
语言
当前位置:首页 >> MM32/灵动微电子 >> MM32SPIN2x 电机专用MCU功能特色——电压比较器

MM32SPIN2x 电机专用MCU功能特色——电压比较器

作者: 来源: 发布时间:2018-12-27  浏览:21
上一章节中已经教大家如何使用MM32SPIN2x的硬件除法器和硬件开方器,本章节将与大家一起配置MM32SPIN2x的内嵌比较器。
 
电压比较器能够作为模拟电路与数字电路的接口,可以用作波形产生和变换电路,针对电机应用中的过流比较等功能,MM32SPIN2x内部集成了五个独立的电压比较器,使得单片机更加方便地和外部的模拟电路进行连接,减小了单片机系统硬件电路设计的复杂性,缩小了单片机应用系统的物理尺寸和物料成本。


芯片内嵌五个通用比较器 COMP1、 COMP2、 COMP3、 COMP4 和 COMP5,可独立使用(适用所有终端上的 I/O 口),也可与定时器结合使用。它们可用于多种功能,包括:
• 由模拟信号触发低功耗模式唤醒事件
• 调节模拟信号
• 与定时器输出的 PWM 相结合,组成逐周期的电流控制回路
• 支持五个独立的比较器
 
MM32SPIN2x内嵌比较器的反相输入可选为内部比较电压 CRV 可选择 AVDD 或者内部基准电压Vref的分压电压值,这个功能可以起到窗口比较器的功能,也可以实现过流过压保护和掉电保护等功能。输出可以选择为IO端口,也可以重定向到定时器的输入端,或触发外部中断。比较器有可选的滤波周期和迟滞电压,能够最大程度的消除输入电压波动带来的干扰。四种工作模式,在具体应用中可以通过调整比较器功耗和相应时间得到最优的结果。带有比较器轮询的功能,一个比较器可以分时复用实现多个比较器的功能。出于安全的考虑,在某些特定的有较高安全需求的应用中,为了保证比较器设置不能被无效寄存器访问或者程序计数器破坏所改变,可以将比较器控制和状态寄存器设为写保护(只读)。               




图1 比较器框图
 
MCU内嵌三个单通道比较器和两个四通道比较器, 功能包括:
• 由模拟信号触发低功耗模式唤醒事件
• 调节模拟信号
• 定时器输出的 PWM 相结合,组成逐周期的电流控制回路
• 支持五个独立的比较器
• 轨对轨比较器
• 每个比较器有可选门限
– 可复用的 I/O 引脚
– 内部比较电压 CRV 可选择 AVDD 或者内部基准电压的分压电压值
• 可编程迟滞电压
• 可编程的速率和功耗
• 支持比较结果的滤波功能
• 输出端可以重定向到一个 I/O 端口或多个定时器输入端,可以触发以下事件:
– 捕获事件
– OCref_clr 事件(逐周期电流控制)
– 为实现快速 PWM 关断的刹车事件
• 两个比较器可以组合在一个窗口比较器中使用
• COMP1/2/3 只有一个正相输入和一个反相输入
• COMP4/5 有 4 个正相输入和 4 个反相输入,带有轮询功能:
– 可以实现定周期切换的轮询功能
– 可控制轮询通道 1/2/3 或 1/2
– 可选固定反向输入端
• 每个比较器都可产生中断,并支持把 CPU 从睡眠和停机模式唤醒(通过 EXTI 控制器)特别地,四通道比较器COMP4/5的输入通道可以在普通模式通过软件选择,也可以在轮询工作模式下通过硬件轮询的方式分时检测多个通道的比较结果,类似于多个比较器同时工作。
 
下面教大家如何配置使用MM32SPIN2x内置比较器。
 
本文使用的是比较器4,首先打开比较器时钟使能,然后通过配置寄存器COMP->COMP4_CSR来选择比较器的正相输入、反相输入以及输出,使用PA6作为COMP4正相输入,CRV选择1/2VDD作为比较器反相输入,输出脚使用IO口PA11,输出滤波为64个时钟周期,迟滞电压90mv,消除电压扰动带来的误差。最后使能比较器,并打开比较器锁,防止比较器配置被更改。
 
比较器配置代码:
void Comp4_Config(void)
{            
RCC->AHBENR |= RCC_AHBENR_GPIOAEN;  //使能GPIO时钟
RCC->APB2ENR |= RCC_APB2RSTR_CPTEN; //使能比较器时钟
 
GPIOA->CRH &= 0xFFFF0FFF;
GPIOA->CRH |= 0x0000B000; //COMP4_OUT-PA11
      
GPIOA->AFRH &= 0xFFFF0FFF;//复位GPIOA端口复用功能寄存器
GPIOA->AFRH |= 0x00007000;
 
COMP->COMP4_CSR  = 0x00000000; //复位比较器控制状态寄存器
COMP->COMP4_CSR |= 1<<7;//COMP4_INP3(PA6)为比较器正相输入
COMP->COMP4_CSR |= 3<<4;//CRV为比较器反相输入
COMP->COMP4_CSR |= 4<<18;//比较器输出滤波为64个时钟周期
COMP->COMP4_CSR |= 3<<16;//比较器迟滞电压90mv
COMP->COMP4_CSR |= 3<<2;//COMP4为高速率模式
      
COMP->COMP_CRV = 0x00000000;//复位比较器外部参考电压寄存器
COMP->COMP_CRV |= 3<<4;  //比较器外部参考电压使能,选择AVDD为比较器外部参考电压源
COMP->COMP_CRV |= 9; //比较器外部参考电压分压选择,为10/20AVDD
COMP->COMP4_CSR |= 0x1;         //使能COMP4
COMP->COMP4_CSR |= 1<<31;            //打开比较器写保护
}
主程序:
int main(void)
{
delay_init();
Comp4_Config();
while(1)
{
;
}     
}
 
将COMP4的正相输入脚(PA6)接10KHz方波,使用内部的CRV作为反相输入的信号源,CRV选择为1/2AVDD电压。下图是使用示波器观察到的COMP4_OUT(PA11)引脚波形:


图2 测试结果波形
 
通道1是正相输入的100Hz方波,幅值4v的三角波行,通道2是比较器输出脚的波形,且相较于输入波形有600ns(64个时钟周期滤波周期)左右滞后,符合程序设置。

编辑:admin  最后修改时间:2018-12-27

联系方式

0755-82591179

传真:0755-82591176

邮箱:vicky@yingtexin.net

地址:深圳市龙华区民治街道民治大道973万众润丰创业园A栋2楼A08

Copyright © 2014-2023 颖特新科技有限公司 All Rights Reserved.  粤ICP备14043402号-4