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

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

3天内不再提示

CW32L083模拟电压比较器的使用

武汉芯源半导体有限公司 2022-12-20 14:44 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

CW32L083 内部集成 2 个模拟电压比较器(VC),用于比较两路模拟输入电压,并将比较结果从引脚输出。两路信号的正端支持8路外部模拟输入,负端既支持外部输入,也支持内部电压基准等四种内部电压参考。比较结果输出具有滤波功能、迟滞窗口功能,以及极性选择。支持比较中断,可用于低功耗模式下唤醒 MCU

模拟电压比较器主要特性

• 双路模拟电压比较器 VC1、VC2

• 内部64阶电阻分压器

• 多达8路外部模拟信号输入

• 4路片内模拟输入信号

- 内置电阻分压器输出电压

- 内置温度传感器输出电压

- 内置1.2V基准电压

- ADC参考电压

• 可选择输出极性

• 支持迟滞窗口比较功能

• 可编程滤波器和滤波时间

• 3种中断触发方式,可组合使用

- 高电平触发

- 上升沿触发

- 下降沿触发

• 支持低功耗模式下运行,中断唤醒 MCU

下图为模拟电压比较器的功能框图:

pYYBAGOhWPyALXJEAANS13DYdI4770.jpg

VC模拟电压比较器将两路模拟信号比较时可配置多种参数,如VC1_CR0.EN和VC1_CR0.HYS位分别控制VC使能及VC迟滞窗口配置。VC1_CR0.POL控制输出结果极性,后端还有窗口比较功能配置及数字滤波模块的配置。

VC1、VC2 的正负端输入选择,由控制寄存器 VCx_CR0 的 INP、INN 位域选择,如下表所示:

poYBAGOhWPuAa6drAAGx6s8FHMI172.jpg

模拟电压比较器支持 8路外部模拟信号输入,用户必须将对应 GPIO端口配置为模拟功能(GPIOx_ANALOG.PINy = 1)。模拟电压比较器支持将比较结果从引脚输出,用户必须将对应 GPIO 端口配置为数字输出,同时选择功能复用。VC1、VC2 支持的输入输出引脚如下表所示:

pYYBAGOhWPuAd_SoAAJJNh9DzBg778.jpg

模拟电压比较器还具有延迟/响应时间配置,从VC使能或VC的正负两端输入电压变化,到电压比较器输出正确比较结果的时间,被定义为比较器的延迟/响应时间。延迟/响应时间由控制寄存器 VCx_CR0 的 RESP 位域配置,响应时间值从200ns到20μs四档可调。

模拟电压比较器可进行输出极性选择,由控制寄存器VCx_CR0的POL位域设置,POL为1,即正端大于负端时VCx输出低电平;POL为0,正端大于负端时VCx输出高电平。

模拟电压比较器具有数字滤波功能,电压比较器内置的数字滤波器,用于对电压比较器的输出信号进行数字滤波,由控制寄存器VCx_CR1的FLTEN位域控制,FLTEN为1使能数字滤波,FLTEN为0禁止数字滤波。

模拟电压比较器支持迟滞功能,使用迟滞功能后,比较器的输出结果不会随输入信号的变化而立即翻转,而是在两路输入信号的偏移值高于或低于迟滞阈值电压后才发生翻转。迟滞阈值电压由控制寄存器VCx_CR0的HYS位域决定,配置为00时,没有迟滞;配置为01时迟滞窗口大约10mV;配置为10时,迟滞窗口大约为20mV;配置为11时,迟滞窗口大约30mV。

模拟电压比较器支持窗口比较功能,可将VC1和VC2的比较结果进行异或操作后输出,由控制寄存器VCx_CR0的WINDOW位域使能。WINDOW为1时,VCx_OUTW信号为 VC1_OUTP信号与VC2_OUTP 信号的异或值;WINDOW为0时,VCx_OUTW信号与VCx_OUTP 信号电平相同。

模拟电压比较器支持BLANK窗口功能,在保持VCx模块工作的同时,如果想暂时停止电压比较功能,或者为避免某些应用系统(比如电机控制)中,被监测信号短时间的合理波动造成电压比较器的输出电平发生不必要的翻转,本芯片的电压比较器增加了BLANK窗口功能,即当指定的外部触发条件启动BLANK窗口时,在设定的BLANK窗口期内,不进行电压比较,电压比较器的输出电平保持当前电平状态。BLANK窗口期之后,电压比较器恢复正常工作。BLANK窗口持续时间,由控制寄存器 VCx_CR1的BLANKFLT位域配置。BLANK窗口的触发启动条件,由控制寄存器VCx_CR1的 BLANKCH1B、BLANKCH2B、BLANKCH3B位域配置,分别由ATIM的CH1B、CH2B、CH3B上升沿触发启动BLANK窗口。

