灵动MCU完全可以实现“无需MCU干预”的硬件电压报警机制,也就是不依赖主核(CPU)运行,直接通过模拟比较器 + 引脚控制,实现掉电时触发LED、蜂鸣器、继电器等的响应。
实现原理概览
灵动MCU(如 MM32F103、MM32L0 系列)通常集成**模拟比较器(COMP)**模块,它支持:
比较外部电压与内部参考电压
比较结果输出到GPIO引脚
无需CPU参与即可响应越界
利用这一机制,可以配置比较器为“掉电判断器”,其输出直接驱动报警装置或控制电路。
应用示意图
css
复制
编辑
电池/被监测电压
│
[电阻分压]────┐
│
┌──────┐ ↓
│ COMP │───→ GPIO输出(可直接驱动LED/蜂鸣器)
内部参考 │ │
电压 └──────┘
具体实现步骤
1. 配置 COMP 模块(比较器)
正输入端(INP):接入被监控电压(通常分压后的电压)
负输入端(INM):连接内部参考电压(如 1.2V、2.0V)
配置为输出到某 GPIO 引脚
设置比较器输出极性(正常或反向)
2. 配置 GPIO 为推挽输出(或OD开漏)
可直接驱动 LED(加限流电阻)、小蜂鸣器或MOS管控制继电器等
若蜂鸣器需要较大电流,需用比较器输出控制三极管/MOSFET
代码伪示例(灵动MM32风格)
c
复制
编辑
// 配置比较器 COMP1
COMP_ConfigType COMP_InitStructure;
COMP_InitStructure.INM = COMP_INM_VREFINT; // 负输入:内部参考
COMP_InitStructure.INP = COMP_INP_PIN_PA1; // 正输入:电压采样引脚
COMP_InitStructure.Mode = COMP_Mode_LowPower;
COMP_InitStructure.Output = COMP_Output_GPIO; // 输出到GPIO
COMP_InitStructure.OutputPol = COMP_OutputPol_NonInverted;
COMP_InitStructure.Hysteresis = COMP_Hysteresis_Medium;
COMP_Init(COMP1, &COMP_InitStructure);
COMP_Cmd(COMP1, ENABLE);
// 配置输出引脚(例如PA6)为推挽输出
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.Pin = GPIO_Pin_6;
GPIO_InitStructure.Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.Speed = GPIO_Speed_10MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
一旦电压低于设定值,COMP输出状态将变化,直接让LED点亮、蜂鸣器响,无需中断、中断服务函数或主程序参与。
|