新闻详情

新闻详情

首页 / 资讯中心 / 详情

TMS320F2802x逐波限流实战:CMPSS与TZ.CBC配置详解

发布时间:2026/9/28 1:41:17来源:尧图网络
TMS320F2802x逐波限流实战:CMPSS与TZ.CBC配置详解
1. 为什么逐波限流值得单独拿出来讲做数字电源或者电机驱动的朋友对逐波限流Cycle-By-Cycle Limiting这个概念应该不陌生。它的核心诉求很朴素每一个PWM开关周期内只要电流超过设定阈值立刻把这一拍的驱动脉冲掐掉下一个周期重新开始。这种保护方式响应快、不会像硬件锁死那样一停到底非常适合LLC、移相全桥、Buck/Boost这类需要限流但不停机的场合。在TI的TMS320F2802x系列上实现逐波限流最经典的路径就是走CMPSSComparator Subsystem加TZ.CBCTrip Zone Cycle-By-Cycle这条链路。为什么不用ADC采样加软件判断因为ADC采样到中断响应再到改PWM寄存器这条路径的延迟通常在几百纳秒到微秒级而CMPSS是纯硬件比较器从信号输入到TZ触发延迟可以压到几十纳秒。对于开关频率上百kHz的场合这个差距直接决定了你的功率管是活着还是炸了。但问题在于CMPSS的配置细节相当琐碎。DAC的参考电压怎么给、DHR寄存器怎么算、比较器输入是走内部DAC还是外部引脚、CBC和OST两种Trip模式到底选哪个、EPWM的TZ子模块怎么联动——这些环节任何一个配错限流要么不动作要么乱动作。我在实际项目里就遇到过DAC值算错导致限流点偏高30%的情况台架上跑得好好的一上负载就炸管。这篇内容就是把这套链路从头到尾拆一遍。从CMPSS内部结构讲起到DAC的DHR寄存器计算再到TZ.CBC的配置和EPWM联动最后给出可直接复现的代码和踩坑记录。适合正在用F2802x做电源或电机控制、需要加逐波限流保护的工程师也适合想搞清楚CMPSS这套硬件比较器到底怎么用的人。下面所有配置基于F2802x的寄存器手册和我在实际项目中的验证参数计算过程会写清楚方便你按自己的硬件改。2. CMPSS内部结构与信号链路拆解2.1 CMPSS到底由哪些模块组成CMPSS不是一个简单的比较器它是一个子系统。F2802x里每个CMPSS包含两路比较器COMPA高比较器和COMPB低比较器外加两路12位DAC分别给这两个比较器提供参考电压。这个结构决定了它能同时做过流和欠流或者正向过流和反向过流两种判断。信号流向是这样的外部模拟信号从CMPSS的输入引脚进来先经过一个多路选择器可以选择正端接外部引脚还是接内部DAC负端同理。选好之后进入比较器比较结果经过数字滤波器可选后输出到CTRIP信号线上。CTRIP再连到EPWM的TZ子模块触发CBC或OST动作。这里有个容易搞混的点DAC的输出既可以作为比较器的参考也可以单独输出到引脚上。在逐波限流场景里我们通常是把DAC输出作为比较器的负端参考外部电流采样信号接正端。当电流信号超过DAC设定的电压时比较器翻转CTRIP拉高TZ触发。2.2 为什么选CMPSS而不是ADC加软件很多人第一反应是我用ADC采样在中断里判断不就行了。理论上可以但实际有几个硬伤。第一是延迟。ADC采样本身有转换时间F2802x的12位ADC在60MHz ADCCLK下最快也要几百纳秒加上中断响应、中断服务程序执行、写EPWM比较寄存器整条链路轻松超过1微秒。而CMPSS从输入到CTRIP输出典型延迟是30到50纳秒差了二十倍。第二是确定性。软件判断受中断优先级、其他中断嵌套影响最坏情况下的响应时间不可预测。硬件比较器是固定延迟每个周期都一样这对保护逻辑至关重要。第三是CPU负担。逐波限流如果靠软件做每个PWM周期都要进一次中断CPU基本被占满。用CMPSS硬件做CPU完全不用管只在故障计数器溢出时才需要处理。所以结论很明确逐波限流这种要求每拍都查、查了立刻动的场景必须走硬件比较器路径。ADC可以用来做慢速的过流保护和电流环控制但逐波限流交给CMPSS。2.3 DAC在CMPSS里的角色和配置要点CMPSS里的DAC是12位电压型DAC参考电压可以选VDDA或者VDAC。F2802x上通常用VDDA作为参考典型值是3.3V。DAC的输出电压由DACVAL寄存器决定但实际写入的是DHRDAC Hold Register寄存器DACVAL是从DHR加载的。这里有个关键细节DHR是16位的但只有高12位有效低4位是保留位。也就是说你写DHR的时候要把12位的DAC值左移4位再写进去。很多人直接写12位的值结果DAC输出只有设定值的1/16限流点严重偏低。DAC的输出电压计算公式是V_DAC (DHR 4) / 4096 × V_REF其中V_REF是DAC参考电压通常等于VDDA即3.3V。反过来如果你知道想要的限流阈值对应的电压V_TH那DHR值就是DHR (V_TH / V_REF) × 4096 × 16举个例子假设电流采样电路是1V对应10A你想限流在15A那V_TH就是1.5V。DHR (1.5 / 3.3) × 4096 × 16 0.4545 × 4096 × 16 29789。写成十六进制就是0x745D。这个值直接写进DHR寄存器就行。DAC还有几种工作模式静态模式下DACVAL固定不变斜坡模式下DAC值可以按一定速率上升或下降。逐波限流通常用静态模式设定好阈值就不动了。但如果做峰值电流模式控制可能需要斜坡补偿那就用斜坡模式。3. 从DAC到TZ.CBC的完整配置流程3.1 第一步确定限流阈值和DAC代码配置的第一步不是写代码而是算清楚你要限多少安培。这个值来自你的功率级设计MOSFET的额定电流、电感的饱和电流、采样电路的增益三者取最小值再留20%裕量。假设你的采样电路是霍尔传感器加运放输出1.65V对应0A灵敏度是66mV/A双向采样。那正向15A时输出电压是1.65 0.066 × 15 2.64V。这个电压就是你要设的DAC阈值。但注意CMPSS的比较器输入范围是0到VDDA2.64V在范围内没问题。DHR (2.64 / 3.3) × 4096 × 16 0.8 × 4096 × 16 52429十六进制0xCCCD。这里有个实操技巧算出来的DHR值最好用示波器实测验证一下。把DAC输出引脚配出来万用表量一下实际电压跟理论值对一下。我遇到过VDDA实际是3.28V而不是3.3V的情况虽然差得不多但如果你限流点卡得很紧这点偏差也可能有影响。3.2 第二步配置CMPSS的输入选择和比较器CMPSS的输入选择通过COMPCTL寄存器配置。关键位是COMPHSOURCE和COMPHINV。COMPHSOURCE选正端输入源0是外部引脚1是内部DAC。逐波限流场景下正端接外部电流采样信号所以COMPHSOURCE 0。负端固定接DAC不需要选。COMPHINV决定是否反相输出。默认0不反相即正端大于负端时输出高。这正好符合过流逻辑电流信号超过DAC阈值比较器输出高触发Trip。还有一个COMPDACCTL寄存器里的DACSOURCE位选DAC的参考源。0是VDDA1是VDAC。F2802x上VDAC通常接外部基准如果没有外部基准就选VDDA。比较器还有迟滞Hysteresis配置通过COMPHYSCTL寄存器设置。迟滞可以防止输入信号在阈值附近抖动导致输出反复翻转。对于电流采样信号如果开关噪声比较大建议开一点迟滞典型值设到20到30mV。但迟滞太大会导致限流点不准需要权衡。3.3 第三步数字滤波器的取舍CMPSS每个比较器后面都有一个数字滤波器通过CTRIPHFILCTL寄存器配置。滤波器本质是一个采样窗口在连续的N个采样点里如果所有点都满足条件才输出有效。N由CTRIPHFILTHRES决定采样时钟由CTRIPHFILCLKCTL分频。滤波器的好处是抗噪声。电流采样信号上通常叠加了开关噪声如果不滤波比较器可能在每个开关沿都误触发。但滤波器会引入延迟N越大延迟越大。假设采样时钟是SYSCLK/1即60MHzN5那滤波延迟就是5个时钟周期约83ns。加上比较器本身的延迟总共约130ns。对于100kHz开关频率周期10微秒这个延迟占1.3%可以接受。但如果你的开关频率是500kHz周期2微秒130ns就占6.5%了可能影响限流精度。所以滤波器参数要根据开关频率和噪声情况折中。我的经验是开关频率100kHz以下N可以设到5到8100到300kHzN设3到5300kHz以上N设1到3或者干脆旁路滤波器。旁路滤波器通过COMPCTL里的CTRIPHSEL位设置选0就是直接输出不滤波。3.4 第四步TZ.CBC的配置和EPWM联动CMPSS的输出CTRIP连到EPWM的TZ子模块。TZ有几种触发模式OSTOne-Shot Trip触发后PWM一直关断需要软件清除CBCCycle-By-Cycle Trip触发后只关断当前周期下个周期自动恢复。逐波限流要的就是CBC。配置CBC通过TZSEL寄存器。每个EPWM有TZ1到TZ6六个外部触发源还有DCAEVT和DCBEVT两个来自CMPSS的数字比较事件。在F2802x上CMPSS1的COMPA输出通常连到EPWM1的TZ1CMPSS2连到EPWM2的TZ2以此类推。具体对应关系要看芯片的引脚复用表。TZSEL里对应的位写1就使能该触发源为CBC模式。比如要使能TZ1为CBC就写TZSEL.bit.CBC1 1。注意TZSEL里OST和CBC是分开的位同一个触发源可以同时使能OST和CBC但通常我们只用CBC。TZ动作配置在TZCTL寄存器。CBC触发时PWM输出可以选高阻、强制高、强制低、或者不动作。对于驱动MOSFET的场合通常选强制低让驱动信号拉低管子关断。TZCTL里每个EPWM输出A和B分别配置比如TZCTL.bit.TZA 2表示强制低TZCTL.bit.TZB 2同理。还有一个TZEINT寄存器用来使能TZ中断。CBC触发时可以产生中断在中断里做故障计数或者保护逻辑。如果只是纯硬件限流不需要软件干预可以不使能中断。3.5 第五步EPWM的CBC恢复机制CBC触发后当前周期的PWM被强制到设定状态但下一个周期怎么恢复这由EPWM的TZCLR寄存器和CBC的自动清除机制决定。CBC模式的特点是触发事件在下一个PWM周期的CTR0计数器归零时自动清除。也就是说你不需要软件写TZCLR硬件会在每个周期开始时自动清除CBC标志PWM恢复正常输出。如果下一个周期电流仍然过流CMPSS再次触发再次关断。这就是逐波的含义每个周期独立判断独立动作。但有个细节要注意CBC的自动清除发生在CTR0时而CMPSS的触发可能发生在周期中间。如果电流在周期开始后很快就过流PWM被关断那这个周期剩下的时间PWM都是关断的。下一个周期CTR0时CBC清除PWM重新输出。如果过流是持续性的那每个周期PWM都只输出一小段就被关断等效占空比很小电流被限制住。这个机制天然实现了限流但不停机的效果。只要过流消失PWM立刻恢复正常占空比。4. 完整代码实现与参数计算实录4.1 寄存器级配置代码下面是我在实际项目中用的CMPSS加TZ.CBC配置代码基于F2802x的寄存器定义。先配CMPSS1的COMPA做正向过流保护。// 使能CMPSS1时钟 EALLOW; SysCtrlRegs.PCLKCR1.bit.CMPSS1ENCLK 1; EDIS; // 配置CMPSS1的DAC EALLOW; Cmpss1Regs.COMPDACCTL.bit.DACSOURCE 0; // DAC参考选VDDA Cmpss1Regs.COMPDACCTL.bit.SEL 0; // DAC输出到比较器负端 Cmpss1Regs.DACHVALS.bit.DACVAL 0xCCD; // 12位DAC值对应2.64V EDIS; // 配置比较器 EALLOW; Cmpss1Regs.COMPCTL.bit.COMPHSOURCE 0; // 正端接外部引脚 Cmpss1Regs.COMPCTL.bit.COMPHINV 0; // 不反相 Cmpss1Regs.COMPCTL.bit.CTRIPHSEL 1; // 使能滤波器 Cmpss1Regs.COMPCTL.bit.COMPDACE 1; // 使能DAC EDIS; // 配置数字滤波器 EALLOW; Cmpss1Regs.CTRIPHFILCLKCTL.bit.CLKPRESCALE 0; // 采样时钟SYSCLK Cmpss1Regs.CTRIPHFILCTL.bit.SAMPWIN 5; // 采样窗口5个点 Cmpss1Regs.CTRIPHFILCTL.bit.THRESH 5; // 阈值5即5个点全满足才输出 EDIS;注意DACVAL写的是0xCCD这是12位的值。前面算出来DHR应该是0xCCCD但DACHVALS寄存器里DACVAL只有12位所以写0xCCD。DHR是16位寄存器低4位保留实际有效的高12位就是0xCCD。如果你直接操作DHR寄存器要写0xCCCD如果操作DACHVALS写0xCCD。4.2 EPWM的TZ配置代码接着配EPWM1的TZ让CMPSS1的CTRIP触发CBC。// 配置EPWM1的TZ EALLOW; EPwm1Regs.TZSEL.bit.CBC1 1; // 使能TZ1为CBC触发源 EPwm1Regs.TZCTL.bit.TZA 2; // CBC触发时EPWMA强制低 EPwm1Regs.TZCTL.bit.TZB 2; // CBC触发时EPWMB强制低 EPwm1Regs.TZEINT.bit.CBC 0; // 不使能CBC中断 EDIS;这里TZSEL的CBC1对应TZ1而TZ1在F2802x上默认连到CMPSS1的COMPA输出。具体连接关系要查芯片的数据手册引脚复用表。有些封装上TZ1和CMPSS1的对应关系是固定的有些可以通过TZ1SEL寄存器选择源。F2802x上通常是通过EPWMxTZSELECT或者TZ1SEL来选具体看手册。如果需要CBC触发时产生中断做故障计数把TZEINT.bit.CBC设为1然后在PIE里使能对应的EPWM1_TZINT。中断服务程序里读TZFLG寄存器判断是哪个触发源然后写TZCLR清除标志。注意CBC标志虽然硬件会自动清除但中断标志需要手动清。4.3 参数计算的实际验证代码写完之后一定要验证DAC输出和限流点是否一致。我的做法是先把DAC输出配到一个空闲引脚上用万用表量实际电压。然后在电流采样输入端加一个可调直流电压慢慢升高同时用示波器看EPWM输出。当电压超过DAC阈值时EPWM输出应该被强制拉低。实测中我发现几个偏差来源。一是VDDA实际值可能不是3.3V比如3.28V导致DAC输出偏低0.6%。二是比较器有输入失调电压典型值几个毫伏对应到电流可能零点几安培。三是采样电路的增益误差电阻精度1%的话增益误差也有1%。这些加起来限流点的实际误差可能在2%到5%。如果要求高可以在软件里做校准实测触发点反推DHR值修正。还有一个坑DAC的建立时间。DAC从写入DHR到输出稳定需要一定时间手册上典型值是1微秒。如果在运行中动态改DHR值要等建立时间过了再使能比较器否则可能误触发。静态配置没这个问题。4.4 多路CMPSS的同步问题如果你的系统有多路CMPSS比如三相电机驱动用三个CMPSS分别保护三相那要注意同步。每个CMPSS的DAC是独立的但比较器的响应时间有微小差异。如果三相电流应该同时过流但实际因为比较器差异导致触发时间差了几十纳秒问题不大。但如果做精确的电流平衡控制可能需要校准每个CMPSS的失调。另外多个CMPSS的CTRIP可以连到同一个EPWM的TZ实现任一相过流就关断的逻辑。这通过TZSEL里使能多个CBC位实现比如CBC1和CBC2同时使能TZ1或TZ2任一触发都动作。5. 常见问题与排查技巧实录5.1 限流不动作或动作点偏差大这是最常见的问题。排查顺序如下先查DAC输出。用万用表量DAC引脚电压跟理论值对比。如果偏差大检查DHR写入值是否正确特别是左移4位的操作有没有漏。我见过有人直接写12位值到DHR结果DAC输出只有设定值的1/16限流点高了16倍等于没保护。再查比较器输入。确认电流采样信号确实接到了CMPSS的正端引脚而且信号幅度在0到VDDA范围内。如果信号超过VDDA比较器输入可能被钳位导致误判。然后查CTRIP信号。CTRIP是内部信号不能直接量但可以通过配置COMPSTS寄存器读比较器输出状态。在过流条件下读COMPSTS.bit.COMPHSTS应该是1。如果不是说明比较器没翻转检查输入和DAC。最后查TZ配置。确认TZSEL的CBC位使能了TZCTL的动作设对了。可以手动写TZFRC寄存器强制触发CBC看EPWM输出是否按预期动作。如果手动触发有效但CMPSS触发无效说明CTRIP到TZ的连接有问题查芯片的TZ源选择寄存器。5.2 CBC触发后PWM不恢复CBC应该在每个周期CTR0时自动清除。如果PWM一直不恢复可能的原因一是TZCLR没有正确配置。虽然CBC自动清除但有些情况下需要软件写TZCLR。检查TZCLR寄存器的CBC位是否在中断里被清除。如果使能了CBC中断但没清标志中断会反复进入但PWM应该还是能恢复。二是过流是持续性的。如果电流一直超过阈值每个周期CMPSS都触发PWM每个周期都被关断看起来就像没恢复。这时候要查为什么电流降不下来可能是负载太重或者限流点设得太低。三是CBC和OST同时使能了。如果TZSEL里同一个触发源的OST和CBC位都写了1OST优先触发后PWM一直关断。检查TZSEL确保只使能了CBC。5.3 开关噪声导致误触发电流采样信号上的开关噪声是逐波限流的头号敌人。噪声尖峰可能超过DAC阈值导致CMPSS误触发PWM在不该关断的时候关断。解决办法有几个层次。硬件上在比较器输入加RC滤波截止频率设在开关频率的1/10到1/5。比如100kHz开关频率RC截止设10到20kHz。软件上使能CMPSS的数字滤波器设合适的采样窗口和阈值。布局上电流采样信号走线远离开关节点用地平面屏蔽。我的经验是硬件RC滤波加数字滤波器双管齐下基本能解决90%的误触发。如果还有就要查采样电路本身的设计比如运放的带宽是否足够霍尔传感器的响应是否跟得上。5.4 常见问题速查表现象可能原因排查方法解决措施限流不动作DHR写入错误量DAC输出电压确认左移4位重算DHR限流点偏高DAC参考电压偏差量VDDA实际值按实际VDDA重算DHR限流点偏低比较器失调读COMPSTS状态软件校准或换芯片CBC不恢复OST同时使能查TZSEL寄存器关闭OST位误触发开关噪声示波器看采样信号加RC滤波和数字滤波触发延迟大滤波器窗口太大算滤波延迟减小SAMPWIN或旁路多相不同步比较器失调差异分别测各相触发点单独校准每相DHR5.5 几个容易被忽略的细节第一个是CMPSS的使能顺序。要先配DAC和比较器再使能CMPSS模块最后使能EPWM的TZ。如果顺序反了可能在配置过程中产生误触发。我习惯在初始化最后统一使能TZ之前先把TZFLG清一遍。第二个是TZ引脚的复用。F2802x的TZ1到TZ6有些是复用在GPIO上的如果GPIO被配成其他功能TZ就用不了。检查GPAMUX和GPBMUX寄存器确保TZ引脚配成了TZ功能。但CMPSS到TZ的内部连接不受GPIO复用影响只走内部信号。第三个是DAC的负载效应。如果DAC输出还驱动了其他电路负载电流会影响DAC精度。CMPSS的DAC输出阻抗典型值是几kΩ如果外接负载小于100kΩ可能有偏差。逐波限流场景下DAC只内部用不驱动外部负载没这个问题。第四个是温度漂移。比较器的失调电压和DAC的输出都会随温度变化。如果工作温度范围宽比如-40到85度限流点可能有几个百分点的漂移。高可靠性场合要做温度补偿或者留足够的裕量。6. 调试工具与实测方法6.1 用CCS的寄存器视图实时监控Code Composer Studio的寄存器视图是调试CMPSS的利器。在Expressions窗口里添加Cmpss1Regs和EPwm1Regs可以实时看DACVAL、COMPSTS、TZFLG这些寄存器的值。过流发生时COMPSTS.bit.COMPHSTS应该从0变1TZFLG.bit.CBC也应该置位。我习惯在调试时把TZFLG.bit.CBC配成GPIO输出用示波器看触发时刻。这样能直观看到CMPSS触发和PWM关断之间的延迟。实测下来从电流信号超过阈值到PWM输出拉低总延迟在100到150纳秒之间其中比较器延迟约50纳秒滤波器延迟约80纳秒TZ响应约20纳秒。6.2 用DAC输出做自检调试阶段可以把DAC输出配到引脚上用信号发生器给比较器正端加一个三角波示波器同时看DAC输出和EPWM输出。三角波从0升到VDDA当超过DAC阈值时EPWM应该关断。这样能精确测出实际触发阈值跟理论值对比。这个方法还能测迟滞。三角波上升时触发点是一个值下降时触发点是另一个值两个值的差就是迟滞。如果迟滞设得太大限流点会不准需要调小。6.3 实际带载测试的注意事项台架带载测试时不要一上来就加满载。先从10%负载开始慢慢加同时用示波器看电流波形和PWM波形。当负载加到限流点附近时应该能看到PWM占空比被限制住电流不再上升。如果一加负载就炸管说明限流根本没起作用。这时候要立刻停机回到空载用前面说的自检方法查CMPSS和TZ配置。不要抱着再试一次可能就好了的心态功率管炸一次的成本比调试时间高得多。带载测试还要注意散热。逐波限流工作时MOSFET处于频繁开关状态开关损耗比正常工作时大。如果限流持续时间长管子温度会上升。实测中可以用热像仪看管子温度超过100度就要考虑加强散热或者降低限流持续时间。6.4 示波器抓取触发瞬间的技巧用示波器抓CBC触发瞬间建议用单次触发模式触发源选EPWM输出下降沿。这样能抓到触发前后的波形。通道1接电流采样信号通道2接EPWM输出通道3接DAC输出如果引出来了。触发后看电流信号超过DAC输出的时刻和EPWM下降沿的时刻两者的时间差就是总延迟。如果示波器有深存储可以抓多个周期看CBC是否每个周期都正确动作。正常情况下过流期间每个周期PWM都只输出一小段电流波形是锯齿状的峰值被限制在阈值附近。7. 性能优化与扩展思路7.1 降低触发延迟的几种手段如果应用对限流响应速度要求极高比如GaN或SiC器件的高频场合可以优化几个环节。比较器延迟是固定的没法改。滤波器延迟可以减小把SAMPWIN从5降到3甚至1延迟从80纳秒降到16纳秒。但抗噪声能力下降需要硬件滤波补上。TZ响应延迟也可以优化确保TZCTL直接配成强制低不要走额外的逻辑。还有一个技巧是用DCAEVT代替TZ。F2802x的EPWM有数字比较子模块CMPSS的输出可以直接连到DCAEVT然后配置DCAEVT触发CBC。这条路径可能比走TZ短一点具体要看芯片的内部走线。实测差异不大但值得一试。7.2 从逐波限流扩展到峰值电流控制CMPSS加DAC这套硬件除了做保护还能做峰值电流模式控制。原理是DAC设定峰值电流阈值CMPSS检测电流达到阈值时触发通过DCAEVT直接关断PWM。下一个周期开始时PWM重新开通电流上升达到阈值再关断。这样每个周期的峰值电流都被精确控制。这种控制方式比传统的ADC采样加软件比较快得多适合高频开关电源。但要注意峰值电流模式需要斜坡补偿来防止次谐波振荡。斜坡补偿可以通过DAC的斜坡模式实现让DAC值在每个周期内按一定斜率变化。7.3 多路CMPSS的级联保护对于复杂系统可以用多路CMPSS做分级保护。比如第一级CMPSS设一个较高的阈值触发CBC做逐波限流第二级CMPSS设一个更高的阈值触发OST做永久关断。这样正常过载时逐波限流起作用严重短路时直接停机。两级保护的阈值要拉开距离比如第一级15A第二级25A。第一级用CBC第二级用OST。TZSEL里分别使能CBC和OST位TZCTL里CBC动作设强制低OST动作也设强制低。OST触发后需要软件写TZCLR才能恢复可以在中断里做故障记录和延时重启。7.4 与ADC采样的配合使用CMPSS做快速保护ADC做慢速监控和电流环控制两者配合使用效果最好。ADC可以在每个PWM周期采样电流平均值用于电流环计算和过流计数。如果CBC触发次数超过一定值比如连续100个周期都触发说明负载异常可以主动停机。ADC的采样时刻要跟PWM同步通常在CTR0或者CTRPRD时触发。F2802x的ADC支持EPWM触发配置SOC的触发源为EPWM1的SOCA或SOCB。采样窗口要避开开关沿等电流信号稳定后再采。8. 我踩过的坑和最后分享几个技巧第一个坑是DHR的左移。我一开始直接写12位值到DHRDAC输出只有设定值的1/16限流点高了16倍。台架上小负载跑没事一加满载就炸管。后来用万用表量DAC输出才发现问题。这个错误很低级但很容易犯因为DHR寄存器的低4位在手册里写的是reserved很多人以为写0就行实际上有效数据在高12位。第二个坑是滤波器窗口设太大。我一开始为了抗噪声把SAMPWIN设到15结果滤波延迟240纳秒限流响应变慢电流峰值比阈值高了20%。后来降到5配合硬件RC滤波效果就好多了。滤波器参数不是越大越好要算延迟。第三个坑是TZ引脚复用。我用TZ1做CBC触发但GPIO配置里TZ1被配成了普通IO导致TZ功能失效。查了半天才发现是GPIO复用的问题。虽然CMPSS到TZ是内部连接但TZ模块本身需要引脚使能。后来在GPAMUX里把对应引脚配成TZ1功能就好了。最后分享一个调试技巧在CCS里建一个Watch Expression把Cmpss1Regs.COMPSTS.bit.COMPHSTS、EPwm1Regs.TZFLG.bit.CBC、EPwm1Regs.TZCTL.bit.TZA这几个关键位放进去实时看状态变化。过流发生时COMPHSTS先变1然后TZFLG的CBC位置1最后TZA变成2。这个顺序能帮你确认信号链路是否正常。还有一个技巧是给CBC触发加一个计数器。在CBC中断里对一个变量累加过流结束后读这个变量就知道触发了多少次。如果每次过流都触发几百次说明限流点在负载电流附近需要调高阈值或者检查负载是否正常。如果触发次数很少说明是偶发噪声可以加强滤波。这套CMPSS加TZ.CBC的方案我在好几个项目里用过从几百瓦的DC-DC到几十千瓦的电机驱动稳定性都很好。关键是把DAC值算准、滤波器调好、TZ配置对剩下的就是硬件设计的事了。如果你在调试中遇到奇怪的现象先回到寄存器层面查用示波器和万用表验证每个环节基本都能定位到问题。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

