This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/UCD3138A:有关模拟比较器的问题

Guru**** 2492065 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/694382/ccs-ucd3138a-question-about-analog-comparator

器件型号:UCD3138A

工具/软件:Code Composer Studio

CMP 寄存器按如下代码设置:

FaultMuxRegs.ACOMPCTRL1.bit.ACOMP_C_THRESH = 30;

FaultMuxRegs.ACOMPCTRL1.bit.ACOMP_C_SEL = 0;  
FaultMuxRegs.ACOMPCTRL1.bit.ACOMP_C_POL = 0;

但我不会设置 FaultMuxRegs.DPWM0FLTADDET.bit.ACOMP_C_EN 的寄存器位。 我发现 ACOMP_C_EN 的默认值为0。 但我发现、当比较输入吹出 ACOMP_C_THRESH 寄存器时、PWM 输出将被禁用。 为什么? 当 ACOMP_C_EN 位为1时、我认为 PWM 输出需要禁用。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Liwei、

    DPWM 可能会通过其他一些保护功能关闭。 您可以尝试禁用比较器来验证这一点。

    您可以检查 ADC 保护、DPWM0FAULTDET。 它们可能会关闭 DPWM。

    此致、
    肖恩

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Sean:
    DPWM0FAULTDET 寄存器也将被禁用。 因此、我认为 DPWM 不会被它们关断。 还有人吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是否启用了中断? 它可能在固件中关闭。 您可以禁用比较器并查看发生了什么。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是指哪个中断? 它有两个中断:一个是 DPWM、另一个是 CMP。 您可以看到上面的代码、我禁用了 CMP 中断、因为 FaultMuxRegs.DPWM0FLTADDET.bit.ACOMP_C_EN 的位为0。 但 PWM 也关闭。 我不知道这是为什么?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    ??????????????
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Liwei、您好!

    是否可以发布整个初始化代码? 最好通过内存调试器在 FaultMux 寄存器中读取所有位的值。

    使用多少个模拟比较器来关断 DPWM0?

    我想您可以参考实验室培训代码或 TI 的任何演示 EVM 代码(如 PFC)、了解如何配置模拟比较器以关闭 DPWM。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    插孔:
    我如何为您提供初始化代码? 请向我提供您的电子邮件地址。
    是的。 我参考演示 EVM 代码。 但我不知道我在哪里设置了错误或其他。 我已禁用 CMP、但 DPWM 仍处于关断状态。
    谢谢!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您可以单击"Insert code、attached files and more ..." 以转到富格式、然后插入您的代码。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    插孔:
    我已向您发送消息。 如果我使用定义来禁用 CMP、但仍然会发生 CMP 并关闭 DPWM。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请尝试清除 DPWMFLTCTRL 寄存器中的 ALL_FAULT_EN 位的解决方案、我相信您将获得所需的结果。

    内联 void init_pwm_protection (void)

    volatile uint32 tmp;

    Dpwm0Regs.DPWMFLTCTRL.bit.ALL_FAULT_EN = 0;//1;
    Dpwm0Regs.DPWMFLTCTRL.bit.AB_MAX_COUNT = MAX_FAULT_COUNT;//设置锁存故障的计数
    Dpwm0Regs.DPWMFLTCTRL.bit.A_MAX_COUNT = MAX_FAULT_COUNT;//设置锁存故障的计数
    Dpwm0Regs.DPWMFLTCTRL.bit.B_MAX_COUNT = MAX_FAULT_COUNT;//设置锁存故障的计数

    Dpwm1Regs.DPWMFLTCTRL.bit.ALL_FAULT_EN = 0;//1;
    Dpwm1Regs.DPWMFLTCTRL.bit.AB_MAX_COUNT = MAX_FAULT_COUNT;//设置锁存故障的计数
    Dpwm1Regs.DPWMFLTCTRL.bit.A_MAX_COUNT = MAX_FAULT_COUNT;//设置锁存故障的计数
    Dpwm1Regs.DPWMFLTCTRL.bit.B_MAX_COUNT = MAX_FAULT_COUNT;//设置锁存故障的计数

    Dpwm2Regs.DPWMFLTCTRL.bit.ALL_FAULT_EN = 0;//1;
    Dpwm2Regs.DPWMFLTCTRL.bit.AB_MAX_COUNT = MAX_FAULT_COUNT;//设置锁存故障的计数
    Dpwm2Regs.DPWMFLTCTRL.bit.A_MAX_COUNT = MAX_FAULT_COUNT;//设置锁存故障的计数
    Dpwm2Regs.DPWMFLTCTRL.bit.B_MAX_COUNT = MAX_FAULT_COUNT;//设置锁存故障的计数

    Dpwm3Regs.DPWMFLTCTRL.bit.ALL_FAULT_EN = 0;//1;
    Dpwm3Regs.DPWMFLTCTRL.bit.AB_MAX_COUNT = MAX_FAULT_COUNT;//设置锁存故障的计数
    Dpwm3Regs.DPWMFLTCTRL.bit.A_MAX_COUNT = MAX_FAULT_COUNT;//设置锁存故障的计数
    Dpwm3Regs.DPWMFLTCTRL.bit.B_MAX_COUNT = MAX_FAULT_COUNT;//设置锁存故障的计数

    tmp = FaultMuxRegs.FAULTMUXINTSTAT.ALL;//清除所有中断标志。
    FaultMuxRegs.ACOMPCTRL0.bit.ACOMP_EN = 1;//现在启用模拟比较器