深入解析TI eCAP模块:高精度捕获、APWM与信号监控实战指南
1. eCAP模块从捕获到PWM生成的瑞士军刀在嵌入式实时控制领域尤其是电机驱动、数字电源和精密传感器接口应用中对时间精度的要求往往达到了纳秒级别。你可能会遇到这样的场景需要测量一个高速旋转编码器两个脉冲之间的精确间隔或者生成一个频率和占空比都要求极其稳定的PWM信号去驱动一个伺服阀。这时候如果只依赖CPU软件轮询或通用定时器中断不仅会消耗大量CPU资源其精度和确定性也会因为中断延迟、任务调度等因素大打折扣。德州仪器TI在其C2000系列以及像AM263P这样的高性能微控制器中集成了一个名为增强型捕获模块eCAP的外设。它远不止是一个简单的“输入捕获”单元。你可以把它想象成嵌入式系统里的一个“时间记录仪”兼“精密信号发生器”兼“信号质量监督员”。它的核心是一个自由运行的32位时间戳计数器TSCTR这个计数器以系统时钟的节拍不断累加为所有操作提供统一的时间基准。在捕获模式下它能像高速摄像机一样在外部输入信号的特定边沿上升沿或下降沿触发瞬间“咔嚓”一声拍下当前TSCTR的值从而精确记录事件发生的绝对时刻或两个事件之间的时间差。更强大的是当你不需捕获外部信号时它可以无缝切换为辅助脉宽调制APWM模式利用同样的时间戳计数器和比较器生成高分辨率、可动态调整的PWM波形。此外其内置的信号监控单元Signal Monitoring Unit能像一位不知疲倦的质检员实时检查输入信号的脉冲宽度、周期或边沿时序是否在预设的安全窗口内一旦发现异常立即触发错误事件为系统安全保驾护航。理解eCAP的工作原理意味着你掌握了在硬件层面实现高精度、高可靠性定时与控制的钥匙。无论是构建一个响应迅速的无人机电调还是一个要求苛刻的医疗设备电源eCAP都能提供软件无法企及的确定性和精度。接下来我将以TI AM263P的Type 3 eCAP模块为例带你深入其内部机制从基础的软件同步配置到高效的DMA数据传输再到APWM模式的双缓冲机制最后剖析信号监控的实现细节分享我在实际调试中积累的配置心得和避坑指南。2. 核心架构与工作模式深度解析eCAP模块的设计体现了硬件外设的高度集成与灵活性。要驾驭它必须首先理解其在不同模式下的“人格分裂”它既是敏锐的观察者捕获模式也是精确的指挥者APWM模式还是严谨的监督者信号监控模式。这三种角色共享核心资源但通过配置寄存器切换行为逻辑。2.1 捕获模式高精度时间戳记录仪捕获模式的本质是“事件时刻标记”。其核心流程围绕一个32位的时间戳计数器TSCTR和一个4级深度的事件序列器Mod4 Counter展开。2.1.1 时间戳计数器与序列器协同工作TSCTR是一个自由运行的向上计数器时钟源通常为系统时钟SYSCLK。它从0开始计数到达最大值0xFFFFFFFF后溢出归零并置位溢出标志CTROVF。这个计数器提供了整个系统的时间标尺。当配置为捕获外部输入信号ECAPx引脚的边沿时模块的运作就像一个精密的流水线边沿检测与滤波输入信号首先经过一个可编程的数字滤波器Glitch Filter滤除短于QUALPRD设定周期的毛刺确保捕获的是稳定有效的边沿。事件触发与捕获当有效的边沿由ECCTL1.CAPxPOL寄存器配置为上升沿、下降沿或两者到来时触发一个捕获事件。此时硬件会先将当前TSCTR的值锁存到一个临时缓冲区然后Mod4序列器一个2位计数器状态为0,1,2,3循环才递增到下一个状态。数据写入寄存器根据Mod4序列器的新状态将临时缓冲区中的时间戳值写入对应的捕获寄存器CAP1, CAP2, CAP3, CAP4。例如第一次捕获序列器状态0的时间戳存入CAP1第二次状态1存入CAP2依此类推。循环与中断当完成4次捕获序列器从3回到0后会置位CEVT4标志。此时CAP1-CAP4寄存器中分别保存了最近4个事件发生的绝对时间戳。你可以配置在CEVT4事件时产生中断通知CPU来批量读取这4个数据从而计算出周期、占空比等信息。关键细节与避坑这里有一个非常重要的顺序——先捕获时间戳再递增序列器。这意味着CAP1寄存器中存放的永远是“第一次”捕获事件的时间戳而不是“当前”事件的时间戳。这个设计保证了在连续捕获模式下四个寄存器构成一个稳定的环形缓冲区CPU可以在任何时刻读取一组完整的历史数据。在计算时间差时务必注意周期 CAP2 - CAP1假设连续上升沿捕获而不是CAP(n) - CAP(n-1)因为寄存器是静态的而事件是流动的。2.1.2 绝对模式与差分模式这是捕获模式下的两种子模式由ECCTL2.CONT/ONESHT和ECCTL2.STOP_WRAP等位控制绝对时间戳模式TSCTR自由运行永不复位。每次捕获的都是事件发生的绝对时间。这种模式适合测量非周期性事件或事件发生的绝对时刻。如图7-319所示通过连续捕获的绝对时间戳相减同样可以得到周期。差分模式在每次捕获事件发生后TSCTR会自动复位清零然后重新开始计数。这样下一次捕获的值直接就是距离上一次事件的时间间隔差值。这种模式简化了软件计算直接读取CAPx寄存器得到的就是时间差非常适合测量固定频率信号的周期。选择哪种模式取决于应用。绝对模式更灵活可以处理丢失的事件差分模式软件开销更小。在AM263P中通过配置ECCTL2寄存器中的STOP_WRAP字段可以设定在1次、2次、3次或4次捕获后停止并产生中断或者无限循环连续模式。2.2 APWM模式变身32位高分辨率PWM发生器当ECCTL2.CAP/APWM位设置为1时eCAP模块摇身一变成为一个单通道的、具有32位周期和比较值分辨率的PWM发生器。此时ECAPx引脚从输入变为输出。2.2.1 核心资源重映射在APWM模式下模块内部资源被重新定义TSCTR作为PWM的时基计数器工作在递增计数模式。CAP1寄存器变为活动周期寄存器APRD定义PWM波的周期TSCTR从0计数到此值为一个周期。CAP2寄存器变为活动比较寄存器ACMP定义PWM输出翻转的比较点用于控制占空比。CAP3寄存器变为周期影子寄存器。CAP4寄存器变为比较影子寄存器。2.2.2 双缓冲影子寄存器机制实现无毛刺更新这是APWM模式最精妙的设计之一对于需要平滑改变PWM频率或占空比的应用至关重要。直接写入正在使用的活动寄存器CAP1/CAP2可能导致当前PWM周期波形紊乱产生毛刺。影子寄存器机制提供了两种更新策略立即加载模式当软件直接写入活动寄存器CAP1或CAP2时硬件会同时将相同的值写入对应的影子寄存器CAP3或CAP4。这种模式下新值立即生效。虽然简单但可能在PWM周期中间更新导致当前周期波形被破坏。周期加载模式推荐软件只写入影子寄存器CAP3周期和CAP4比较。硬件会在每个PWM周期结束时TSCTR计数到与APRD值匹配CTRPRD的时刻自动将影子寄存器的值加载到活动寄存器中。这样所有更新都在周期边界同步发生确保了PWM波形的连续性和稳定性。实操心得初始化与运行时更新的正确姿势初始化阶段配置APWM模式后应先向活动寄存器CAP1和CAP2写入初始值。根据手册描述这个操作会自动将初始值拷贝到影子寄存器CAP3和CAP4中完成初始同步。运行中更新需要改变PWM参数时务必只写入影子寄存器CAP3更新周期或CAP4更新占空比。硬件会在下一个周期开始时采用新值。绝对不要在运行时直接写CAP1/CAP2除非你明确需要“立即生效”且可以接受可能的波形毛刺。时序警告必须在当前PWM周期内完成对影子寄存器的写入。如果你在CTRPRD事件发生后才写入新值那么这个新值会延迟一个周期才被加载导致控制环路出现一个周期的滞后。在高速实时控制中这可能引发不稳定。2.2.3 输出极性行为详解APWM的输出逻辑由ECCTL2.APWMPOL位控制。理解比较值CMP与周期值PRD的关系是精确控制占空比的关键。主动高模式APWMPOL 0CMP 0整个周期输出低电平占空比0%。0 CMP PRD输出高电平的时钟周期数等于CMP值。例如CMP1则第一个时钟周期为高之后为低。CMP PRD输出高电平PRD-1个时钟周期最后一个时钟周期为低占空比略小于100%。CMP PRD 1整个周期输出高电平占空比100%。CMP PRD 1行为与CMP PRD 1相同输出持续高。主动低模式APWMPOL 1逻辑与主动高模式相反CMP值定义的是低电平的持续时间。这个定义非常硬件化它意味着占空比的计算公式为占空比 (CMP值) / (PRD值)对于主动高模式。例如系统时钟200MHz周期5nsPRD设置为40000对应200us周期若想要50%占空比则CMP应设置为20000。这种直接映射到计数器比较值的方式赋予了APWM模式极高的分辨率32位和确定性。2.3 信号监控单元嵌入式系统的信号守门员信号监控单元是eCAP模块的安全卫士它独立于捕获和APWM的主要功能持续监测ECAP输入引脚上的信号质量无需CPU频繁干预。2.3.1 三大监控功能脉冲宽度监控测量高电平或低电平脉冲的宽度时间并判断其是否在预设的[MIN, MAX]窗口内。超出范围则触发错误事件。周期监控测量信号上升沿到上升沿或下降沿到下降沿的周期时间并进行窗口判断。边沿监控监测预期的边沿上升或下降是否在预设的时间窗口[MIN, MAX]内出现。这个窗口是相对于一个同步事件通常来自ePWM的同步信号开始计时的。2.3.2 工作原理与配置要点监控单元内部复用eCAP的捕获逻辑和比较器。以脉冲宽度监控为例配置你需要启用至少两个捕获事件例如CAP1和CAP2并配置它们捕获一个脉冲的上升沿和下降沿。将MUNIT_x_MIN和MUNIT_x_MAX寄存器设置为期望的脉冲宽度范围以TSCTR计数为单位。工作流程当第一个边沿如上升沿到来时内部逻辑开始计时。当第二个边沿下降沿到来时计算时间差。硬件自动将这个时间差与MIN和MAX值比较。错误触发如果脉宽 MIN立即触发ERROR_EVT1。如果脉宽 MAX行为由DISABLE_EARLY_MAX_ERR位控制若为0则超限时立即触发ERROR_EVT2若为1则等到第二个边沿实际到达后才触发错误。这对于检测脉冲丢失第二个边沿永远不来的情况非常有用。2.3.3 与ePWM的协同及陷阱规避信号监控常与ePWM模块配合使用用于监控ePWM输出的健康状态。这里有几个极易出错的配置点同步与相位偏移在边沿监控模式下eCAP计数器必须与一个ePWM计数器同步ECCTL2.SYNCI_EN使能并选择同步源。监控窗口[MIN, MAX]是相对于这个同步信号开始的。关键陷阱如果ePWM或eCAP计数器设置了非零的相位偏移CTRPHS或者你使能了输入滤波QUALPRD信号的边沿会被延迟。此时你必须在软件中手动调整MIN和MAX的设定值以补偿这些延迟。例如滤波会引入(QUALPRD1)个时钟周期的延迟你需要将MIN和MAX相应地增加这个值否则监控窗口会错位导致误报。影子寄存器更新时机MIN和MAX也有对应的影子寄存器允许运行时动态调整安全窗口。其加载事件如ePWM的全局加载脉冲GLDSTRB必须与ePWM的波形更新严格同步。手册特别警告如果在一次监控过程如脉冲测量已开始但未结束中发生了影子到活动寄存器的加载本次监控会被中止新值从下一个监控周期生效。这是为了防止产生错误的监控错误。因此更新监控阈值的最佳时机是在被监控信号的安全状态如PWM占空比为0期间。3. 关键功能实现与配置实战理解了架构我们进入实战环节。下面我将结合AM263P的寄存器详解几个关键功能的配置步骤和代码片段思路。3.1 软件同步SWSYNC配置详解同步是确保多个eCAP模块或eCAP与ePWM时间基准一致的关键。软件同步提供了一种通过寄存器写入来强制对齐计数器的方法。3.1.1 配置步骤与原理假设我们需要同步eCAP1和eCAP2的TSCTR计数器。禁用外部同步输入首先确保外部同步信号不会干扰我们的软件同步操作。将ECAP1.ECAPSYNCINSEL.SEL和ECAP2.ECAPSYNCINSEL.SEL寄存器配置为0x0这意味着选择“无”作为同步源或者直接禁用外部SYNCIN通路。触发软件同步将ECAP1.ECCTL2.SWSYNC和ECAP2.ECCTL2.SWSYNC位同时置1。这个操作会生成一个同步脉冲将两个模块的TSCTR计数器同时重置为它们各自相位寄存器CTRPHS的值。如果CTRPHS为0则计数器归零。3.1.2 注意事项与链式同步同步链干扰eCAP模块可以形成同步链即一个模块的SYNCOUT可以作为另一个模块的SYNCIN。在执行软件同步前必须检查并确保目标eCAP模块的上游同步链不会产生意外的SYNCOUT信号。例如如果eCAP1的SYNCOUT被连接到eCAP2的SYNCIN且eCAP1的ECCTL2.SYNCOSEL配置为在CTRPRD时输出同步那么当eCAP1的计数器达到周期值时它会自动给eCAP2发送一个硬件同步信号这可能打乱你精心安排的软件同步时刻。因此在配置软件同步时最好暂时将相关模块的SYNCOSEL设置为不输出例如0x0。精确同步时刻软件同步是通过写寄存器触发的这个写操作本身需要几个时钟周期。如果你要求多个模块在绝对相同的时钟沿对齐软件同步可能存在几个时钟周期的偏差。对于要求极其苛刻的应用可以考虑使用一个共用的外部硬件信号如某个ePWM模块的同步输出作为所有eCAP的SYNCIN源实现硬件上的完全同步。3.2 DMA中断与ADC启动事件的自动化Type 3 eCAP的强大之处在于其丰富的事件触发机制能极大减轻CPU负担。3.2.1 DMA中断触发在捕获模式下当捕获事件发生时我们通常需要将CAP1-CAP4的时间戳数据保存到内存中。传统做法是CPU响应中断然后读取寄存器。这会引入延迟并在高频率捕获时消耗大量CPU资源。eCAP的DMA触发功能实现了自动化选择触发源通过配置ECCTL2.DMAEVTSEL位域选择一个捕获事件如CEVT4作为DMA触发源ECAP_DMA_INT。配置DMA在DMA控制器中将ECAP_DMA_INT配置为传输请求源。设置源地址为eCAP的捕获寄存器组通常是CAP1的地址并配置为递增访问目标地址为内存中的缓冲区传输数据量为4个字32位。自动循环当CEVT4事件发生时硬件自动产生DMA请求DMA控制器无需CPU干预直接将4个捕获寄存器中的数据搬移到内存。DMA可以配置为循环缓冲实现连续不断的数据流捕获。重要区别注意ECAP_DMA_INT与普通的ECAPxINT中断不同。ECAPxINT需要CPU在中断服务程序中手动清除中断标志ECFLG.INT才能产生下一次中断。而DMA传输不涉及CPU因此不能使用ECAPxINT作为DMA触发源否则在第一次触发后由于标志未被清除后续事件将无法继续触发DMA。ECAP_DMA_INT是专为DMA设计的独立触发路径。3.2.2 ADC启动SOC事件在APWM模式或捕获模式下eCAP可以触发ADC开始转换这对于实现同步采样至关重要。例如在电机控制中你希望在PWM波形的特定点如中心点或谷底对相电流进行采样以减小开关噪声影响。在APWM模式下可以配置当CTRPRD周期匹配或CTRCMP比较匹配时产生ECAP_SOC_EVT事件。将这个事件连接到ADC的SOC触发源就可以在PWM周期的固定相位启动ADC转换。在捕获模式下可以配置某个捕获事件如CEVT1作为ADC SOC触发源。这样当外部事件如传感器信号边沿发生时不仅记录了时间戳还同时启动了ADC采样实现了时间与模拟量的精确关联。配置方法是通过ECCCTL0.SOCEVTSEL位域选择事件源。3.3 信号监控单元的完整配置流程让我们以实现“监控一个PWM信号的高电平脉宽是否在100us到200us之间”为例展示配置流程。3.3.1 计算与配置假设系统时钟为200MHz周期5ns。计算MIN/MAX值最小脉宽MIN 100us / 5ns 20000(0x4E20)最大脉宽MAX 200us / 5ns 40000(0x9C40)配置eCAP基础模式ECCTL2.CAP/APWM 0设置为捕获模式。ECCTL2.CONT/ONESHT 1连续捕获模式。ECCTL2.STOP_WRAP 34个事件后环绕或根据需求设置。ECCTL2.SYNCI_EN 0禁用计数器同步对于独立的脉宽监控通常不需要同步。ECCTL1.CAPLDEN 1使能捕获加载。配置捕获边沿ECCTL1.CAP1POL 0CAP1捕获上升沿脉冲开始。ECCTL1.CAP2POL 1CAP2捕获下降沿脉冲结束。这样CAP2与CAP1的差值就是高电平脉宽。配置信号监控单元MUNIT_1_CTL.MODE 0(或对应值)设置为脉冲宽度监控模式具体值需查手册。MUNIT_1_CTL.PW_SEL 0监控高电平脉冲。MUNIT_1_CTL.DISABLE_EARLY_MAX_ERR 1设置为在第二个边沿下降沿到达后才判断MAX错误避免因脉冲丢失而提前误报。MUNIT_1_MIN 20000MUNIT_1_MAX 40000MUNIT_1_CTL.EN 1使能监控单元1。配置中断在ECEINT寄存器中使能MUNIT_1_ERROR_EVT1和MUNIT_1_ERROR_EVT2中断。在PIE和CPU级使能相应中断。3.3.2 错误处理流程当脉宽超出范围时硬件会自动置位ECFLG寄存器中对应的错误标志位MUNIT_1_ERROR_EVT1或EVT2。如果中断已使能则向CPU申请中断。自动禁用监控硬件会清除MUNIT_1_CTL.EN和ECCTL1.CAPLDEN位停止监控和捕获但会保留最后一次捕获的时间戳CAP1, CAP2供调试。 在中断服务程序中软件需要读取ECFLG判断是哪种错误过短或过长。执行安全措施如触发ePWM的Trip关闭功率输出。清除中断标志ECCLR。重新使能监控MUNIT_1_CTL.EN 1和ECCTL1.CAPLDEN 1以恢复监控。注意在重新使能前应确保被监控的信号已恢复正常否则可能立即再次触发错误。4. 实战经验、调试技巧与常见问题排查理论配置终需实践检验。下面分享一些从实际项目中总结出的经验和常见问题的解决方法。4.1 配置流程检查清单在编写eCAP驱动代码时遵循一个清晰的配置顺序可以避免很多奇怪的问题。以下是我常用的清单时钟使能确认控制系统模块CPT时钟已使能eCAP模块。引脚复用通过PINMUX寄存器将ECAPx功能映射到正确的物理引脚。注意输入/输出方向会根据模式捕获/APWM自动切换但上拉/下拉等电气特性可能需要单独配置。全局初始化如果需要配置输入限定器Qualifier滤波周期QUALPRD以抗噪声。配置ECCTL2选择模式捕获/APWM、计数模式连续/单次、停止点、同步使能等。模式特定配置捕获模式配置ECCTL1中的各CAPx边沿极性使能捕获加载CAPLDEN。如果需要配置CTRPHS计数器相位。APWM模式配置APWMPOL输出极性。初始化时先写活动寄存器CAP1周期和CAP2比较。配置ECCTL2.SHADOW相关位选择影子加载模式通常选周期加载。信号监控配置MUNIT_x相关寄存器MIN, MAX, CTL注意补偿滤波和相位偏移。事件与中断配置配置ECEINT使能所需中断源CEVTx, CNTOVF, CTRPRD/CMP, 监控错误。配置ECCTL2.DMAEVTSEL或ECCCTL0.SOCEVTSEL选择DMA或ADC触发事件。初始化PIE向量表使能CPU级中断。启动最后通过ECCTL2.TSCTRST位启动时间戳计数器。4.2 典型问题与排查实录问题1捕获模式下读取的CAP寄存器值总是0或不变。可能原因与排查引脚映射错误首先用示波器或逻辑分析仪确认信号确实到达了MCU引脚。检查PINMUX配置是否正确。输入滤波过强如果QUALPRD设置过大可能会滤除正常的信号脉冲。尝试将其设为0禁用滤波进行测试。边沿极性配置错误ECCTL1.CAPxPOL配置的边沿与输入信号实际变化方向不匹配。例如信号是上升沿触发你却配置为下降沿捕获。捕获未使能确认ECCTL1.CAPLDEN位已置1。计数器未运行确认ECCTL2.TSCTRST位已置1。检查ECCTL2.SYNCI_EN如果使能了同步但同步源一直无信号计数器可能不会启动。中断标志未清除在连续捕获模式下如果发生了捕获事件但CPU没有及时读取并清除中断标志ECFLG.CEVTx和ECFLG.INT后续的捕获事件可能不会被记录。确保中断服务程序正确清除了所有相关标志。问题2APWM模式无输出或输出频率不对。可能原因与排查模式未切换确认ECCTL2.CAP/APWM位已设置为1APWM模式。引脚输出未使能除了PINMUX有些MCU还需要在GPIO模块中配置该引脚为外设功能输出。检查相关GPIO寄存器的配置。周期值PRD过大或过小PRD值决定了PWM频率。频率 系统时钟频率 / (PRD 1)。计算你的PRD值是否在合理的范围内例如对于200MHz时钟生成1kHz PWMPRD应为199999。如果PRD为0则频率极高可能无法在示波器上稳定显示。影子寄存器更新未生效如果你在运行时通过写CAP3/CAP4更新参数但输出没变化请检查ECCTL2中影子加载模式的配置。确保是“周期加载”模式并且你是在写入影子寄存器CAP3/CAP4而不是活动寄存器。可以通过读取CAP1/CAP2来验证新值是否在周期边界被加载。输出被Trip信号拉低检查eCAP的TRIPOUT信号是否被连接到某个ePWM的Trip输入并且该ePWM的Trip条件是否被触发。同时检查信号监控单元是否产生了错误并输出了Trip信号。问题3信号监控单元频繁误报错误。可能原因与排查MIN/MAX值未补偿延迟这是最常见的原因。如果你使能了输入滤波QUALPRD 0或设置了计数器相位偏移CTRPHS ! 0却没有在MIN/MAX值中加上相应的计数监控窗口就会相对于实际信号偏移导致误判。务必手动计算补偿值补偿计数 (QUALPRD 1) (CTRPHS / 系统时钟计数)。同步信号问题边沿监控模式在边沿监控模式下eCAP计数器必须与一个ePWM同步。检查同步源ePWM的时钟和周期配置是否正确同步信号如CTR0是否正常产生。同时确保MIN/MAX定义的窗口完全落在两个同步事件之间没有跨越同步边界。噪声干扰输入信号上的毛刺可能导致意外的边沿被监控单元捕获。考虑适当增加输入滤波器的QUALPRD值。影子加载时机不当在监控过程中更新了MIN/MAX的影子寄存器并触发了加载导致当前监控被中止。这本身不是错误但可能打乱你的错误计数逻辑。确保在安全时段如被监控信号空闲时更新阈值。问题4使用DMA传输捕获数据时数据错位或丢失。可能原因与排查DMA触发源选择错误确保ECCTL2.DMAEVTSEL选择的是你期望的捕获事件如CEVT4。如果你在单次捕获模式下STOP_WRAP0则每个捕获事件CEVT1都会触发DMA你需要相应调整DMA传输数据量。DMA传输数据宽度和地址递增错误eCAP捕获寄存器是32位的。DMA应配置为每次传输一个32位字源地址递增BURST_SIZE1或按字递增。传输数量应为4如果你希望每次CEVT4事件传输全部4个寄存器。DMA与CPU访问冲突确保DMA目的地址指向的内存区域不是CPU正在频繁访问的缓存敏感区域或者考虑使用非缓存内存。如果CPU和DMA同时访问同一内存可能导致数据损坏。缓冲区溢出DMA配置为循环模式但软件读取数据的速度跟不上DMA写入的速度导致旧数据被覆盖。需要增加DMA缓冲区大小或提高软件处理数据的优先级和效率。4.3 性能优化与高级技巧利用连续捕获与DMA实现高速数据流对于高频信号测量如超声波测距回波时间将eCAP配置为连续捕获模式STOP_WRAP3并启用CEVT4触发DMA。DMA可以设置为双缓冲Ping-Pong Buffer模式。当DMA写满缓冲区A时产生中断通知CPU处理A中的数据同时DMA自动切换到缓冲区B继续接收数据。这样可以实现几乎无丢失的高速连续采集。APWM模式下的高分辨率微调32位的周期和比较寄存器提供了极高的分辨率。例如在200MHz时钟下一个完整的32位周期对应约21.47秒分辨率是5ns。这意味着你可以生成频率极低但精度极高的PWM或者对频率进行极其精细的调整。这在某些需要缓慢、精确控制的应用中如精密温控非常有用。信号监控用于系统自诊断不要仅仅把信号监控当作错误检测工具。你可以将其用于周期性系统自检。例如在系统空闲阶段主CPU可以主动产生一个已知宽度的测试脉冲通过eCAP监控其脉宽。如果监控结果在预期范围内说明从GPIO引脚到eCAP模块的整个信号通路是正常的。这符合功能安全Functional Safety的设计理念。结合ePWM和eCAP实现复杂同步在电机控制系统中可以用一个主ePWM模块产生中心对齐的PWM驱动功率桥。使用该ePWM的CTR0同步信号SYNCOUT去同步一个eCAP模块。eCAP配置为APWM模式并设置一个比较匹配事件CTRCMP来触发ADC SOC从而在PWM周期的中心点对电流进行采样。同时另一个eCAP模块可以捕获来自位置编码器的脉冲并通过信号监控单元检查编码器信号的周期是否在合理范围内实现控制和诊断的紧密耦合。调试eCAP这类复杂外设逻辑分析仪是必不可少的工具。不仅要抓取ECAP引脚上的波形更要利用其高级功能解码eCAP寄存器总线如果支持或通过实时读取寄存器值并导出将软件配置、硬件事件和信号波形在时间轴上对齐观察很多疑难杂症都会一目了然。记住数据手册是你的第一参考但实际波形和寄存器状态才是最终的裁判。

相关新闻

最新新闻

日新闻

周新闻

月新闻