网站设计公司温州最佳实践 2026/9/28 2:30:30

网站设计公司温州最佳实践

温州网站设计公司怎么选?5个细节看懂建站报价,告别无人访问 网站做好了没人访问,这大概是很多温州老板最头疼的事。花了大几万甚至十几万,找了一家所谓的“网站设计公司温州”本地服务商,结果上线三个月,后台数据还是零。别急着怪搜索引擎,大概率是你…

阅读更多 →
基于协同过滤的Java电影推荐系统:ItemCF完整实现与避坑指南 2026/9/28 2:30:23

基于协同过滤的Java电影推荐系统:ItemCF完整实现与避坑指南

简介:这是一款基于协同过滤算法构建的Java电影推荐系统源码,面向Java学习者、开发者及流媒体平台,解决从零搭建个性化推荐服务的需求。系统通过对用户历史行为数据的分析,智能挖掘观影偏好,从而输出符合口味的电影推荐…

阅读更多 →
工业控制器数据存储揭秘:EEPROM、NOR Flash、SD卡三级方案防掉电 2026/9/28 2:30:23

工业控制器数据存储揭秘:EEPROM、NOR Flash、SD卡三级方案防掉电

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
Godot Web导出快速上手:30分钟把 HTML5 游戏发布到浏览器 2026/9/28 2:30:17

