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.

[参考译文] TMS320F2808:通过在ADC初始化代码内添加一个DELAY ()来产生不需要的PWM脉冲

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/584163/tms320f2808-unwanted-pwm-pulse-by-adding-up-a-delay-inside-adc-initialisation-code

部件号:TMS320F2808

您好,

每次ADC从ePWMx SOCx触发器接收转换开始(SOC)请求,以自动定序 一系列转换。 我对ADC初始化代码内启用DELAY ()功能感到困惑, 不需要的PWM脉冲即将出现。 在ADC中用于 为ADC寄存器位加电的Delay()函数。 那么,为什么通过在ADC初始化代码中添加delay()来产生不必要的脉冲?

我在这里添加了两张快照图片:
I:在AdcRegs. Initialization中添加Delay()之前
II:在AdcRegs. Initialization中添加Delay()之后

I:在AdcRegs. Initialization中添加Delay()之前

II:在AdcRegs. Initialization中添加Delay()之后

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

    您是否要在照射行程之间重置设备?

    ADC和ePWM可能是从以前的执行中配置的,并且它们在运行delay()函数时仍处于活动状态。

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

    您好Lee:

    我没有使用任何'resetting'寄存器位将设备从运行状态重置。

    如果不使用延时(),则ePWM产生正确的脉冲,而一旦使用了延时(),ePWM不会产生正确的脉冲?

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

    其他人也可以帮我解决这个问题,为什么在ADC外设中使用延迟()后出现不需要的PWM脉冲?

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

    很抱歉,我没有收到您的第一个回复。 是否可以在加载程序之前尝试显式重置设备?

    初始化ADC和ePWM的顺序是什么? 您是否可以切换顺序以查看其是否有所不同?

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

    您好Lee:

    我已遵循您的上述假设,但不起作用,仍然启用了After Delay()函数的不需要的PWM脉冲。

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

    Asim,

    您是否可以使用"使用丰富格式"->"附加/插入文件"功能附加初始化代码?

    汤米

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

    您好Lee:

    在此处插入用于电压测量的初始化ADC外设代码:

    e2e.ti.com/.../TestADCVoltage1.c

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

    Asim,

    您是否可以尝试连接的以查看是否有帮助?  我在初始化过程中尝试将所有内容置于空闲状态,最后才启动ePWM计数器

    e2e.ti.com/.../TestADCVoltage2.c

    汤米

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

    同样的事情发生了,它们没有变化。 来自GPIO ePWM1A引脚的不需要的PWM脉冲。

    此代码的目标是“通过获得正确的ePWM计数器脉冲,在ADC序列中执行多个转换”。 如果ePWM计数器脉冲不正确,则无法在ADC上自动执行多个转换。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Asim,

    我注意到,您的init_system()配置与TI示例代码初始化有一些区别。 如果我将系统配置恢复为TI示例代码,我的设置似乎工作正常。

    我认为您的delay_US()问题可能是由于看门狗造成的。 我看到TI示例代码将禁用看门狗,而您的初始化仅为其提供一次服务。 如果看门狗在延迟期间会抛出复位,我不会感到惊讶。

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

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

    Asim,

    您使用的是TI主板还是定制设计?  您能否先从ADC_SoC示例开始,以确保其工作正常?

    我在设置中没有看到任何奇怪的行为。

    汤米