[RA4 & RA6] 【瑞萨不常用的外设】 10 ACMP 高速模拟比较器

[复制链接]
4|0
梨花若雪 发表于 2026-9-17 15:25 | 显示全部楼层 |阅读模式
本帖最后由 梨花若雪 于 2026-9-17 15:27 编辑

        瑞萨RA系列里还有一个极度容易被忽略的模拟类冷门外设——ACMP(Analog Comparator)高速模拟比较器。多数开发者做电压阈值、过流过压检测时,要么用ADC定时采样+软件比较,要么外接独立比较器芯片,很少有人用到MCU片内集成的硬件比较器。它能实现纳秒级的电压翻转响应,全程零CPU开销,还能直接内部联动ELC、POEG、ADC等外设,是硬件级保护、高速信号检测场景的隐藏利器。
一、功能介绍
        ACMP是片内集成的纯硬件模拟电压比较器,核心功能是实时比较两个模拟输入端的电压大小,直接输出高低电平数字信号。它的响应速度在几十纳秒级别,完全不需要CPU参与运算,输出既可以接到外部引脚,也可以直接内部触发中断、ELC事件、POEG保护动作。
它的典型应用场景包括:
  • 电源过压/欠压硬件保护,直接联动POEG切断功率输出
  • 电机驱动的相电流过流检测,硬件级极速响应
  • 交流信号零交叉检测、峰值检测
  • 替代外部独立比较器,节省BOM成本与PCB面积
  • 配合片内OPAMP、DAC组成可编程模拟阈值电路
  • 窗口电压检测,判断模拟信号是否在正常区间内
和ADC软件轮询方案相比,ACMP的响应速度快上百倍,且不占用任何CPU算力;和外部比较器相比,它省去了外围芯片、分压电阻、滤波电容,还能直接和片内外设硬件联动,系统集成度和可靠性更高。
二、理论介绍
        RA4M3的ACMP分为高速型(ACMPHS)和低功耗型(ACMPLP)两个版本,高速型响应快、适合保护场景,低功耗型功耗低、适合待机检测。核心结构包含输入多路选择器、比较器核心、输出滤波防抖、输出路由四个部分,支持单端比较和窗口比较两种工作模式。
ACMP硬件原理框图:
784346aab9298604c3.png


核心特性说明
  • 双规格可选:高速模式响应时间典型值50ns,低功耗模式仅微安级电流,可根据场景切换
  • 输入源灵活:正负输入端均可独立选择外部引脚、内部参考电压、DAC输出、OPAMP输出,无需外部走线
  • 窗口比较模式:两路ACMP可组成窗口检测器,同时检测电压的上下限,判断信号是否在正常区间
  • 硬件防抖滤波:内置可编程数字滤波器,可滤除输入信号的毛刺,避免误触发
  • 多路径输出联动:输出可直接触发中断、ELC事件、POEG保护、ADC启动,全硬件链路零软件延迟
