Thread 中讨论的其他器件:C2000WARE
工具与软件:
在我的应用中、我使用模拟通道 A0进行交流电流感应。 同时、如果 ADC A0值上升和下降到低于 特定的阈值、我希望通过 CMPSSLITE-3比较器在 A0上启用电流保护。 我使用了 driverlib 的示例代码( cmpss_lite_ex1_asynch)、该示例代码将 CMPSSLITE2配置为配置 CMPSSLITE-3、但跳闸功能无法按预期工作。
为了检查代码、我已经在 A0处施加了固定的1.66Volt 且 VDDA_REF=3.0V。 我可以读取 ADC 值~2270U。 该值转换为401U (由于9.5位 DAC 分辨率)、但是、如果我将高阈值 DAC 设置为353U (相当于12位系统中的2000)、则不会发生 PWM 跳闸。
根据我的理解、之所以会发生跳闸、是因为 DAC 值比353高~401。 作为参考、代码片段如下所示。 如果我需要更改/添加/删除以下代码中的任何内容、请提供帮助。
ASysCtl_selectCMPHPMUX (ASYSCTL_CMPHPMUX_SELECT_3、2U);
ASysCtl_selectCMPLPMux (ASYSCTL_CMPLPMUX_SELECT_3、2U);
CMPSS_configHighComparator (CMPSSLITE3_BASE、(CMPSS_INSRC_DAC |CMPSS_DACREF_VDDA));
CMPSS_configLowComparator (CMPSSLITE3_BASE、(CMPSS_INSRC_DAC | CMPSS_DACREF_VDDA |CMPSS_INV_REVERTED));
CMPSS_CONFIGDAC (CMPSSLITE3_BASE、(CMPSS_DACVAL_SYSCLK | CMPSS_DACSRC_Shdw));
CMPSS_setDACValueHigh (CMPSSLITE3_BASE、353U);
CMPSS_setDACValueLow (CMPSSLITE3_base、0U);
CMPSS_configFilterHigh (CMPSSLITE3_base、0U、1U、1U);
CMPSS_configFilterLow (CMPSSLITE3_base、0U、1U、1U);
CMPSS_configOutputsHigh (CMPSSLITE3_base、(CMPSS_TRIPOUT_ASYNC_COMP | CMPSS_TRIP_ASYNC_COMP));
CMPSS_configOutputsLow (CMPSSLITE3_base、(CMPSS_TRIPOUT_ASYNC_COMP | CMPSS_TRIP_ASYNC_COMP));
CMPSS_setHysteresis (CMPSSLITE3_BASE、0U);
CMPSS_disableLatchResetOnPWMSYNCHigh (CMPSSLITE3_base);
CMPSS_disableLatchResetOnPWMSYNCLow (CMPSSLITE3_base);
CMPSS_CONFIG消 隐(CMPSSLITE3_BASE、1U);
CMPSS_disableBlanking (CMPSSLITE3_BASE);
XBAR_setEPWMMuxConfig (XBAR_TRIP4、XBAR_EPWM_MUX04_CMPSS3_CTRIPH_OR_L);
XBAR_ENABLEEPWMMUX (XBAR_TRIP4、XBAR_MUX04);
CMPSS_enableModule (Iphv_CMPSS_BASE);
XBAR_clearInputFlag (XBAR_INPUT_FLG_CMPSS3_CTRIPH);
XBAR_clearInputFlag (XBAR_INPUT_FLG_CMPSS3_CTRIPL);
此致
米兰