Other Parts Discussed in Thread: SYSCONFIG
主题:SysConfig 中讨论的其他器件
工具/软件:
尊敬的:
我遇到以下情况的问题:
下图:
-粉红色:在 COMP0 上输入比较器
-黄色:参考 COMP0
-蓝色: COMP0 的输出
-绿色:无法在 ccp 输出中理解的信号。

配置:请参阅下一个代码
COMP0 用于捕获 CC2。 对于下面的配置、我希望输出跟随比较器。 如您所见、这没有发生(绿色)。
-比较器的上升沿零计数器,比较器的下降沿导致捕获。
-零事件将设置 CCP2 输出,捕捉事件将复位 CCP2 输出(蓝色在图中,但不正确)。
COMP0 也可以捕获 CC3。 对于以下配置、我期望输出跟随比较器。 输出 也同样不正确。
功能相同、但 CCP3 输出上有信号。
空配置 (void)
{
静态常量 DL_TimerA_ClockConfig gClockConfig =
{
.clockSel = DL_TIMER_CLOCK_BUSCLK、
.divideRatio = DL_TIMER_CLOCK_Divide_1、//运行一半的 40MHz
.prescale = 0
};
DL_TimerA_RESET (TIMA0);
DL_TimerA_enablePower (TIMA0);
DELAY_CYCLES (POWER_STARTUP_DELAY);
DL_TimerA_setClockConfig (TIMA0、(DL_TimerA_ClockConfig*)&gClockConfig);
DL_TimerA_setCounterMode (TIMA0、DL_TIMER_COUNT_MODE_UP);
DL_TimerA_setCounterValueAfterEnable (TIMA0、DL_TIMER_COUNT_AFTER_EN_ZERO);
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//第一个输出 (H1 = PA15)
//将 COMP0 路由到 CCP2 输入
DL_TimerA_setCaptureCompareInput (TIMA0、DL_TIMER_CC_INPUT_INV_NOINVERT、DL_TIMER_CC_IN_SEL_COMP0、DL_TIMERA_CAPTURE_COMPARE_2_INDEX);
//将 CCP2 配置为:
//-上升沿为零(复位计时器)
//-在下降沿捕获
DL_TimerA_setCaptureCompareCtl (TIMA0、DL_TIMER_CC_MODE_CAPTURE、DL_TIMER_CC_ZCOND TRIG_RISE | DL_TIMER_CC_ACOND _ TIMCLK | DL_TIMER_CC_CCOND_TRIG_FALL、DL_TIMER_CAPTURE_COMPARE_2_INDEX);
//设置 CCP2 输出行为:
//-上升沿高电平(零事件)
//-下降沿低电平(捕获事件)
DL_TimerA_setCaptureCompareAction (TIMA0、DL_TIMER_CC_ZACT_CCP_HIGH | DL_TIMER_CC_CUACT_CCP_LOW、DL_TIMERA_CAPTURE_COMPARE_2_INDEX);
////
//第二个输出 (L2 = PA28)
//将 COMP0 路由到 CCP3 输入
DL_TimerA_setCaptureCompareInput (TIMA0、DL_TIMER_CC_INPUT_INV_NOINVERT、DL_TIMER_CC_IN_SEL_COMP0、DL_TIMERA_CAPTURE_COMPARE_3_INDEX);
//将 CCP3 配置为:
//-上升沿为零(复位计时器)
//-在下降沿捕获
DL_TimerA_setCaptureCompareCtl (TIMA0、DL_TIMER_CC_MODE_CAPTURE、/* DL_TIMER_CC_ZCOND _TRIG_RISE |*/ DL_TIMER_CC_ACOND _TIMCLK | DL_TIMER_CC_CCOND_TRIG_FALL、DL_TIMER_CAPTURE_COMPARE_3_INDEX);
//设置 CCP3 输出行为:
//-上升沿高电平(零事件)
//-下降沿低电平(捕获事件)
DL_TimerA_setCaptureCompareAction (TIMA0、DL_TIMER_CC_ZACT_CCP_HIGH | DL_TIMER_CC_CUACT_CCP_LOW、DL_TIMERA_CAPTURE_COMPARE_3_INDEX);
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// CCP2 和 CCP3 引线到输出引脚
DL_TimerA_setCCPDirection (TIMA0、DL_TIMER_CC2_OUTPUT | DL_TIMER_CC3_OUTPUT);
//将计数器控制配置为在 CCP2 上升沿加载
DL_TimerA_setCounterControl (TIMA0、DL_TIMER_CZC_CCCTL2_ZCOND、DL_TIMER_CAC_CCCTL2_ACOND、DL_TIMER_CLC_CCCTL2_LCOND);
//启动 TimerA0、TimerA1
DL_TimerA_startCounter (TIMA0);
DL_TimerA_enableClock (TIMA0);
//配置 4 个输出
DL_GPIO_initPeripheralOutputFunction (GPIO_RXPAD_AR0_C3_IOMUX、GPIO_RXPAD_AR0_C3_IOMUX_FUNC);
DL_GPIO_enableOutput (GPIO_RXPAD_AR0_C3_PORT、GPIO_RXPAD_AR0_C3_PIN);
DL_GPIO_initPeripheralOutputFunction (GPIO_RXPAD_AR0_C2_IOMUX、GPIO_RXPAD_AR0_C2_IOMUX_FUNC);
DL_GPIO_enableOutput (GPIO_RXPAD_AR0_C2_PORT、GPIO_RXPAD_AR0_C2_PIN);
};
/* COMP_0 初始化*/
静态常量 DL_COMP_Config gCOMP_0Config ={
.channelEnable = DL_COMP_ENABLE_CHANNEL_POS_NEG、
.mode = DL_COMP_MODE_FAST、
.negChannel = DL_COMP_IMSEL_CHANNEL_0、
.posChannel = DL_COMP_IPSEL_CHANNEL_2、
.hysteresis = DL_COMP_HYSTERES_30、
POLARITY = DL_COMP_POLARITY_NON_INV
};
静态常量 DL_COMP_RefVoltageConfig gCOMP_0VRefConfig ={
.mode = DL_COMP_REF_MODE_STATIC、
.source = DL_COMP_REF_SOURCE_NONE、
.terminalSelect = DL_COMP_REF_terminal_select_POS、
.controlSelect = DL_COMP_DAC_CONTROL_COMP_OUT、
.inputSelect = DL_COMP_DAC_INPUT_DACCODE0
};
void InitComp0 (void)
{
DL_COMP_RESET (COMP0);
DL_COMP_enablePower (COMP0);
DELAY_CYCLES (POWER_STARTUP_DELAY);
DL_COMP_INIT (COMP0、(DL_COMP_Config*)&gCOMP_0Config);
DL_COMP_refVoltageInit (COMP0、(DL_COMP_RefVoltageConfig*)&gCOMP_0VRefConfig);
DL_COMP_enableOutputFilter (COMP0、DL_COMP_FILTER_DELAY_70);
DL_COMP_ENABLE (COMP0);
}
void init (void)
{
InitComp0();
configure();
DL_GPIO_initPeripheralOutputFunction (GPIO_COMP_0_IOMUX_OUT、GPIO_COMP_0_IOMUX_OUT_FUNC);//显示比较器输出(蓝色)
}
有任何建议、上述代码中可能有什么问题?
谢谢、此致、
John