CW32L083 的电压比较器支持在低功耗模式下工作,比较中断可将芯片从低功耗模式下唤醒。设置控制寄存器 VCx_CR0 的 IE 位域为 1,使能 VCx 中断,产生中断时状态寄存器 VCx_SR 的中断标志位 INTF 会 被硬件置 1,用户可以向 INTF 位写 0,清除中断标志。

设置控制寄存器 VCx_CR1 的 HIGHIE、RISEIE、FALLIE 位域,可选择不同的中断触发方式:

• HIGHIE 为 1,VCx_OUT 输出信号高电平触发中断

• RISEIE 为 1,VCx_OUT 输出信号上升沿触发中断

• FALLIE 为 1,VCx_OUT 输出信号下降沿触发中断

根据上述内容介绍以下例程,通过VC模块输出信号的上升沿/下降沿触发中断功能。

//VC I/O初始化

void VC_PortInit(void)

{

GPIO_InitTypeDef GPIO_InitStructure = {0};

//打开GPIO时钟

REGBITS_SET( CW_SYSCTRL->AHBEN, SYSCTRL_AHBEN_GPIOA_Msk );

//打开VC时钟

REGBITS_SET( CW_SYSCTRL->APBEN2, SYSCTRL_APBEN2_VC_Msk );

//set PA11 as output

GPIO_InitStructure.Pins = GPIO_PIN_11;

GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;

GPIO_Init(CW_GPIOA, &GPIO_InitStructure);

//set PA11 as VC output

PA11_AFx_VC1OUT();

//set PA00 as VC1_CH0 P-INPUT

PA00_ANALOG_ENABLE();

//set PA01 as VC1_CH1 N-INPUT

PA01_ANALOG_ENABLE();

}

int main(void)

{

VC_InitTypeDef VC_InitStruct = {0};

VC_BlankTypeDef VC_BlankStruct = {0};

VC_OutTypeDef VC_OutStruct = {0};

//LED初始化

LED_Init();

//配置测试IO口

VC_PortInit();

//VC通道初始化

VC_InitStruct.VC_InputP = VC_InputP_Ch0;//将VC正端输入为PA00的输入信号

VC_InitStruct.VC_InputN = VC_InputN_Bgr1P2; //将VC负端输入设置为内部1.2V基准电压

VC_InitStruct.VC_Hys = VC_Hys_10mV;//将VC迟滞功能配置为10mV

VC_InitStruct.VC_Resp = VC_Resp_High;//VC反应速度为高速

VC_InitStruct.VC_FilterEn = VC_Filter_Enable;//VC数字滤波模块开启

VC_InitStruct.VC_FilterClk = VC_FltClk_RC150K;//VC数字滤波时钟为150KHz的RC振荡器

VC_InitStruct.VC_FilterTime = VC_FltTime_4095Clk;//VC的数字滤波时间配置为滤波小于4095个时钟信号

VC_InitStruct.VC_Window = VC_Window_Disable;//VC窗口比较功能关闭

VC_InitStruct.VC_Polarity = VC_Polarity_Low;

VC1_ChannelInit(&VC_InitStruct);

//VC Blank窗口初始化

VC1VC2_BlankInit(&VC_BlankStruct);

VC1_BlankCfg(&VC_BlankStruct);

//VC输出连接初始化

VC1VC2_OutInit(&VC_OutStruct);

VC1_OutputCfg(&VC_OutStruct);

//VC中断设置

VC1_ITConfig(VC_IT_FALL | VC_IT_RISE, ENABLE);

VC1_EnableIrq(VC_INT_PRIORITY);

VC1_ClearIrq();

VC1_EnableChannel();

while (1)

{

if(gFlagIrq)

{

PC03_TOG();

gFlagIrq = FALSE;

}

}

}

//LED I/O初始化

void LED_Init(void)

{

GPIO_InitTypeDef GPIO_InitStructure = {0};

//打开GPIOC时钟

REGBITS_SET(CW_SYSCTRL->AHBEN, SYSCTRL_AHBEN_GPIOC_Msk);

GPIO_InitStructure.Pins = GPIO_PIN_2 | GPIO_PIN_3;

GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;

GPIO_Init(CW_GPIOC, &GPIO_InitStructure);

//LED的初始状态为灭

PC02_SETLOW();

PC03_SETLOW();

}

//VC1的中断服务函数

void VC1_IRQHandler(void)

{

VC1_ClearIrq();

gFlagIrq = TRUE;

}

实验现象

