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.

[参考译文] MSPM0C1104-Q1:计时器->ADC 事件触发器 M0C1104

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1634512/mspm0c1104-q1-timer---adc-event-trigger-m0c1104

器件型号: MSPM0C1104

当使用来自计时器的事件触发器时、如果我将 SAMPMODE (CTL1 位 20) 位设置为 AUTO、当 ADC 获得触发信号时、它将始终对 ADC 进行采样、永远不会停止转换。  它不会在每个触发事件发生时执行一次。  如果我将该位设置为 MANUAL、则触发仅在发生第一个事件时发生、而不会再次触发。  “那你打算怎么办?“  以下是我的设置配置:

 /* ADC12_0 初始化*/
静态常量 DL_ADC12_ClockConfig gADC12_0ClockConfig ={
  //.clockSel   = DL_ADC12_clock_SYSOSC、
  .clockSel   = DL_ADC12_clock_ULPCLK、
  divideRatio  = DL_ADC12_clock_divide_8、
  .freqRange   = DL_ADC12_clock_FREQ_RANGE_20_TO_24、
};

  DL_ADC12_setClockConfig (ADC12_0_INST、(DL_ADC12_ClockConfig *)&gADC12_0ClockConfig);
  
  DL_ADC12_initSingleSample (ADC12_0_INST、
                DL_ADC12_REPEAT_MODE_ENABLED、
                DL_ADC12_SAMPLING_SOURCE_AUTO、
                ADC12_CTL1_TRIGSRC_EVENT、
                DL_ADC12_SAMP_CONV_RES_12_BIT、      //12 位分辨率
                DL_ADC12_SAMP_CONV_DATA_FORMAT_unsigned);  
  DL_ADC12_configConversionMem (ADC12_0_INST、
                ADC12_0_ADCMEM_0
                DL_ADC12_INPUT_CHAN_1、  /*DL_ADC_INPUT_CHAN_x — 将 x 设置为 ADC 通道*/
                DL_ADC12_REFERENCE_VOLTAGE_INTREF、
                DL_ADC12_SAMPLE_TIMER_SOURCE_SCOMP0;
                DL_ADC12_AVERAING_MODE_DISABLED、
                DL_ADC12_BURN_OUT_SOURCE_DISABLED、
                DL_ADC12_TRIG_SRC_EVENT、  // 1 =硬件=事件触发器
                DL_ADC12_Windows_COMP_MODE_DISABLED);
  
  
  DL_ADC12_setPowerDownMode (ADC12_0_INST、DL_ADC12_POWER_DOWN_MODE_MANUAL);
  DL_ADC12_setSampleTime0 (ADC12_0_INST、375);
  DL_ADC12_setSubscriberChanID (ADC0、ADC12_0_INST_SUB_CH); //设置订阅者通道 ID
  //DL_ADC12_setSubscriberChanID (ADC0、1); //设置订阅者通道 ID
  gADCOffset = DL_ADC12_getADCOffsetCalibration (ADC12_0_ADCMEM_0_REF_VOLTAGE_V);
  
  /*启用 ADC12 中断*/

  DL_ADC12_clearInterruptStatus (ADC12_0_INST、(DL_ADC12_INTERRUPT_MEM0_RESULT_LOADED);
  DL_ADC12_enableInterrupt (ADC12_0_INST、(DL_ADC12_INTERRUPT_MEM0_RESULT_LOADED);  
  NVIC_EnableIRQ (ADC12_0_INST_INT_IRQN);
  
  DL_ADC12_enableConversions (ADC12_0_INST);
  DL_VREF_enablePower (VREF);
  DELAY_CYCLES (POWER_STARTUP_DELAY);
  
静态常量 DL_VREF_ClockConfig gVREFClockConfig ={
  .clockSel = DL_VREF_clock_BUSCLK、
  .divideRatio = DL_VREF_clock_sdivide_1、
};
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:Mark、
    我相信、如果您设置此功能、它应该可以解决您的问题:

    此致、

    Diego Abad

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

    谢谢、Diego。  我未使用 Config GUI。  您能告诉我该在哪个寄存器中吗?

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

    您好:Mark、
    它应该是 MEMCTL 寄存器。 您需要  按如下方式在 DL_ADC12_configConversionMem 函数中添加 DL_ADC12_TRIGGER_MODE_TRIGGER_NEXT:

    DL_ADC12_configConversionMem (ADC_INST、ADC_ADCMEM_0、 DL_ADC12_INPUT_CHAN_12、DL_ADC12_reference_VOLTAGE_VDDA、DL_ADC12_SAMPLE_TIMER_SOURCE_SCOMP0、 DL_ADC12_averaging_mode_disabled、 DL_ADC12_BURN_OUT_SOURCE_DISABLED、DL_ADC12_TRIGGER_MODE_NEAT、DL_ADC12_Windows_COMP_MODE_DISABLED);
    您还可以查看此示例代码以供参考。
    此致、
    Diego Abad
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢、Diego、TI Mastermind!  那就算了。“  您不知道我在搜索该解决方案时有多少小时。