1. 环路复用:数字电源的“神经中枢”与“信号高速公路”
在数字电源的世界里,硬件是骨架,算法是灵魂,而环路复用则是连接两者的“神经网络”和“信号高速公路”。初次接触UCD31xx这类高性能数字电源控制器时,面对动辄数百页的数据手册,尤其是其中关于环路复用(Loop Mux)的十几个寄存器,很容易感到无从下手。这些寄存器不像PID参数那样直观,它们不直接决定环路的带宽或相位裕度,却从根本上定义了信号从哪里来、到哪里去,是整个控制系统能否正确、高效运行的基础。
你可以把整个数字电源控制器想象成一个高度集成的现代化工厂。前端控制模块是遍布各处的传感器,实时采集电压、电流的“生产数据”;数字脉冲宽度调制模块是最终的执行机构,控制着功率开关管的“开合闸”;而数字补偿滤波器则是核心的“控制中枢”,处理数据并发出指令。环路复用寄存器,就是连接这三者的、可编程的“内部通信总线和交叉开关”。它决定了哪个传感器的数据送给哪个控制中枢处理,以及哪个控制中枢的指令最终驱动哪个执行机构。
这项技术的核心价值在于极致的灵活性。通过软件配置,我们可以在同一块硬件上,实现从简单的单路降压,到复杂的多相交错并联、主从同步、恒压/恒流/恒功率模式平滑切换等各种拓扑和控制策略。这避免了为每一种特定应用定制硬件的成本,让一颗芯片能够适配更广泛的应用场景。理解并熟练配置这些寄存器,是从“会调PID”到“精通数字电源架构设计”的关键一步。本文将深入解析UCD31xx系列控制器的环路复用寄存器,不仅告诉你每个位是干什么的,更会结合典型应用场景,解释“为什么要这么配”,并分享在实际调试中容易踩的坑和验证技巧。
2. 环路复用寄存器全景与核心设计逻辑
在深入每个寄存器之前,我们必须先建立起环路复用模块的全局视图。UCD31xx的环路复用并非杂乱无章的寄存器集合,而是围绕几个核心逻辑单元构建的、高度结构化的配置网络。
2.1 核心逻辑单元与信号流
整个环路复用体系服务于三大核心硬件模块:
- 前端控制模块:通常包含ADC采样、误差计算、斜坡发生等电路。它负责将模拟世界的电压、电流信号转换为数字世界的误差信号。UCD31xx通常提供多个独立的前端模块。
- 数字补偿滤波器模块:这是控制算法的物理实现,通常是IIR或PID滤波器。它接收前端送来的误差信号,经过运算后输出占空比或周期指令。
- DPWM模块:数字脉宽调制器,根据滤波器输出的指令,生成具有精确时序和死区时间的PWM驱动信号。
环路复用的本质,是在这些模块的输入和输出端插入可配置的多路选择器,从而动态地构建信号路径。其核心设计逻辑遵循以下原则:
- 一对多与多对一:一个信号源可以被路由到多个目的地。例如,一个DPWM的帧同步信号可以同时触发多个前端模块进行采样。
- 灵活性与默认安全:寄存器上电后通常有安全的默认配置(例如,所有复用功能禁用),防止系统意外启动。工程师需要根据具体应用,显式地使能和配置所需路径。
- 硬件同步与确定性:关键的触发和同步路径(如DPWM触发前端采样)是通过硬件连线实现的,确保了极低的、确定性的延迟,这对于高频开关电源的稳定性至关重要。
2.2 寄存器分类与功能概览
UCD31xx的环路复用寄存器大致可分为以下几类,理解这个分类有助于我们记忆和查找:
| 寄存器类别 | 核心寄存器示例 | 主要功能 | 影响的关键链路 |
|---|---|---|---|
| 前端控制触发源选择 | FECTRL2MUX | 配置哪些DPWM事件(如PWM-A/B边沿、帧同步)可以触发前端模块进行采样和计算。 | 采样时序链路:决定了误差信号何时被采样,直接影响控制环路的延迟和相位。 |
| 滤波器输入源选择 | FILTERMUX | 为每个滤波器选择其输入误差信号来自哪个前端模块,以及其前馈信号、周期基准的来源。 | 信号处理链路:决定了哪个物理量进入哪个滤波器进行处理,用于实现多环路选择或交叉耦合。 |
| DPWM输入源选择 | DPWMMUX | 为每个DPWM模块选择其占空比指令的来源(哪个滤波器的输出,或固定值等)。 | 执行链路:决定了最终由哪个控制器的计算结果来驱动功率级。 |
| 恒功率/恒流控制 | CPCTRL,CPNOM,CPMAX等 | 配置恒功率、恒流、恒压模式之间的切换阈值、算法参数和环路选择。 | 多模式控制链路:实现了输出特性曲线的平滑过渡,是充电器、LED驱动等应用的核心。 |
| 周期调整 | CYCADJCTRL,CYCADJLIM | 用于数字相位交错控制,通过微调DPWM周期来实现多相之间的精确移相。 | 多相同步链路:对于多相交错并联拓扑,此功能至关重要,能优化纹波和动态响应。 |
| 全局使能 | GLBEN | 独立于各模块自身使能,提供顶层的全局软件使能开关。 | 系统上下电序列:用于实现安全、有序的启动和关断流程。 |
注意:配置环路复用寄存器通常发生在系统初始化阶段,在PID参数整定之前。一个错误的复用配置可能导致环路根本无法闭合,或者产生意想不到的次谐波振荡,因此这部分配置的准确性是后续一切调试工作的基础。
3. 关键寄存器深度解析与配置实战
理解了整体框架后,我们开始逐一拆解最关键的几个寄存器。我会结合典型应用场景,解释每个配置位的实际意义,并给出具体的配置示例和代码片段。
3.1 前端控制触发配置:FECTRL2MUX
这个寄存器控制着前端控制模块的采样触发源。在数字电源中,采样时刻的精确性直接影响控制精度。采样必须在功率开关管动作的“安全窗口”进行,以避免开关噪声,同时还要保证固定的计算延迟。
寄存器位域精讲:
- Bit 13-12: NL_SEL:非线性增益切换源选择。当控制器检测到误差过大时,会自动切换补偿器的增益(Kcomp)以加快响应。此位决定使用哪个滤波器的非线性比较结果。默认值01(Filter 2)适用于大多数单环路情况。在多环路系统中,你可能需要根据主环路来指定。
- Bit 11-8: DPWMx_FRAME_SYNC_EN:使能DPWM的帧同步信号作为前端触发。帧同步是DPWM计数器归零时产生的信号,非常适合用于周期起始点的采样,能保证每个开关周期采样一次,实现最均匀的控制。
- Bit 7-0: DPWMx_A/B_TRIG_EN:使能DPWM的A通道或B通道的特定边沿(通常为上升沿或下降沿)作为前端触发。这提供了更灵活的采样点配置,例如在双管正激、有源钳位等拓扑中,可以在主开关管关断、续流管导通的时刻采样电流,以获得更准确的电流信息。
配置实例:双相交错Buck假设我们有一个两相交错并联的Buck电路,使用DPWM0和DPWM1分别驱动两相,相位差180度。我们希望每个前端模块(FE0, FE1)分别在对应相的帧同步时刻采样。
// 假设基地址定义 #define LOOP_MUX_BASE 0x00020000 #define FECTRL2MUX (*(volatile unsigned int*)(LOOP_MUX_BASE + 0x08)) void ConfigureFECTRL2MUX_Interleaved(void) { unsigned int regValue = 0; // 1. 设置非线性比较源为Filter 0(假设主环路使用Filter 0) regValue |= (0x0 << 12); // NL_SEL = 0 (Filter 0) // 2. 使能DPWM0帧同步触发前端控制0(FE0) regValue |= (1 << 8); // DPWM0_FRAME_SYNC_EN = 1 // 3. 使能DPWM1帧同步触发前端控制1(FE1) regValue |= (1 << 9); // DPWM1_FRAME_SYNC_EN = 1 // 注意:DPWM0_A_TRIG_EN等位保持默认0,因为我们使用帧同步已足够。 // 如果需要更精确的采样点,比如在PWM中点采样,则可能需要使用A/B触发。 FECTRL2MUX = regValue; }实操心得:在调试初期,强烈建议先使用帧同步触发,因为它最简单、最稳定。只有在需要特定非对称采样点的高级拓扑中,才去使用A/B边沿触发。同时使能多个触发源通常不会出错,但会浪费逻辑资源,且可能使触发逻辑变得不清晰。
3.2 采样触发控制:SAMPTRIGCTRL
这个寄存器与FECTRL2MUX相辅相成,但视角不同。FECTRL2MUX是从DPWM视角出发:“我的哪个信号可以触发前端?”。而SAMPTRIGCTRL是从前端视角出发:“我允许哪个DPWM的触发信号来触发我?”。
配置逻辑: 例如,FE0_TRIG_DPWM1_EN位为1,表示允许DPWM1的采样触发信号连接到前端控制模块0。这在与FECTRL2MUX配合时,提供了双重确认机制,增加了配置的灵活性。在某些冗余或备份设计中,可以配置一个前端模块监听多个DPWM的触发。
典型配置: 通常,我们建立一对一的映射关系:FE0监听DPWM0,FE1监听DPWM1,以此类推。这样配置最清晰。
#define SAMPTRIGCTRL (*(volatile unsigned int*)(LOOP_MUX_BASE + 0x0C)) void ConfigureSAMPTRIGCTRL_OneToOne(void) { // 建立 FE0 <-> DPWM0, FE1 <-> DPWM1, FE2 <-> DPWM2 的触发关系 unsigned int regValue = 0; regValue |= (1 << 0); // FE0_TRIG_DPWM0_EN regValue |= (1 << 5); // FE1_TRIG_DPWM1_EN regValue |= (1 << 10); // FE2_TRIG_DPWM2_EN SAMPTRIGCTRL = regValue; }3.3 滤波器多路复用:FILTERMUX
这是环路复用中最核心的寄存器之一,它定义了控制算法的“数据流向”。一个滤波器模块的输入可以来自不同的前端,其参数也可以动态切换。
关键位域详解:
- Bit 29-24: FILTERx_KCOMP_SEL:为每个滤波器选择其非线性增益值。在UCD31xx中,
KCOMP值通常存储在FILTERKCOMPA/B寄存器中。此选择位允许你在不同工况下为同一个滤波器切换不同的增益系数,实现自适应控制。 - Bit 18-16: FILTERx_FFWD_SEL:前馈源选择。前馈控制可以显著提高系统对输入电压或负载扰动的响应速度。这里可以选择其他滤波器的输出作为前馈量,实现环路间的耦合。例如,在PFC+LLC两级结构中,后级LLC的滤波器输出可以作为前级PFC的前馈信号。
- Bit 13-8: FILTERx_PER_SEL:为滤波器选择开关周期基准。滤波器的计算(尤其是数字积分器)依赖于准确的开关周期信息。在多相系统中,每个相的DPWM周期可能因周期调整而略有不同,因此需要为每个滤波器指定正确的周期源。
- Bit 5-0: FILTERx_FE_SEL:最重要的配置之一。指定滤波器的误差输入信号来自哪个前端模块。这是构建电压环、电流环、平均电流环等不同控制环路的根本。
配置实例:峰值电流模式控制在峰值电流模式中,我们需要一个快速的电流内环(通常用Filter 1)和一个慢速的电压外环(通常用Filter 0)。电流环的误差来自采样到的电感电流,电压环的误差来自输出电压。
#define FILTERMUX (*(volatile unsigned int*)(LOOP_MUX_BASE + 0x14)) void ConfigureFILTERMUX_PeakCurrentMode(void) { unsigned int regValue = 0; // 1. 滤波器Kcomp源:都使用默认的KCOMP0(可根据需要调整) // regValue |= (0x0 << 24); // FILTER0_KCOMP_SEL = 0 (默认) // regValue |= (0x0 << 26); // FILTER1_KCOMP_SEL = 0 (默认) // regValue |= (0x0 << 28); // FILTER2_KCOMP_SEL = 0 (默认) // 2. 前馈配置:本例不使能前馈,保持默认。 // FILTER0_FFWD_SEL 默认=1 (Filter1输出)? 注意查表!默认是Filter1输出给Filter0。 // 对于峰值电流模式,通常电压环(Filter0)不需要来自电流环(Filter1)的前馈,可以关闭或保持默认,需根据实际响应调整。 // 假设我们关闭Filter0的前馈(选择Filter0输出给自己无意义,但某些芯片可能支持断开,这里假设设置0为断开) // 需要根据手册确认,这里仅为示意。更安全的做法是默认不修改。 // 3. 周期源:所有滤波器都使用主DPWM0的周期(假设DPWM0是主相) // regValue |= (0x0 << 8); // FILTER0_PER_SEL = 0 (DPWM0) - 默认 // regValue |= (0x0 << 10); // FILTER1_PER_SEL = 0 (DPWM0) - 默认 // regValue |= (0x0 << 12); // FILTER2_PER_SEL = 0 (DPWM0) - 默认 // 4. **核心配置:滤波器输入源** // 电压外环 (Filter 0) 接收来自前端0 (FE0) 的电压误差信号 regValue |= (0x0 << 0); // FILTER0_FE_SEL = 0 (FE0) - 这正好是默认值 // 电流内环 (Filter 1) 接收来自前端1 (FE1) 的电流误差信号 regValue |= (0x1 << 2); // FILTER1_FE_SEL = 1 (FE1) // Filter 2 未使用,可以保持默认或指向一个空闲FE regValue |= (0x2 << 4); // FILTER2_FE_SEL = 2 (FE2) 或保持默认,取决于系统 FILTERMUX = regValue; }3.4 DPWM多路复用:DPWMMUX
这个寄存器决定了最终由谁“说了算”——哪个控制器的输出会去驱动功率开关管。
关键位域详解:
- Bit 31-24: DPWMx_SYNC_FET_SEL:为同步整流管(SyncFET)的软开关控制选择斜坡源。这主要用于实现同步整流的自适应开通/关断,以降低损耗。需要根据实际使用的斜坡信号(来自哪个前端模块)进行配置。
- Bit 19-12: DPWMx_SYNC_SEL:主从同步配置的关键。当某个DPWM模块配置为从模式时,此位选择其同步信号来自哪个DPWM(主DPWM)。这对于实现多相同步至关重要。
- Bit 11-0: DPWMx_FILTER_SEL:最核心的配置。选择该DPWM的占空比指令来源。选项包括三个滤波器的输出、恒功率模块输出,或轻载控制寄存器中的固定值。
配置实例:继续双相交错Buck接续之前的例子,我们有两相,Filter 0作为电压环,Filter 1作为两相共享的电流环(或每相独立电流环)。假设我们采用电压外环+平均电流内环模式,且两相电流独立控制。
#define DPWMMUX (*(volatile unsigned int*)(LOOP_MUX_BASE + 0x20)) void ConfigureDPWMMUX_InterleavedBuck(void) { unsigned int regValue = 0; // 1. SyncFET斜坡源:假设使用对应前端模块的斜坡,FE0给DPWM0,FE1给DPWM1 // DPWM0_SYNC_FET_SEL = 0 (FE0) - 默认 // DPWM1_SYNC_FET_SEL = 1 (FE1) regValue |= (0x1 << 26); // Bits 27:26 for DPWM1 // 2. 主从同步:DPWM0为主,DPWM1为从,同步源选择DPWM0 // DPWM0_SYNC_SEL = 0 (自身,主模式) - 默认 // DPWM1_SYNC_SEL = 0 (同步源为DPWM0) regValue |= (0x0 << 14); // Bits 15:14 for DPWM1 // 3. **核心:DPWM指令源选择** // DPWM0 由 Filter 0 (电压环) 和 Filter 1 (电流环) 的最小值控制?不,这里需要理解。 // 在平均电流模式中,电流环输出直接控制占空比。电压环的输出作为电流环的给定。 // 因此,DPWM的指令应直接来自电流环滤波器(Filter 1)。 // 但UCD31xx的DPWM_FILTER_SEL是单选,不能直接“与”或“或”。 // 因此,我们需要将电压环和电流环的输出通过外部逻辑(如比较器)处理后再送给DPWM,或者使用恒功率模块的“最小选择”功能。 // 这里假设一个简化场景:使用恒功率模块(CPCC)来实现电压环和电流环的输出选择(见后续CPCTRL配置)。 // 那么DPWM的源可以选择恒功率模块的输出。 // 或者,在纯平均电流模式(电压环输出作为电流基准),DPWM源就是电流环滤波器。 // 假设我们使用Filter 1的输出直接驱动DPWM0和DPWM1(即电流环直接控制): // DPWM0_FILTER_SEL = 1 (Filter 1) regValue |= (0x1 << 0); // Bits 2:0 = 001 // DPWM1_FILTER_SEL = 1 (Filter 1) regValue |= (0x1 << 3); // Bits 5:3 = 001 // 注意:DPWM2和DPWM3未使用,保持默认(DPWM2默认用Filter2,DPWM3默认用Filter0) // 但为了清晰,可以显式设置为0或关闭其全局使能。 DPWMMUX = regValue; }重要提示:
DPWMx_FILTER_SEL的配置需要与整个控制架构紧密配合。在电压环+电流环的双环系统中,通常需要一个额外的“选择器”来协调两个环路的输出(例如,恒流恒压切换)。UCD31xx的恒功率控制模块(CPCC)正是为此而生。如果不用CPCC,则需要通过软件比较或外部模拟电路来实现,复杂度和实时性都会受影响。
4. 高级功能:恒功率控制与周期调整
4.1 恒功率/恒流/恒压控制模块
对于电池充电、LED驱动等需要输出特性曲线的应用,恒功率控制模块是必不可少的。它实现了在恒定电压、恒定电流和恒定功率模式之间的自动、平滑切换。
核心寄存器组:
CPCTRL:控制寄存器,包含模式使能、环路选择、阈值选择等全局配置。CPNOM:标称电流阈值寄存器。定义了在恒压模式和恒功率模式之间切换的电流滞回点。CPMAX:最大电流阈值寄存器。定义了在恒功率模式和恒流模式之间切换的电流滞回点。CPCONFIG:配置寄存器,存储最大电流和标称电压的设定值。CPMAXPWR:最大功率设定寄存器。CPSTAT:状态寄存器,只读,用于查询当前工作模式和切换事件。
配置流程与逻辑:
- 设定参数:根据应用需求,计算并设置
CPNOM、CPMAX、CPCONFIG、CPMAXPWR中的阈值和设定值。这些值通常与电流、电压的ADC码值对应,需要根据采样电阻、放大增益和ADC量程进行换算。 - 配置环路选择:在
CPCTRL寄存器中,通过VLOOP_SEL和CLOOP_SEL位,指定哪个滤波器作为电压环输出,哪个作为电流环输出。 - 配置工作模式:
CPCC_CONFIG位:设置为0选择平均电流模式;设置为1则使能恒功率模块的环路选择功能。LOWER_COMP_EN位:如果使能,则输出为电压环和电流环输出的最小值(用于恒压/恒流特性)。如果禁用,则由内部状态机根据阈值自动选择电压环或电流环。DAC_COMP_EN位:使能后,在恒压和恒功率模式下,电压环的给定值(DAC Setpoint)会与(最大功率/采样电流)的计算结果取最小值,从而实现恒功率限制。
- 使能模块:最后将
CPCC_EN位置1。
示例:配置一个简单的恒压/恒流特性
void ConfigureCPCC_CV_CC(void) { // 假设已计算好阈值(此处为示例值,需根据实际校准) CPNOM = (0x100 << 16) | 0x0F0; // 标称电流上下阈值 CPMAX = (0x200 << 16) | 0x180; // 最大电流上下阈值 CPCONFIG = (0x220 << 16) | 0x300; // 最大电流和标称电压设定 CPMAXPWR = 0x50000; // 最大功率设定 unsigned int cpctrl_val = 0; // 选择电压环为Filter0,电流环为Filter1 cpctrl_val |= (0x0 << 10); // VLOOP_SEL = 0 (Filter0) cpctrl_val |= (0x1 << 8); // CLOOP_SEL = 1 (Filter1) // 使能最小值比较(实现CV/CC折返特性) cpctrl_val |= (1 << 13); // LOWER_COMP_EN = 1 // 使能恒功率模块的环路选择功能 cpctrl_val |= (1 << 1); // CPCC_CONFIG = 1 // 使能模块 cpctrl_val |= (1 << 0); // CPCC_EN = 1 CPCTRL = cpctrl_val; }4.2 周期调整模块
在多相交错并联系统中,各相之间需要保持精确的相位差(如两相180度,三相120度)。周期调整模块通过微调从DPWM模块的开关周期,来实现这一相位锁定。
核心思想:该模块测量两个特定时刻的误差信号差值,通过一个可配置增益的积分器,计算出需要对DPWM周期进行的微小调整量,并输出到对应的DPWM模块。
关键寄存器:
CYCADJCTRL:控制寄存器,配置增益、同步源、采样源和使能。CYCADJLIM:限幅寄存器,设置周期调整量的上下限,防止过调。CYCADJSTAT:状态寄存器,可读取计算出的调整值和误差值,用于监控和调试。
配置步骤:
- 选择同步源:通过
CYC_ADJ_SYNC选择哪个DPWM的A触发作为周期调整计算的同步基准。通常选择主DPWM。 - 选择采样源:通过
FIRST_SAMPLE_SEL和SECOND_SAMPLE_SEL,选择用于计算的两个误差样本来自哪个前端模块。通常选择需要调整相位的那个相所对应的前端模块。 - 设置增益:
CYC_ADJ_GAIN决定了调整的灵敏度。增益过高会导致振荡,过低则锁定速度慢。需要根据系统动态特性仔细调整。 - 设置限幅:在
CYCADJLIM中设置合理的上下限,通常为周期值的±1%~5%,防止在瞬态过程中调整过度。 - 使能:最后将
CYC_ADJ_EN置1。
调试技巧:周期调整环本质上是一个锁相环。调试时,可以先设置一个非常小的增益和很窄的限幅,观察
CYCADJSTAT寄存器中的CYC_ADJ_CALC值是否稳定收敛。然后逐步增大增益,直到获得满意的锁定速度和稳定性。使用示波器观察各相PWM波形的相位差是否达到并保持设定值,是最终的验证手段。
5. 配置流程、调试技巧与常见问题排查
5.1 标准配置流程
配置环路复用寄存器应遵循一个清晰的顺序,避免信号路径冲突或未定义状态:
- 全局规划:在纸上或设计文档中画出你想要的信号流图。明确:哪个前端采样什么信号?哪个滤波器处理哪个前端的信号?哪个滤波器的输出驱动哪个DPWM?需要什么特殊模式(恒功率、周期调整)?
- 关闭全局使能:在配置开始前,先向
GLBEN寄存器写入0,禁用所有前端和DPWM模块。在配置过程中保持它们处于复位状态是最安全的。 - 配置路径选择:按照信号流向,从源头到末端依次配置:
- 先配置
FECTRL2MUX和SAMPTRIGCTRL,建立采样触发链路。 - 再配置
FILTERMUX,建立前端到滤波器的数据链路和滤波器参数源。 - 接着配置
DPWMMUX,建立滤波器到DPWM的执行链路,并配置主从同步。 - 如果需要,配置
EXTDACCTRL(外部DAC路由)。
- 先配置
- 配置高级功能:配置恒功率控制、周期调整等模块的寄存器。
- 配置滤波器参数:在信号路径正确建立后,再向各个滤波器的系数寄存器(如
FILTERKCOMPA/B,以及PID系数寄存器)写入具体的控制参数。 - 使能模块:最后,向
GLBEN寄存器写入规划好的值,按顺序使能所需的前端和DPWM模块。有时还需要按照特定序列使能各模块自身的使能位。
5.2 调试与验证技巧
- 寄存器回读验证:在写入配置后,立即回读该寄存器,确认写入值是否正确。这是排除硬件访问错误的第一步。
- 使用状��寄存器:
CPSTAT、CYCADJSTAT等状态寄存器是宝贵的调试窗口。通过监控它们,可以确认恒功率模块是否按预期切换模式,周期调整环是否在正常工作。 - 分步使能与测试:不要一次性使能所有功能。例如,可以先只使能一个前端、一个滤波器和一个DPWM,构成一个最简单的单环路,验证基本的PWM输出和采样是否正常。然后再逐步添加其他相位和复杂功能。
- 触发与采样点验证:使用示波器同时观察DPWM波形和ADC采样保持信号。确认采样触发事件(如帧同步)是否发生在你期望的PWM波形安全区域内(例如,在开关管导通的中点或关断期)。
- 信号路由验证:通过注入测试信号来验证路由。例如,将一个前端模块的输入接地(误差为负),将其路由到一个滤波器,再路由到一个DPWM。观察该DPWM的占空比是否变为最小(或最大,取决于极性)。通过改变输入,可以直观地验证整个信号链是否通畅。
5.3 常见问题排查表
| 现象 | 可能原因 | 排查步骤 |
|---|---|---|
| PWM无输出 | 1. 全局使能GLBEN未打开。2. DPWM模块自身的使能位未打开。 3. DPWMMUX中DPWMx_FILTER_SEL选择的源(如某个滤波器)未使能或无输出。4. 所选滤波器的输入前端未使能或无数据。 | 1. 检查GLBEN寄存器对应位。2. 检查DPWM模块的独立使能寄存器。 3. 检查 DPWMMUX配置,并确认源滤波器有正确输出(可读其输出寄存器或通过DAC观察)。4. 检查 FILTERMUX和FECTRL2MUX配置,确保前端到滤波器的链路畅通。 |
| 采样不正确或控制环不稳定 | 1. 采样触发配置错误,导致采样点有噪声或处于瞬态过程。 2. FILTERMUX中FILTERx_PER_SEL选择了错误的DPWM周期源,导致滤波器计算周期与实际开关周期不符。3. 多个触发源冲突,或前端模块被意外触发。 | 1. 用示波器验证采样时刻与PWM波形的关系。 2. 核对 FILTERx_PER_SEL设置,确保与驱动该滤波器输出目标的DPWM周期一致。3. 检查 FECTRL2MUX和SAMPTRIGCTRL,确保触发关系是一对一且明确的,禁用未使用的触发源。 |
| 恒功率模式不切换 | 1.CPCC_EN未使能。2. CPNOM/CPMAX阈值设置不正确,与实际ADC码值不匹配。3. VLOOP_SEL/CLOOP_SEL选择的滤波器错误。4. 电流或电压采样标定不准。 | 1. 检查CPCTRL寄存器。2. 读取ADC值,与设定的阈值寄存器值比较,重新校准计算。 3. 验证 CPCTRL中的环路选择位。4. 校准电流和电压采样通道的增益和偏移。 |
| 多相不同步或相位错误 | 1.DPWMMUX中DPWMx_SYNC_SEL主从关系配置错误。2. 周期调整模块 CYCADJCTRL未正确使能或参数不当。3. 各相DPWM的周期寄存器值不一致。 | 1. 确认主DPWM,并检查所有从DPWM的同步源指向主DPWM。 2. 检查 CYCADJCTRL配置,特别是同步源和使能位。读取CYCADJSTAT观察调整量。3. 确保所有DPWM的周期寄存器设置为相同值(周期调整模块会在基础上微调)。 |
| 非线性增益切换未生效 | 1.FECTRL2MUX中NL_SEL选择源错误。2. 滤波器对应的非线性阈值未正确设置。 3. 误差信号未超过非线性阈值。 | 1. 检查NL_SEL位,确保指向正在使用的滤波器。2. 检查对应滤波器的非线性阈值寄存器。 3. 注入大阶跃负载,观察误差是否超过阈值,并监控滤波器系数是否切换。 |
配置UCD31xx的环路复用寄存器,就像在为一个复杂的数字控制系统绘制精确的接线图。它要求工程师不仅了解每个模块的功能,更要清楚数据在整个芯片内部的流动路径。耐心、细致的规划,配合分步验证的调试方法,是成功驾驭这套强大而灵活系统的关键。当所有路径正确接通,整个系统按照预想的控制律稳定运行时,这种对硬件底层深入掌控所带来的满足感,正是数字电源设计的乐趣所在。