• TMS320F28374S之CMPSS


    介绍

    比较器子系统是围绕许多模块构建的。每个子系统包含两个比较器,两个参考12位dac,两个数字滤波器和一个斜坡发生器。比较器在每个模块内用“H”或“L”表示,其中“H”和“L”分别表示高和低。每个比较器产生一个数字输出,表示正输入的电压是否大于负输入的电压。比较器的正输入由外部引脚驱动。
    负输入可以由外部引脚或可编程参考12位DAC驱动。每个比较器输出通过一个可编程的数字滤波器,可以去除假跳闸信号。如果不需要过滤,也可以使用未过滤的输出。斜坡发生器电路可选用于控制子系统中高比较器的参考12位DAC值。

    特色

    每个CMPSS的包括:
    •两个模拟比较器
    •两个可编程的参考12位dac
    •一台斜坡发生器
    •两个数字滤波器
    •能够与EPWMSYNCPER同步子模块
    •能够同步输出与syscclk
    •闩锁输出能力
    •能够反转输出
    •选择使用输入迟滞
    •选择比较器的负输入由外部信号或参考DAC驱动
    •选择VDDA或VDAC作为DAC参考电压
    内部框图如下:
    CMPSS BLOCK diagram

    Comparator

    比较器在正输入电压大于负输入电压时产生高数字输出,在正输入电压小于负输入电压时产生低数字输出。
    比较器如下图:
    比较器

    Reference DAC

    每个Reference DAC可以配置为驱动一个参考电压到其各自比较器的负输入。
    每个Reference DAC都有两组DACxVAL寄存器DACxVALA和DACxVALS。DACxVALA是一个只读寄存器,主动控制12位DAC的参考值。DACxVALS是一个可写的影子寄存器,它可以立即加载到DACxVALA中,或者与下一个EPWMSYNCPER事件同步。High Reference DAC (DACH)可以选择从斜坡发生器而不是DACHVALS获取其DACHVALA值。Reference DAC的工作范围受DACREF和VSSA的限制。高压基准默认为VDDA,也可以配置为VDAC。
    Reference DAC如下图所示:
    REFERENCE dac

    Ramp Generator

    概述

    当选择DACH时,斜坡发生器产生一个下降斜坡输入。在这种模式下,Reference DAC使用RAMPSTS倒数寄存器的最高12位作为输入。RAMPSTS倒数寄存器的低4位有效地充当下降斜坡率的预标度,可与RAMPDECVALA配置。
    通过设置DACSOURCE = 1来启用斜坡生成器。在设置DACSOURCE = 1时,RAMPSTS的值将从RAMPMAXREFS加载,并且寄存器保持静态,直到接收到所选的EPWMSYNCPER信号。在接收到选定的EPWMSYNCPER信号后,在每个后续的syscclk周期上从RAMPSTS中减去RAMPDECVALA的值。为了防止减法在EPWMSYNCPER事件之后开始syscclk周期
    作为延迟计数器的RAMPDLYA寄存器可用于阻止RAMPSTS减法。在接收到EPWMSYNCPER事件时,RAMPDLYA的值每减少一个syscclk循环直到寄存器归零。RAMPSTS减法只会在RAMPDLYA是零。

    Ramp Generator Behavior

    斜坡发生器在DACSOURCE、EPWMSYNCPER和COMPHSTS的每个上升沿上进行状态变化。在DACSOURCE的上升边缘,RAMPMAXREFA, RAMPDECVALA和RAMPDLYA加载他们的影子寄存器。RAMPSTS通过RAMPMAXREFS加载。在选定的EPWMSYNCPER的上升边缘,RAMPMAXREFA, RAMPDECVALA和RAMPDLYA加载其阴影寄存器。RAMPSTS使用RAMPMAXREFS加载,并在RAMPDLYA计数器达到0时开始递减。在RAMPLOADSEL = 1的COMPHSTS的上升边缘,RAMPMAXREFA, RAMPDECVALA和RAMPDLYA加载它们的阴影寄存器。RAMPSTS使用RAMPMAXREFS加载,并停止递减。在RAMPLOADSEL = 0的COMPHSTS上升边缘,RAMPSTS加载RAMPMAXREFA并停止减量。
    此外,如果RAMPSTS的值达到零,则RAMPSTS寄存器将保持静态的零值,直到接收到下一个EPWMSYNCPER。
    寄存器状态变化如下图所示:
    谐波发生器

    Ramp Generator Behavior at Corner Cases

    由于斜坡生成器在EPWMSYNCPER和COMPHSTS的每个上升边缘上都进行状态更改,因此当这两个事件同时发生或非常接近时,可以预期以下行为。
    案例1:COMPHSTS上升边发生在EPWMSYNCPER上升边之前的一个或多个周期。RAMPSTS在COMPHSTS上升边缘事件时停止衰减。当RAMPDLYA达到0时,RAMPSTS在EPWMSYNCPER上升沿事件上开始衰减。
    案例2:COMPHSTS上升边与EPWMSYNCPER上升边同时发生。COMPHSTS上升沿事件优先,RAMPSTS停止递减。当RAMPDLYA达到0时,EPWMSYNCPER上升边缘事件被忽略并且不开始减少RAMPSTS。
    案例3:COMPHSTS上升沿发生在EPWMSYNCPER上升沿之后,RAMPDLYA达到0之前的一个或多个周期。当RAMPDLYA达到0时,RAMPSTS不会减少。
    案例4:当RAMPDLYA从EPWMSYNCPER上升边达到0时,COMPHSTS上升边同时出现。RAMPSTS不会减少。
    如下图:
    case

    Digital Filter

    数字滤波器工作在输入的FIFO采样(SAMPWIN)窗口上。过滤器输出解析为示例窗口的多数值,其中多数值由阈值(THRESH)定义。如果大多数阈值不满足,则过滤器输出保持不变。为了正确操作,THRESH的值必须大于SAMPWIN / 2,且小于或等于SAMPWIN。预标度函数(CLKPRESCALE)决定滤波器采样率,滤波器FIFO在每个预标度系统时钟捕获一个样本。来自FIFO的旧数据被丢弃。
    注意,对于SAMPWIN、THRESH和CLKPRESCALE,数字滤波器使用的内部数字在所有情况下都是+1。
    本质上,samples = SAMPWIN + 1, threshold = THRESH + 1, precale = CLKPRESCALE + 1。
    数字滤波器概念模型如下图:
    filter

    过滤器的初始化顺序

    为保证数字滤波器的正常工作,建议初始化顺序如下:
    1. 配置并启用比较器进行操作
    2. 配置数字滤波器参数进行操作
    •在FIFO窗口设置SAMPWIN为要监控的样本数量
    •设置多数票资格所需的门槛THRESH
    •设置CLKPRESCALE为数字滤波器时钟预缩放值
    3.通过设置FILINIT在数字FIFO窗口中初始化示例值
    3. 如果需要锁存路径,则通过COMPSTSCLR清除COMPSTS锁存
    4. 配置CTRIP和CTRIPOUT信号路径
    5. 如果需要,可以配置ePWM和GPIO模块接受过滤后的信号

    CMPSS配置流程

    LATCHCLR和EPWMSYNCPER相关配置

    LATCHCLR信号保持锁存器输出在复位(0)。它在软件中使用xLATCHCLR(x=“H”或“L”)激活。当设置xSYNCCLREN(x=“H”或“L”)时,EPWMSYNCPER也可以激活它。EPWMSYNCPER来自EPWM的Time-Base子模块。有关该信号如何产生的详细描述,请参阅EPWM的Time-Base子模块章节。
    当COMPDACCTL [SWLOADSEL] = 1是一级触发加载时,加载DACxVALA的EPWMSYNCPER信号。如果EPWM的TBCTR和TBPRD都为0,EPWMSYNCPER将保持在高水平,而DACxVALA将立即从DACxVALS加载,而不管COMPDACCTL [SWLOADSEL]的值是多少。因此,建议在将COMPDACCTL [SWLOADSEL]设置为1之前,先配置EPWM。

    同步器、数字滤波器和锁存延迟配置

    同步块增加1-2 syclks的延迟。如果数字滤波器被绕过(所有滤波器设置为0),数字滤波器将增加2 syclks的延迟。闩锁增加1 syclk延迟。

    CMPSS校准配置

    CMPSS有两个偏移误差源:比较器偏移误差和compdac偏移误差。在数据手册中,比较器偏移量错误称为Input reference offset error, compdac偏移量错误称为Static offset error。有关它们的值,请参阅设备特定数据手册
    如果比较器的两个输入都由一个引脚驱动,则只有比较器偏移量误差适用。但是,如果比较器的反向输入是由compdac驱动的,那么只有compdac的偏移误差适用。这是因为compdac偏移误差包括比较器偏移误差。
    由于偏移误差,建议对CMPSS进行校准,以确保起下钻发生在预期水平。下面的流程概述了如果比较器的反向输入从compdac驱动,如何进行校准。

    在校准之前配置:
    1. 比较器的非反相输入端需要一个静态直流信号。
    2. 校准时应禁用迟滞。校准完成后可以重新启用。
    3.噪声输入会使校准变得困难,因此建议使用非零滤波器的锁存器,设置取决于非反相输入信号的噪声大小。

    这种方法向下扫描compdac:
    1. 将开始的compdac值设置为max, 0xFFF。
    •可选:与其将compdac的初始值设置为max,不如将其设置为Vtarget +静态偏移误差+ Margin。其中Vtarget为非反相输入上的近似直流电压,Static offset error为compdac offset error specification, Margin为一定量的保护带。这可以导致更快的校准,但只有在已知Vtarget的情况下才会起作用。另外,如果Vtarget是未知的,ADC可以用来转换它。
    2. 将compdac值减去1。
    3.等待compdac的解决。
    4. 清晰的门闩。
    5. 等待可能的闩锁设置。
    6. 如果设置了锁存器,则发现跳闸代码退出。
    •可选:可通过以下方式重复检查行程码:
    I、compdac值增加1。
    Ⅱ、清晰的门闩。
    Ⅲ、等待可能的闩锁设置。
    Ⅳ、闩锁应不设置。
    7. 若未设置锁扣,请返回步骤2重复操作。
    如果比较器的两个输入都由一个引脚驱动,也可以校准CMPSS。在这种情况下,流量保持不变,但比较器反向引脚上的电压被扫向外部。

    CMPSS Clock使能/禁用配置

    如果CMPSS模块的时钟在比较器激活时被禁用,则可以预期以下行为:
    比较器不受影响,并将继续从其输入电压跳闸。
    •如果参考12位DAC驱动比较器的负输入,负输入上的电压保持不变且不受影响,但DACVALA将不再从斜坡发生器或DACVALS更新。
    •斜坡发生器,同步块和数字滤波器冻结在他们的当前状态。
    使能时钟使时钟恢复到关闭时钟前的状态

    CMPSS寄存器相关

    请参阅设备特定数据手册

    CMPSS Base Addresses
    CMPSS_REGS Registers
    Register to Driverlib Function Mapping
  • 相关阅读:
    【UI自动化】Selenium输出发送的请求日志
    如何高效管理接口文档
    Jmeter 如何做性能测试生成聚合HTML报告?
    Linux 任务进程命令练习
    技术派Spring事件监听机制及原理
    java基于ssm+Vue儿童福利院管理系统 element 前后端分离
    c++函数
    Vue基础学习笔记01
    如何使用 MiniGPT-v2
    Simhash算法及python实现
  • 原文地址:https://blog.csdn.net/weixin_29982209/article/details/126483861