Godot Web导出快速上手:30分钟把 HTML5 游戏发布到浏览器

Godot Web导出快速上手:30分钟把 HTML5 游戏发布到浏览器 【免费下载链接】godot-docs Godot Engine official documentation 项目地址: https://gitcode.com/GitHub_Trending/go/godot-docs 玩家点开一个链接,几秒后游戏就在浏览器里跑起来了——…

阅读更多 →
gsplat 3D 高斯泼溅:从 COLMAP 点云到实时渲染的 3 步实战路径 2026/9/28 2:30:17

gsplat 3D 高斯泼溅:从 COLMAP 点云到实时渲染的 3 步实战路径

gsplat 3D 高斯泼溅:从 COLMAP 点云到实时渲染的 3 步实战路径 【免费下载链接】gsplat CUDA accelerated rasterization of gaussian splatting 项目地址: https://gitcode.com/GitHub_Trending/gs/gsplat 先说结论:从 COLMAP 点云训练 3D 高斯泼…

阅读更多 →
Transformer聊天机器人源码:毕业设计实战与避坑指南 2026/9/28 2:30:16

Transformer聊天机器人源码:毕业设计实战与避坑指南

简介:这份资源是围绕Transformer模型构建聊天机器人的Python完整项目源码,配套文档说明,面向计算机相关专业正在做毕业设计、课程设计或期末大作业的学生,以及需要项目实战练习的学习者。项目经导师指导并获评审99分认可&#xff…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