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.

[参考译文] TMS570LS1224:使用 ADC 通知从 ETPWM 触发 ADC

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/732097/tms570ls1224-triggering-adc-from-etpwm-with-adc-notification

器件型号:TMS570LS1224
主题中讨论的其他器件:HALCOGEN

大家好。

是否有人从 PWM 事件启动 ADC 转换方面有经验?

我正在尝试实现 PWM 电流控制、其中 eTPWM 在 ADC1事件组上触发 ADC 转换、但不会发生 ADC 通知。 我没有问题直接触发 eTPWM 周期通知、也没有问题直接从软件启动 ADC 转换并获取 ADC 通知。 我在 HalCoGen 中工作、我已经为 ADC1Event 启用了 VIM 通道。 以下是我的 eTPWM 和 ADC 设置的屏幕截图:

我已经在触发器上尝试了上升沿和下降沿。

以下是我的 sys_main.c 中的代码:

/*用户代码开始(3)*/
etpwmInit();
adcInit();

adcEnableNotification (adcREG1、adcGROUP0);
_enable_IRQ ();

etpwmStartTBCLK();

while (1){


/*用户代码结束*/

我还附加了我的项目文件。

任何想法?e2e.ti.com/.../4024.mypwm.zip

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

    从所附的 HALCoGen 项目中、etPWM 的 pinmux 未设置。 您是否手动修改了 pinmux 设置9 pinmux.c)?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 QJ、

    我尚未手动进行任何引脚多路复用设置。 在 HalCoGen 的 pinmux 选项卡中、etPWM 的 pinmux 被启用、但是我需要做任何其他事情吗?

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

    这是我使用 PWM (来自 etPWM1B)下降沿触发 ADC 采样的测试用例:
    请致电: adcStartConversion (adcREG1、adcGROUP0);

    int main (空)

    /*用户代码开始(3)*/
    gioInit();
    adcInit();
    etpwmInit();

    /*设置 ADC 模块的 COS */
    /*此位仅影响仿真操作。 它定义了 CPU 进入时 ADC 内核时钟(ADCLK)是否立即停止
    *调试模式或它是否应继续正常运行。*/

    /* ADC 模块根据三个转换组的配置继续所有正在进行的转换。*/
    adcREG1->OPMODECR |=(0x1 <<24);

    /*配置 ePWM 时基计数器保持在仿真模式下运行*/
    etpwmREG1->TBCTL |=(0x2 <<14);

    /*启用 RTI 比较0中断通知*/
    rtiEnableNotification (rtiNOTIFICATION_COMPARE0);

    _enable_IRQ ();

    etpwmStartTBCLK();

    adcEnableNotification (adcREG1、adcGROUP0);
    adcStartConversion (adcREG1、adcGROUP0);

    while (1);
    /*用户代码结束*/

    返回0;


    /*用户代码开始(4)*/
    void adcNotification (adcbase_t * adc、uint32组)

    adcData_t 数据;//针对通道8
    uint16 cmpA;

    count = adcGetData (adcREG1、adcGROUP0、&data);
    adcValue_ch8[num]= data.value;

    //更改 epwm2_A 的占空比
    cmpA =(etpwmREG2->TBPRD * adcValue_ch8[num])/0xFFF;
    etpwmSetcmpA (etpwmREG2、cmpA);