基本原理
模拟比较器比较两个输入电压信号:
正输入端(+):连接你想监测的电压,比如电池电压。
负输入端(-):连接一个参考电压(可用内部参考或DAC生成的电压)。
当正输入电压低于负输入参考电压时,比较器输出翻转,可触发中断或控制其他逻辑。
配置步骤
1. 开启比较器模块时钟
确保你开启了比较器所需的外设时钟(如 RCC 中的 COMP 时钟)。
2. 配置比较器输入
根据具体芯片型号(如MM32F103、MM32L073等),配置:
IN+(正输入) 接入电池或外部电压。
IN−(负输入) 选择内部参考电压或DAC输出(例如1.2V、2.0V等)。
示例(伪代码):
c
复制
编辑
COMP_InitStructure.INP = COMP_INP_IO; // 外部电压输入
COMP_InitStructure.INM = COMP_INM_VREF; // 内部参考电压
3. 配置参考电压源
若支持内部参考电压,可选择不同电压档位(如1.2V、2.0V)。
若芯片支持DAC输出给IN−,可精细调整报警电压阈值。
c
复制
编辑
DAC_SetChannel1Data(DAC_Align_12b_R, 2048); // 对应1.65V参考
4. 配置输出行为
可以输出到引脚供外部查看。
更常用的是中断模式,在比较结果变化时触发中断处理。
c
复制
编辑
COMP_ITConfig(COMP_Selection_COMP1, ENABLE);
NVIC_EnableIRQ(COMP1_IRQn);
5. 中断服务函数中处理报警
c
复制
编辑
void COMP1_IRQHandler(void) {
if(COMP_GetITStatus(COMP_Selection_COMP1)) {
// 电压低于阈值 —— 执行报警逻辑
TriggerLowVoltageAlarm();
COMP_ClearITPendingBit(COMP_Selection_COMP1);
}
}
配置技巧与建议
滤波配置:为防止电压波动引起误判,建议配合比较器的**迟滞功能(hysteresis)**或软件防抖处理。
参考电压选择:使用内部DAC或VREF模块可灵活设定阈值电压,提升精度。
低功耗需求:比较器通常可在待机模式下运行,适合低功耗场景。
应用示例:低电压阈值为 3.0V
电池电压接 IN+。
内部DAC 设置为 3.0V(或接近)。
当电池电压下降至 3.0V 以下时,比较器输出翻转,系统触发报警。
|