三、e2s IDE配置步骤
        我使用瑞萨RA4M3 MCU和e2s IDE + FSP框架,以“内部参考电压1.65V为阈值,检测外部输入电压高低,中断输出+串口打印状态”为例,完整配置与代码如下:
  • 打开e2s IDE,创建RA4M3的FSP工程,提前配置一路UART用于printf输出
  • 打开FSP Configuration,在Analog分类中找到ACMPHS,点击添加通道0实例
  • 配置ACMPHS通道参数:
    • 名称:g_acmphs0
    • 正输入源:选择外部模拟引脚ACMPHS0_IVCMP
    • 负输入源:选择内部参考电压VREF165(1.65V)
    • 输出极性:不反转,正输入高于负输入时输出高
    • 数字滤波:使能,滤波时钟分频系数设为32
    • 中断触发:双边沿触发(电压上升/下降都触发中断)
    • 中断优先级:设置为2
  • 点击Generate Project Content生成驱动代码
  • 在main.c中添加业务代码,包含中断回调与串口打印,完整示例如下:
  1. <pre style="font-family: Consolas, Monaco, &quot;Courier New&quot;, monospace;"><code>#include "hal_data.h"
  2. #include <stdio.h>
  3. #include <stdint.h>

  4. volatile uint8_t cmp_state_flag = 0;  // 比较状态翻转标志
  5. volatile uint8_t cmp_output_val = 0;  // 当前比较输出值

  6. /* ACMP中断回调函数 */
  7. void acmphs0_callback(acmphs_callback_args_t * p_args)
  8. {
  9.     cmp_output_val = p_args->output_state;
  10.     cmp_state_flag = 1;
  11. }

  12. void hal_entry(void)
  13. {
  14.     fsp_err_t err;

  15.     printf("\r\n===== ACMP高速模拟比较器测试 =====\r\n");
  16.     printf("阈值电压:内部1.65V参考源\r\n");
  17.     printf("测试引脚:ACMPHS0外部输入\r\n\r\n");

  18.     /* 初始化ACMPHS模块 */
  19.     err = R_ACMPHS_Open(&g_acmphs0_ctrl, &g_acmphs0_cfg);
  20.     assert(FSP_SUCCESS == err);

  21.     /* 启动比较器,等待稳定 */
  22.     err = R_ACMPHS_Start(&g_acmphs0_ctrl);
  23.     assert(FSP_SUCCESS == err);
  24.     R_BSP_SoftwareDelay(10, BSP_DELAY_UNITS_MICROSECONDS);

  25.     /* 读取初始状态 */
  26.     R_ACMPHS_OutputGet(&g_acmphs0_ctrl, &cmp_output_val);
  27.     printf("初始状态:输入电压 %s 1.65V阈值\r\n",
  28.            cmp_output_val ? "高于" : "低于");

  29.     while(1)
  30.     {
  31.         if (1 == cmp_state_flag)
  32.         {
  33.             /* 串口打印当前比较状态 */
  34.             printf("状态翻转!当前输入电压 %s 1.65V阈值\r\n",
  35.                    cmp_output_val ? "高于" : "低于");

  36.             cmp_state_flag = 0;
  37.         }

  38.         /* CPU可并行执行其他任务 */
  39.         __WFI();
  40.     }
  41. }
  42. </code></pre>

ACMP完整代码逻辑流程图:
126016aab92a8ce5dc.png


四、预期的输入输出输入
  • ACMPHS0外部引脚输入0~3.3V连续变化的模拟电压
  • 比较阈值固定为内部1.65V参考电压
  • 输入信号允许带有小幅毛刺,硬件滤波会自动滤除
串口输出:
362006aab932ac612f.png
        典型现象:用可调电阻调节输入电压,在1.65V附近缓慢调节,串口会精准打印状态翻转信息;输入信号叠加小幅毛刺时,不会出现误触发;用示波器观测输出引脚,电压翻转延迟仅几十纳秒,远快于ADC采样+软件比较的方案。
五、优缺点分析优点
  • 极速响应:高速模式响应时间仅几十纳秒,是硬件级保护的理想选择,比ADC轮询快两个数量级
  • 零CPU占用:完全由硬件实现比较与滤波,CPU仅在状态翻转时介入,常态下可深度休眠
  • 高集成度:支持内部参考电压、DAC、OPAMP互联,无需外部元件即可组成完整检测电路
  • 硬件联动能力强:输出可直接触发ELC、POEG、ADC,形成全硬件保护链路,无软件延迟
  • 节省成本:替代外部比较器芯片、分压电阻、滤波电容,降低BOM成本与PCB面积
缺点
  • 仅能做大小比较:只能输出高低逻辑,无法像ADC那样读取精确电压数值
  • 阈值精度有限:内部参考电压存在一定误差,精度低于高精度外部比较器
  • 通道数量少:一般仅集成2~4路ACMP通道,无法满足大量检测点需求
  • 输入范围受限:输入电压范围受模拟电源限制,无法处理超过VCC的电压
  • 调试不直观:模拟内部节点无法测量,出现阈值偏差时排查难度高于分立器件

        总的来说,ACMP是一款“小身材大作用”的偏门外设。对于过压过流保护、零交叉检测、阈值报警这类只需要判断高低、不需要精确数值的场景,它比ADC方案更快、更省资源、更可靠;尤其是配合POEG、ELC组成全硬件保护链路时,能大幅提升系统的安全性与响应速度,是工业控制、电机驱动、电源类产品非常值得挖掘的片内资源。


您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

43

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部
0