2. 电源控制固件基础
在电源控制系统中,固件并不是“跑在芯片里的普通程序”这么简单。它位于硬件功率级与上层策略之间,既要按微秒级节拍驱动 PWM、采样电压电流,又要在异常时快速封锁输出、记录故障,并接受上位机的参数配置。理解固件的定义、典型电源控制场景以及它与硬件的交互方式,是后续学习固件保护架构的前提。
一、固件定义:介于硬件与策略之间的确定性软件
电源控制固件通常指固化在 MCU、DSP 或专用电源控制器非易失存储器中的嵌入式程序,负责初始化外设、执行控制环路、管理保护状态机并与外部通信。与通用应用软件相比,它有三个显著特征:
- 强实时性:控制环、保护比较和 PWM 更新必须在确定的时间窗口内完成,抖动会直接反映为输出电压纹波或过冲。
- 强耦合性:固件直接操作 ADC、PWM、比较器、DAC、GPIO 等寄存器,软件行为与硬件电气特性不可分割。
- 高可靠性:固件缺陷可能导致功率管直通、输出过压或电池过充,因此需要看门狗、冗余校验和安全状态设计。
二、电源控制场景:从稳压到保护的分层职责
典型电源控制固件运行在若干并行或分时任务中,常见场景包括:
- 软启动与上电时序:按顺序使能辅助电源、预充电、释放 PWM,限制浪涌电流。
- 闭环稳压:以固定频率采样输出电压/电流,经 PID 或数字补偿器计算占空比,更新 PWM 比较值。
- 恒流/恒压切换:在充电或限流场景中根据反馈量切换控制目标,避免环路饱和。
- 保护与故障处理:过压、欠压、过流、过温、短路等条件触发后,在微秒级封锁 PWM 并进入安全状态。
- 通信与参数管理:通过 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 参考值。这些配置一旦错误,可能导致保护失效或误触发,因此需要在初始化阶段进行校验和回读。
四、案例与误区:从一次误触发看交互设计
某 48V 电源模块在负载突变时偶发过流保护,复位后可恢复。排查发现,固件在 ADC 中断中读取电流采样值,但采样窗口与 PWM 开关噪声重叠,导致瞬时采样值偏高,触发软件过流判断。硬件比较器阈值设置合理,未动作。最终通过调整 ADC 采样触发点(与 PWM 中心对齐)并增加数字滤波,问题消失。
这个案例说明:固件与硬件的交互不仅是“读寄存器、写寄存器”,还包括时序对齐、噪声抑制和阈值协调。常见误区包括:
- 只关注软件逻辑,忽略采样时序:ADC 触发点与开关噪声关系密切,配置不当会引入虚假故障。
- 保护阈值与硬件比较器不协调:软件阈值低于硬件 Trip 点,可能导致软件频繁误动作。
- 中断中执行耗时操作:在保护中断里做浮点运算或 Flash 写入,会延长封锁时间,增加功率管应力。
- 缺少故障锁存与恢复策略:反复自动重试可能掩盖真实故障,甚至损坏功率级。
综上,电源控制固件的本质是“确定性实时软件 + 硬件寄存器操作 + 保护状态管理”。它通过采样链路感知功率级状态,通过 PWM 和驱动链路施加控制,通过中断与状态机实现快速保护。理解这三层交互关系,才能进一步设计出可靠、可维护的固件保护架构。