TMS320F2800157-Q1: 对CMPSS模块更新DACHVALA值,会清除CMPSTS.COMPHLATCH状态

Part Number: TMS320F2800157-Q1

测试过程:

1)配置CMPSSLITE2的H比较器:

CMPH正端选择为一个外部模拟输入信号

CMPH负端选择为DACHVALA

2)接入模拟信号并调整信号电压值大于DACHVALA值,debug观察到CMPSTS.COMPHLATCH =1;

3)调整模拟信号电压值小于DACHVALA值,debug观察到CMPSTS.COMPHLATCH =1;

4)向DACHVALA写入一个新的值,debug观察到CMPSTS.COMPHLATCH =0;

 

从Datasheet的描述来看,见下图

7a004815-da80-4f11-8076-ba7a92a081e7.png

CMPSTS.COMPHLATCH 寄存器只能靠EPWMxSYNCPER或者软件手动清除,为什么对DACHVALA写入操作也会清除CMPSTS.COMPHLATCH?哪里有相关的描述?

谢谢。

  • 已经收到了您的案例,调查需要些时间,感谢您的耐心等待。

  • 你好 ,

    我有一些疑问,需要更多信息才能了解发生了什么。
    1)新的 DACVALA 设置值是高于还是低于模拟信号?在这两种情况下它都会清除锁存器吗?
    2)请分享您更新 DACVALA 的代码片段。

    此致,
    普拉杰瓦尔

  • 找到问题原因了,我在写DACHVALA值时调用的接口函数内主动清除了CMPSTS.COMPHLATCH;

    void hal_cmpssHighDacConfig(uint32_t _cmpssBase,uint16_t _dacValue)
    {
    /**************config high comparator********************/

    CMPSS_setDACValueHigh(_cmpssBase,_dacValue);
    /* Clear the latched comparator events*/
    CMPSS_clearFilterLatchHigh(_cmpssBase);
    }

    谢谢

  • 很高兴听到你找到了根本原因!正在积极清理CMPSTS.COMPHLATCH该接口函数完美地解释了为什么在写入时锁存行为没有按预期工作。DACHVALA 。
    既然问题已解决,我将关闭此工单。如果您以后遇到任何其他异常情况或需要进一步帮助,请随时提交新的工单。

    此致,
    普拉杰瓦尔