使用电源向PA00输入电压,PA11被复用为VC1的比较结果输出引脚,当电压大于1.2V时, PA11输出高电平,当PA00输入电压小于1.2V时,PA11输出低电平,而当PA00的输入电压由1.2V以下变为1.2V以上或者从1.2V以上变为1.2V以下,LED的状态会发生翻转。

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

    关注

    6074

    文章

    45334

    浏览量

    663295
  • mcu
    mcu
    +关注

    关注

    147

    文章

    18604

    浏览量

    386554
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    CW32单片机在智能马桶的应用

    低功耗定时(LPTIM) ● 4×56、6×54 或 8×52 LCD 段码液晶驱动 ● TRNG 真随机数发生● AES 高级加密标准模块 CW32L083系列产品适用于对FL
    发表于 12-04 08:01

    CW32系列MCU在温控应用的优势

    等级 2.手机APP无线温控,采用的是CW32L083RBT6 ● 最高主频 64MHz ● 工作温度:-40℃ 至 85℃;工作电压:1.65V 至 5.5V ● HBM ESD、MM ESD
    发表于 12-03 07:12

    请问一下,CW32L083VCT6的DeepSleep模式下,功耗一般在多少?

    请问一下,CW32L083VCT6的DeepSleep模式下,功耗一般在多少?
    发表于 12-03 06:14

    CW32定时及中断介绍

    CW32L083为例,其定时分为6种: 基本定时CW32L083 内部集成 3 个基本定时 (BTIM),每个 BTIM 完全独
    发表于 12-01 07:08

    GCC开发工程的模版

    1、拷贝一份工程,另存为cw32l083_gcc,并用vscode打开。 2、到官网下载cw32l083的固件库。 3、把cw32l083-stdperiph-lib/Libraries下面的固件
    发表于 11-28 08:15

    CW32L010_ADC介绍

    一、CW32L010_ADC特性概述 分辨率与采样率:CW32L010的ADC具有12位分辨率,这意味着它能够提供较高的精度。同时,其采样率可达2M,这使得ADC能够快速地采集模拟信号,并将其转换
    发表于 11-28 07:52

    CW32L010用FLASH模拟EEPROM

    CW32L010横空出世,定时和ADC变化很大,FLASH基本和以前型号一样,但有一点改动,BUSY位从CR1寄存改到ISR寄存了。 把F003的程序改改就能用,太棒了,拿走不谢
    发表于 11-24 07:40

    CW32L083有哪些应用场景?

    CW32L083有哪些应用场景
    发表于 11-24 07:37

    pwm关闭后,有杂波怎么解决?

    使用cw32l083的芯片,用GTIM3-CH3,PA11输出38K的pwm发送红外信号,使能定时后,即使占空比设为0,也会输出杂波,或者关闭定时,也会有杂波,大概要怎么配置呢?
    发表于 11-24 07:08

    CW32L010低成本BLDC电机控制开发套件的使用

    系统运行提供时基。 板上ADC的实现无感BLDC电机反电动势、母线电流转换的电压值、供电电压以及电位电压模拟量的检测,采集到的
    发表于 11-17 07:39

    CW32 MCU的工作电压、工作温度是多少?

    32F003、CW32F002等,其工作温度为-40℃~105℃,其余系列,比如:CW32L083CW32L031等低功耗系列,以及CW32R、C
    发表于 11-12 06:49

    CW32 MCU最低功耗能做到多少?

    CW32L系列,比如:CW32L083CW32L031在深度休眠模式下,电流可低至600nA以下,CW32L010则可低至0.3uA;其它系列,比如:
    发表于 11-12 06:24

    基于CW32L010的高性能温控方案

    武汉芯源半导体的明星产品CW32L010系列MCU凭借其ARM Cortex-M0+内核、超低功耗特性以及丰富的外设接口,为温控设计提供了理想的解决方案。 本文将介绍无锡梓轩电子基于武汉芯源半导体低功耗CW32L010单片机开
    的头像 发表于 07-02 09:47 964次阅读
    基于<b class='flag-5'>CW32L</b>010的高性能温控<b class='flag-5'>器</b>方案

    基于CW32L010的高性能温控方案

    温控作为环境控制系统中的核心设备,广泛应用于工业自动化、智能家居、农业温室等诸多领域,正朝着智能化、精准化和低功耗方向发展。武汉芯源半导体的明星产品CW32L010系列MCU凭借其ARM
    发表于 07-02 09:46

    CW32L010 ESC Driver 电机控制套件使用

    。 板上ADC的实现无感BLDC电机反电动势、母线电流转换的电压值、供电电压以及电位电压模拟量的检测,采集到的
    发表于 06-13 18:12