2. 电源控制固件基础

在电源控制系统中,固件并不是“跑在芯片里的普通程序”这么简单。它位于硬件功率级与上层策略之间,既要按微秒级节拍驱动 PWM、采样电压电流,又要在异常时快速封锁输出、记录故障,并接受上位机的参数配置。理解固件的定义、典型电源控制场景以及它与硬件的交互方式,是后续学习固件保护架构的前提。

一、固件定义:介于硬件与策略之间的确定性软件

电源控制固件通常指固化在 MCU、DSP 或专用电源控制器非易失存储器中的嵌入式程序,负责初始化外设、执行控制环路、管理保护状态机并与外部通信。与通用应用软件相比,它有三个显著特征:

  • 强实时性:控制环、保护比较和 PWM 更新必须在确定的时间窗口内完成,抖动会直接反映为输出电压纹波或过冲。
  • 强耦合性:固件直接操作 ADC、PWM、比较器、DAC、GPIO 等寄存器,软件行为与硬件电气特性不可分割。
  • 高可靠性:固件缺陷可能导致功率管直通、输出过压或电池过充,因此需要看门狗、冗余校验和安全状态设计。
固件 = 初始化 + 控制律 + 保护逻辑 + 通信与参数管理 + 故障记录。保护逻辑不是附属功能,而是与稳压控制同等重要的核心组成。

二、电源控制场景:从稳压到保护的分层职责

典型电源控制固件运行在若干并行或分时任务中,常见场景包括:

  1. 软启动与上电时序:按顺序使能辅助电源、预充电、释放 PWM,限制浪涌电流。
  2. 闭环稳压:以固定频率采样输出电压/电流,经 PID 或数字补偿器计算占空比,更新 PWM 比较值。
  3. 恒流/恒压切换:在充电或限流场景中根据反馈量切换控制目标,避免环路饱和。
  4. 保护与故障处理:过压、欠压、过流、过温、短路等条件触发后,在微秒级封锁 PWM 并进入安全状态。
  5. 通信与参数管理:通过 UART、CAN、I²C 或 PMBus 接收设定值、上报遥测和故障码。

这些场景对时间尺度的要求差异很大,固件通常采用“中断 + 主循环”或“RTOS 任务”结构进行分层调度。下表给出典型任务的周期与优先级关系:

任务/场景典型周期优先级关键资源
PWM 更新与控制环10–100 μs最高PWM、ADC、DSP 运算
硬件保护中断异步,<5 μs最高(可抢占)比较器、Trip 输入、GPIO
软启动/状态机1–10 ms中定时器、DAC、GPIO
通信与遥测10–100 ms低UART/CAN、DMA
故障记录与自检事件触发/秒级低Flash、EEPROM

三、固件与硬件交互:信号链与寄存器级动作

固件与硬件的交互可以沿一条信号链理解:功率级输出 → 采样调理 → ADC/比较器 → 固件计算与判断 → PWM/驱动 → 功率级。固件在这一链条中既是“观察者”,也是“执行者”。

以过流保护为例,硬件比较器检测到电流超过阈值后,会通过 Trip 信号直接封锁 PWM 输出,同时产生中断通知固件。固件在中断中读取故障源、记录故障码,并决定是否锁存故障或尝试自动恢复。这种“硬件快速封锁 + 固件记录决策”的分工,是电源保护架构的常见模式。

// 过流中断服务例程(示意)
void OC_ISR(void) {
    PWM_ForceStop(PWM_CH1 | PWM_CH2);   // 硬件已 Trip,此处做冗余封锁
    fault_code = FAULT_OC;
    fault_counter++;
    if (fault_counter > OC_RETRY_LIMIT) {
        system_state = STATE_LATCHED_FAULT;  // 锁存,等待上位机清除
    } else {
        system_state = STATE_RETRY_DELAY;    // 延时后尝试恢复
    }
    ADC_ClearInterruptFlags();
}

除中断外,固件还通过寄存器配置硬件行为,例如设置 ADC 采样窗口、PWM 死区时间、比较器阈值和 DAC 参考值。这些配置一旦错误,可能导致保护失效或误触发,因此需要在初始化阶段进行校验和回读。

电源控制固件与硬件交互信号链 功率级 MOSFET / 变压器 输出滤波 采样调理 分压 / 运放 电流互感器 ADC / 比较器 采样窗口 Trip 阈值 固件 控制环计算 保护状态机 故障记录 通信与参数 PWM / 驱动 死区 / 封锁 V/I 模拟量 数字量 占空比 驱动信号 硬件 Trip 快速封锁 功率/模拟 采样接口 固件逻辑 保护/驱动

四、案例与误区:从一次误触发看交互设计

某 48V 电源模块在负载突变时偶发过流保护,复位后可恢复。排查发现,固件在 ADC 中断中读取电流采样值,但采样窗口与 PWM 开关噪声重叠,导致瞬时采样值偏高,触发软件过流判断。硬件比较器阈值设置合理,未动作。最终通过调整 ADC 采样触发点(与 PWM 中心对齐)并增加数字滤波,问题消失。

这个案例说明:固件与硬件的交互不仅是“读寄存器、写寄存器”,还包括时序对齐、噪声抑制和阈值协调。常见误区包括:

  • 只关注软件逻辑,忽略采样时序:ADC 触发点与开关噪声关系密切,配置不当会引入虚假故障。
  • 保护阈值与硬件比较器不协调:软件阈值低于硬件 Trip 点,可能导致软件频繁误动作。
  • 中断中执行耗时操作:在保护中断里做浮点运算或 Flash 写入,会延长封锁时间,增加功率管应力。
  • 缺少故障锁存与恢复策略:反复自动重试可能掩盖真实故障,甚至损坏功率级。
设计建议:将“最快封锁”交给硬件比较器与 Trip 通路,将“判断、记录、恢复策略”交给固件;固件中断只做最必要的动作,复杂处理放到低优先级任务中完成。
固件初始化阶段必须对关键保护配置进行回读校验,例如 PWM 死区、Trip 使能位、ADC 阈值寄存器。若配置写入失败而未检测,保护可能形同虚设。

综上,电源控制固件的本质是“确定性实时软件 + 硬件寄存器操作 + 保护状态管理”。它通过采样链路感知功率级状态,通过 PWM 和驱动链路施加控制,通过中断与状态机实现快速保护。理解这三层交互关系,才能进一步设计出可靠、可维护的固件保护架构。