
1. 故障多路复用器数字电源的“神经中枢”与“免疫系统”在数字电源的世界里UCD31xx系列控制器就像一位经验丰富的“电力管家”它不仅负责精确地分配能量更肩负着保护整个系统安全的重任。而故障多路复用器Fault Mux就是这个管家内置的“神经中枢”和“免疫系统”。想象一下一个复杂的电源系统其输出电压、电流、温度等关键参数如同人体的血压、心跳和体温需要被24小时不间断地监控。任何一项指标超标都可能导致“器官”功率器件受损甚至系统“休克”宕机。故障多路复用器的核心价值就在于它提供了一套高度可配置、响应迅速且精准的硬件监控机制能够将来自模拟比较器、数字比较器、外部故障引脚等多种“传感器”的信号进行逻辑整合并最终触发DPWM数字脉宽调制器的电流限制动作实现毫秒级甚至微秒级的保护。这套机制的精妙之处在于其“硬件化”和“并行化”。与依赖软件轮询检测的软件保护相比硬件比较器与故障多路复用器的组合实现了从信号检测到保护动作触发的全硬件路径响应延迟极低可靠性极高。对于从事服务器电源、通信电源、工业变频器或任何高可靠性电力电子设计的工程师而言深入理解并熟练配置UCD31xx的故障多路复用器寄存器是确保产品稳定性和安全性的基本功。这不仅仅是照着手册填几个数值更是理解如何为你的电源系统构建一道坚固的“防火墙”。本文将带你深入这些寄存器的每一个关键位域从比较器的阈值设定到故障信号的路径选择再到最终的DPWM限流动作拆解其背后的设计逻辑与实战配置要点。2. 核心架构与设计思路拆解2.1 故障检测的“三层漏斗”模型UCD31xx的故障处理机制可以形象地理解为一个“三层漏斗”模型每一层都进行着不同粒度与性质的信号处理和筛选。第一层信号感知与初级判决。这一层由最前端的“传感器”构成包括7个模拟比较器A-G、4个数字比较器0-3、4个外部故障引脚FAULT[3:0]以及一些内部状态标志如低频振荡器失效LFO_FAIL。模拟比较器直接对模拟电压信号进行高速比较数字比较器则对经过ADC采样和数字滤波后的数据进行阈值判断外部故障引脚则接收来自其他芯片或电路的故障信号。这一层的输出是简单的布尔量故障发生1或未发生0。关键在于每个“传感器”都可以独立配置其阈值、极性是高于阈值还是低于阈值触发和是否产生中断。第二层信号聚合与状态保持。故障多路复用器Fault Mux是这一层的核心。它有两个关键状态寄存器FAULTMUXRAWSTAT原始状态寄存器和FAULTMUXINTSTAT中断状态寄存器。FAULTMUXRAWSTAT实时反映了所有故障源当前的原始状态无论中断是否使能它都会更新。而FAULTMUXINTSTAT则是一个“粘性”寄存器只有当对应的故障源中断被使能例如ACOMP_C_INT_EN1且故障事件发生时相应的位才会被置1并且该状态会一直保持直到软件读取该寄存器进行清除。这种设计分离了实时监控和事件通知的功能非常实用。例如你可以让某个比较器始终监控信号在RAWSTAT中可见但仅在严重过压时才产生中断告警。第三层保护动作执行。这是最终决策层由各个DPWM通道的电流限制控制寄存器如DPWM0CLIM实现。这一层决定了“当某个故障发生时具体要让哪个DPWM通道采取何种保护动作”。DPWM0CLIM寄存器中的每一个使能位如ACOMP_A_EN,FAULT0_EN,DCOMP1_EN就像是一个个开关将第二层聚合来的特定故障信号连接到DPWM0通道的电流限制逻辑上。一个故障源可以同时映射到多个DPWM通道一个DPWM通道也可以同时响应多个故障源这为复杂的多相交错并联电源的保护策略提供了极大的灵活性。2.2 模拟与数字比较器的分工与协同为什么UCD31xx要同时提供模拟和数字两种比较器这源于它们各自不同的特性和适用场景理解这点对正确选型至关重要。模拟比较器ACOMP A-G速度的王者。它的工作完全在模拟域从输入信号到达比较器正/负端到输出数字结果延迟极短通常在几十纳秒量级。它不经过ADC采样和数字滤波因此能够捕捉到信号中非常快速、尖锐的毛刺或瞬态过冲。这是实现逐周期电流限制Cycle-by-Cycle Current Limit的关键。例如在Buck电路的每个开关周期电感电流上升通过采样电阻转化为电压信号送入模拟比较器。一旦该电压超过预设阈值对应电流限值比较器会在当前周期内立即翻转并通过故障多路复用器直接关断本周期的PWM驱动防止电流进一步增长。整个过程完全由硬件完成速度极快。数字比较器DCOMP 0-3精度与算法的担当。数字比较器的输入信号来源于前端Front End的ADC采样数据这些数据可以是绝对值如输出电压或误差值与参考值的差值。由于经过了ADC转换和可配置的数字滤波器数字比较器处理的是离散化的数字量。它的优势在于精度高、灵活性大。首先其阈值THRESH是11位有符号数分辨率高达1.5625mV可以设置非常精确的阈值。其次它内置了一个计数器机制CNT_THRESH和CNT_CONFIG可以实现N次过阈值后才报故障的功能。这对于抑制偶发的噪声干扰非常有用。例如你可以设置CNT_THRESH5并配置CNT_CONFIG1递减模式这样只有连续5个采样点超过阈值才会触发故障如果中间有采样点恢复正常计数器会递减而不是清零这提供了类似“滤波”的效果避免了误保护。实操心得如何选择比较器类型一个简单的原则对速度要求极致、需要在一个开关周期内响应的保护如峰值电流保护必须使用模拟比较器。对精度要求高、允许有一定响应延迟几个开关周期的保护如输出电压的过压/欠压保护、平均电流保护或者需要抗噪声干扰的场景优先使用数字比较器。在实际项目中我经常用模拟比较器A、B、C来做三相Buck的逐相峰值电流限而用数字比较器0来监控输出电压的过压点用数字比较器1来监控欠压点并设置合理的计数阈值来避免开关噪声引起的误触发。3. 关键寄存器深度解析与配置实战3.1 模拟比较器控制寄存器ACOMPCTRL1/2/3配置详解模拟比较器是故障保护的“尖兵”其配置直接决定了保护的灵敏度和准确性。我们以ACOMPCTRL1寄存器中关于比较器C和D的配置为例进行深入剖析。阈值设定ACOMP_x_THRESH从电压值到寄存器值的换算。这是配置的第一步也是最容易出错的地方。寄存器字段ACOMP_C_THRESH和ACOMP_D_THRESH都是7位无符号数0-127。手册给出其对应关系为0 19.53125 mV, 1 39.0625 mV, ..., 127 2.5 V。这里隐含了一个线性关系。计算步进值(2500mV - 19.53125mV) / 127 ≈ 19.53125mV。是的每个LSB最低有效位对应的电压增量就是19.53125mV。因此设定阈值的公式为寄存器值 round(期望阈值电压(mV) / 19.53125mV)例如要设置一个1.0V1000mV的阈值计算1000 / 19.53125 ≈ 51.2四舍五入后取整为51。写入ACOMP_C_THRESH 51。此时实际生效的阈值电压为51 * 19.53125mV ≈ 996.09mV。这个误差在多数应用中是可接受的但工程师必须心中有数。阈值源选择ACOMP_x_SEL灵活性的体现。这个3位字段决定了比较器负端参考端的电压来源。默认值000表示使用内部DAC产生的阈值即由上面的ACOMP_x_THRESH决定。这是最常用的模式。其他选项1-4则允许将比较器阈值动态地与其他内部信号绑定例如“比较器斜坡0”Comparator Ramp 0或各个滤波器的输出。这开启了高级应用的大门比如实现动态过流保护点。在电机启动或负载突加时允许瞬间电流更大稳态时保护点降低。这可以通过配置一个斜坡发生器COMPRAMP0输出一个随时间变化的电压作为比较器阈值来实现。极性控制ACOMP_x_POL决定触发条件。这个位非常简单但至关重要。POL1默认表示当输入信号超过阈值时比较器输出有效高电平。POL0则表示当输入信号低于阈值时输出有效。例如用于过压保护时我们设置POL1用于欠压保护时则需设置POL0。中断与输出使能信号的路由。ACOMP_x_INT_EN位控制该比较器结果是否触发CPU中断。对于需要软件记录或复杂处理的故障如需要记录故障日志应使能中断。ACOMP_x_OUT_EN位则是一个调试利器它允许将内部DAC产生的阈值电压输出到特定的AD引脚。用示波器测量这个引脚电压可以直观地验证你设定的阈值是否准确极大方便了硬件调试。3.2 数字比较器控制寄存器DCOMPCTRL0-3配置精要数字比较器的配置更为复杂因为它集成了信号选择、阈值设定、计数逻辑和使能控制。前端数据选择FE_SEL你要监控什么信号这个3位字段决定了数字比较器将哪个信号与阈值进行比较。选项0-2对应前端0、1、2的绝对值数据通常是经过PID补偿后的最终输出电压或电流的ADC采样值。选项3-5则对应前端0、1、2的误差数据即输出电压与参考电压的差值。选择“误差数据”进行保护可以实现更快速的动态响应因为它直接反映了系统的调节偏差。阈值设定THRESH高精度设定。这是一个11位有符号整数分辨率为1.5625mV/LSB。其表示的范围约为 ±1.6V具体范围需查数据手册。计算寄存器值时需注意符号。例如要设置一个500mV的阈值计算500 / 1.5625 320对应的十六进制为0x140。若要设置-300mV的阈值计算-300 / 1.5625 -192负数需要用二进制补码表示。对于11位有符号数-192的补码计算为2^11 - 192 2048 - 192 1856即0x740。计数与滤波机制CNT_THRESH, CNT_CONFIG抗干扰核心。这是数字比较器区别于模拟比较器的核心优势。CNT_THRESH8位设置需要连续或累计多少次比较事件超过阈值才最终宣告一次故障。例如设为5则需要5次。CNT_CONFIG决定计数器的行为模式。此为0是“清零模式”一旦有一次采样未超过阈值计数器立即清零。此为1是“递减模式”当采样未超过阈值时计数器减1直到减为0。递减模式提供了“惯性”更适合对抗随机噪声。假设CNT_THRESH5在“递减模式”下序列 [超, 超, 未超, 超, 超, 超, 超] 的计数过程为1-2-1-2-3-4-5触发。而在“清零模式”下第三次“未超”就会将计数器清零该序列无法触发故障。使能与清除COMP_EN, CNT_CLRCOMP_EN是总开关。CNT_CLR是一个“软件清零”位写入1可以手动清除该比较器的故障计数器和状态标志通常在处理完故障后或系统初始化时使用。3.3 故障状态寄存器FAULTMUXRAWSTAT/INTSTAT的读取与处理这两个寄存器是软件诊断故障的窗口。FAULTMUXRAWSTAT原始状态寄存器只读。它实时反映了所有故障源的当前硬件状态。无论中断是否使能只要物理条件满足如电压超过阈值对应位就会立即变为1条件不满足时立即变回0。这个寄存器适合用于实时监控或软件轮询。例如在关键循环中你可以快速读取这个寄存器来检查系统是否有任何异常征兆。FAULTMUXINTSTAT中断状态寄存器只读但读操作会清除该寄存器位清除。只有当中断使能位如ACOMP_C_INT_EN为1且对应的故障事件发生时该寄存器中的位才会被置1。一旦置1它将保持为1直到软件读取这个寄存器。这个“读清除”特性使得它非常适合用于中断服务程序ISR。在ISR中读取FAULTMUXINTSTAT的值就能知道是哪个或哪些故障源触发了中断然后根据该值进行相应的故障处理如记录、上报、尝试恢复等读取操作本身也清除了状态位为接收下一次中断做好准备。注意事项中断服务程序ISR设计要点在FAULTMUXINTSTAT的ISR中一个最佳实践是首先读取并保存寄存器的值到一个临时变量然后再根据这个变量的值进行分支处理。绝对避免多次直接读取该寄存器来判断不同位因为第一次读操作就已经清除了所有位后续读到的将是0。同时由于多个故障可能几乎同时发生你的ISR应该能处理多位同时被置1的情况。3.4 DPWM电流限制控制寄存器DPWMxCLIM的映射逻辑DPWM0CLIM寄存器是故障响应动作的“调度中心”。它的每一位都是一个“与门”的使能端将故障多路复用器汇总来的各路故障信号连接到DPWM0通道的电流限制逻辑。“或”逻辑关系该寄存器内部是一个大的“或”逻辑。只要ACOMP_A_EN到ANALOG_PCM_EN中任何一位被使能且其对应的故障源信号为有效例如ACOMP_A在FAULTMUXRAWSTAT中为1那么DPWM0的电流限制动作就会被触发。这意味着你可以将多个故障源映射到同一个DPWM通道实现复合保护。独立配置每个DPWM通道0, 1, 2, 3都有自己独立的DPWMxCLIM寄存器。这允许非常精细的保护策略。例如在一个两相交错并联的Buck电路中可以将模拟比较器A监控相位1电流映射到DPWM0CLIM控制相位1。将模拟比较器B监控相位2电流映射到DPWM1CLIM控制相位2。同时将数字比较器0监控总输出电压过压映射到DPWM0CLIM和DPWM1CLIM。 这样任一相过流只会关断该相而总输出过压则会同时关断两相实现了分层、分区的保护。模拟峰值电流模式ANALOG_PCM_EN这是一个特殊的保护源它不来自故障多路复用器而是来自另一个独立的模拟峰值电流检测电路。使能此位可以将该快速模拟保护也纳入到DPWM的限流逻辑中作为最后一道安全防线。4. 从配置到保护一个完整的过流保护实现流程让我们通过一个具体的场景将上述所有寄存器配置串联起来为一个单相Buck电源配置逐周峰值电流限制和软件可查的平均过流保护。系统设定Buck电路开关频率500kHz电流采样电阻0.01Ω希望硬件峰值电流限为15A软件平均电流限为12A需连续5个周期超限才报警。4.1 硬件峰值电流保护使用模拟比较器C计算阈值电压15A * 0.01Ω 0.15V 150mV。计算ACOMP_C_THRESH寄存器值150mV / 19.53125mV ≈ 7.68四舍五入取整为8。配置ACOMPCTRL1寄存器ACOMP_C_THRESH(Bits 14-8) 0b0001000(8)ACOMP_C_SEL(Bits 5-3) 000(使用内部DAC阈值)ACOMP_C_POL(Bit 2) 1(输入超过阈值时触发)ACOMP_C_INT_EN(Bit 1) 0(硬件保护无需CPU中断或可根据需要使能以记录日志)其他位保持默认。配置DPWM0CLIM寄存器使能模拟比较器C到DPWM0。ACOMP_C_EN(Bit 2) 1其他故障源根据需要配置结果当Buck上管导通电感电流上升采样电压超过150mV时模拟比较器C输出立即翻转。FAULTMUXRAWSTAT的Bit 2变为1。由于DPWM0CLIM的Bit 2已使能DPWM0模块会在当前开关周期内立即关闭驱动实现逐周期限流。整个过程在几百纳秒内完成。4.2 软件平均过流保护使用数字比较器0确定信号源假设电流采样信号经过ADC和滤波器后进入“前端0”的绝对值数据通路。我们监控这个数据。计算数字阈值12A * 0.01Ω 0.12V 120mV。数字比较器分辨率1.5625mV/LSB。寄存器值 120mV / 1.5625mV 76.8取整为77。由于是正向过流值为正所以THRESH(10-0位) 0b00001001101(77)。配置DCOMPCTRL0寄存器FE_SEL(Bits 17-15) 000(选择前端0的绝对值数据)THRESH(Bits 10-0) 77(二进制值)COMP_POL(Bit 18) 1(数值超过阈值时触发)CNT_THRESH(Bits 31-24) 5(连续5次超限才报故障)CNT_CONFIG(Bit 13) 0(清零模式要求连续5次。若想抗干扰更强可用1递减模式)INT_EN(Bit 12) 1(使能中断让CPU知道)COMP_EN(Bit 11) 1(使能数字比较器0)配置DPWM0CLIM寄存器可选如果希望数字比较器故障也触发硬件限流则需设置DCOMP0_EN(Bit 12) 1。这里我们主要用中断通知软件所以可以不开或作为二级保护开启。软件流程当平均电流超过12A并持续5个采样周期后FAULTMUXINTSTAT的Bit 13 (DCOMP0) 会被置1并触发CPU中断。中断服务程序读取FAULTMUXINTSTAT确认是DCOMP0故障然后可以执行降额、关机、记录故障码等复杂处理。4.3 配置比较器斜坡COMPRAMP0实现动态保护在某些场景下固定的保护阈值可能不是最优的。例如电机启动时需要较大的启动电流但稳态运行时允许的过流能力较小。这时可以利用COMPRAMP0寄存器生成一个动态变化的阈值。配置斜坡参数COMPRAMP0寄存器控制一个内部的数字斜坡发生器。START_VALUE_SEL选择斜坡起始值来源例如可以选择为“Filter 0 Output”即用某个滤波器的输出作为初始阈值。STEP_SIZE18位无符号数定义每个步进的增量大小包括整数和小数部分。需要根据MCLK频率和希望的斜率来计算。CLKS_PER_STEP定义每个步进持续多少个MCLK周期控制斜坡变化的速度。RAMP_EN使能斜坡发生器。DPWMx_TRIG_EN可以选择由哪个DPWM的触发信号来启动斜坡例如在每个开关周期开始时启动。绑定到模拟比较器将某个模拟比较器如ACOMP_D的ACOMP_D_SEL字段设置为选择“Comparator Ramp 0”作为其阈值源。工作过程在每个PWM周期开始时DPWM触发信号启动斜坡。斜坡值从初始值开始按照设定的步长和速度递增或递减。模拟比较器D的阈值随之动态变化。这样在启动初期阈值较高允许较大电流随着时间推移阈值逐渐降低到稳态保护点。这实现了具有时间特性的过流保护Inrush Current Management。5. 调试技巧与常见问题排查5.1 调试技巧让故障“看得见”利用ACOMP_x_OUT_EN进行阈值验证这是最直接的硬件调试方法。在配置好比较器阈值后将其对应的ACOMP_x_OUT_EN位置1将内部DAC的参考电压输出到AD引脚。用示波器或万用表测量该引脚电压确认其与你计算的期望值是否一致。这能立刻排除寄存器配置错误或计算错误。监控FAULTMUXRAWSTAT寄存器在调试初期不要急于使能中断或DPWM限流。先通过软件循环读取FAULTMUXRAWSTAT同时用信号发生器或改变负载来模拟故障条件观察对应的状态位是否会按预期跳变。这可以验证从信号输入到比较器再到故障多路复用器入口的整个前端通路是否正常。分步使能采用“先感知后动作”的原则。先配置好比较器阈值、极性并验证FAULTMUXRAWSTAT能正确响应。然后再使能DPWMxCLIM中的对应位观察PWM输出是否会被正确关断。最后再根据需要使能中断(INT_EN)。这样可以隔离问题快速定位故障是在检测环节、动作环节还是中断环节。5.2 常见问题排查速查表问题现象可能原因排查步骤与解决方法模拟比较器保护不动作或动作点不准1. 阈值电压计算或配置错误。2. 比较器输入信号调理电路如分压、滤波有误。3. 比较器极性(POL)配置反了。4.DPWMxCLIM寄存器中对应的使能位未开启。1. 使用ACOMP_x_OUT_EN输出阈值电压用仪器测量验证。2. 用示波器直接测量比较器正/负输入端的实际电压。3. 检查ACOMP_x_POL位设置。4. 确认DPWMxCLIM寄存器中对应故障源使能位为1。数字比较器频繁误触发1. 阈值设置过于接近正常工作点。2. 采样信号噪声大但计数器阈值(CNT_THRESH)设置过小或模式不合适。3. 前端数据选择(FE_SEL)错误监控了错误的信号。1. 适当提高对于过保护或降低对于欠保护阈值留出足够裕量。2. 增大CNT_THRESH值或将CNT_CONFIG从0清零模式改为1递减模式以增强抗干扰能力。3. 确认ADC采样和滤波链路正确并通过读取前端数据寄存器验证FE_SEL选择的信号是否符合预期。故障中断无法进入1. 全局中断未开启。2. 特定比较器的中断使能位(ACOMP_x_INT_EN或INT_EN)未设置。3. 中断状态寄存器(FAULTMUXINTSTAT)已被读取但未处理或中断服务程序未正确清除中断标志。1. 检查CPU的全局中断使能位。2. 仔细检查ACOMPCTRLx和DCOMPCTRLx中的INT_EN位。3. 在中断服务程序中确保首先读取FAULTMUXINTSTAT值该操作会清除标志再进行逻辑判断。检查中断向量表配置是否正确。DPWM限流动作后无法自动恢复故障条件持续存在导致保护动作一直生效。1. 对于模拟比较器逐周期限流一旦电流低于阈值下一个周期会恢复正常工作这是自动的。检查负载是否已移除故障。2. 对于某些锁存型保护或通过中断触发的软件保护需要在故障条件消除后由软件主动清除故障状态或重新使能PWM输出。检查软件保护逻辑。多个故障源同时使能时动作逻辑混乱对DPWMxCLIM寄存器的“或”逻辑理解不清或故障优先级未考虑。牢记DPWMxCLIM是“或”逻辑任何一路有效都会触发动。如果希望实现优先级如严重故障立即关断轻微故障先降频可能需要使用不同级别的保护动作如限流 vs. 关断或将轻微故障仅配置为中断通知由软件处理而不直接映射到DPWM硬保护。5.3 配置 checklist确保万无一失在完成故障多路复用器配置后建议按照以下清单进行核对[ ]模拟比较器[ ] 阈值电压计算正确并已换算为寄存器值。[ ]ACOMP_x_SEL已正确选择阈值源通常为内部DAC。[ ]ACOMP_x_POL已根据保护类型过压/欠压过流/欠流正确设置。[ ]ACOMP_x_INT_EN已按需设置硬件保护通常禁用需记录时启用。[ ]ACOMP_x_OUT_EN在调试时可启用以验证阈值量产时可禁用。[ ]数字比较器[ ]FE_SEL已正确选择要监控的前端数据绝对值或误差。[ ] 数字阈值计算正确并注意其有符号属性。[ ]COMP_POL极性设置正确。[ ]CNT_THRESH和CNT_CONFIG已根据抗干扰需求合理设置。[ ]INT_EN和COMP_EN已使能。[ ]故障路由[ ]DPWMxCLIM寄存器中所需故障源到目标DPWM通道的映射已正确使能。[ ] 确认了多个故障源映射到同一DPWM通道的逻辑符合设计预期“或”关系。[ ]外部故障[ ]EXTFAULTCTRL寄存器中对应故障引脚的检测使能(DET_EN)、极性(POL)和中断使能(INT_EN)已配置。[ ]软件准备[ ] 如果使能了中断中断服务程序已编写并能正确读取和清除FAULTMUXINTSTAT。[ ] 有监控FAULTMUXRAWSTAT进行健康诊断的机制可选。[ ] 故障恢复策略已确定自动恢复或软件干预。深入理解和熟练运用UCD31xx的故障多路复用器是从“能用电”到“用好电、安全用电”的关键一步。它不再是数据手册里冰冷的寄存器列表而是你构建鲁棒电源系统的强大工具箱。每一次配置都是在为你的电源产品注入一份可靠性。