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.

[参考译文] TMS320F28033:当 InitAdc()和 SetupADC()之间存在时间延迟时、ADCRESULT2有很大变化

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/840922/tms320f28033-adcresult2-has-big-variation-when-it-has-time-delay-between-initadc-and-setupadc

器件型号:TMS320F28033

您好!

 InitAdc()和 SetupADC()之间的时间要求是什么?

我们会发现  在软件中被阻止的情况下,InitAdc()和 SetupADC()之间的时间延迟是否为1秒。  ADCRESULT2中的 ADC 结果将有很大变化、范围达到9LSB 变量。 但对于其他通道、变化仅为1-2LSB。   

如果没有时间延迟、则所有通道结果的变化都是正常的。 添加以下代码。 谢谢。

e2e.ti.com/.../8662.1.txt

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

    Daniel:

    执行这两个函数之间没有特定的延迟要求。 唯一所需的延迟与1ms ADC 上电延迟有关:

    我不认为 ADC 误差与1s 延迟时间直接相关、而是与1s 期间发生的一些系统事件相关。

    Tommy

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

    嗨、Tommy、

    是的、可能会发生一些系统事件。 但我们不知道如何找到它。  

    我们在下面进行了两项测试。

    在 InitAdc()和 SetupADC()之间,有 GPIO、I2C、SPI 和数据库 初始化等。

    如果数据库初始化函数 DB_Init (void)被阻止、则延迟时间为1秒 然后  、ADCRESULT2中的 ADC 结果 将具有高达9 LSB 的变化。

    (DB_Init()说明:如果 EEPROM 被初始化、将 EEPROM 数据复制到 RAM、否则将默认值复制到 EEPROM 和 RAM。)

    在此处添加 DB_Init()函数。

    e2e.ti.com/.../7317.database.c

    2.  当 ADCRESULT2上出现高达9 LSB 的变化时。

    除了对软件版本进行一些更改外、其他所有内容都与以前相同。  

    V8.00是异常.map 文件、9LSB 更改。 将软件版本更改为 V8.01后。  没有其他问题了。

    所有软件函数都相同、唯一的变化是函数地址。 这很奇怪。 它与函数地址是否有关系?

    此外,如果我们在 SetupADC()之前添加一些 NOP()函数,它也可以解决问题。  谢谢。

    e2e.ti.com/.../V8.00.map.txt

    e2e.ti.com/.../V8.01.map.txt

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

    Daniel:

    我看到 TRIGSEL=9。  EPWM3是否在 SetupADC()之前运行?

    我还注意到、所有 SOC 都启用了同步采样模式、但 SOC0-SOC7单独配置。  这可能会导致互补通道的双转换并覆盖结果寄存器。

    是否正在处理勘误表中的 ADC 报告?

    您能不能再详细描述一下这些错误吗?  它是仅在第一个转换系列上、还是在系统运行时影响所有转换?

    Tommy

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

    尊敬的 Tlee:

    1.是的,我们 在 GPIOinit()中初始化 EPWM3,它在 SetupADC()之前。

    2 、互补通道的含义是什么? 它是指 SOC0和 SOC1吗?

    3.在勘误表中,建议单独配置奇数或偶数 SOC,不建议同时配置这两个 SOC。

    现在、我们同时配置 SOC0~SOC7。 如果我们取消奇数 SOC 的配置、则在调试期间不会出现此类问题。

     它会影响所有转换。 但只有 ADC 结果2的结果变化、其他 RESULTx 保持稳定。

    如果您需要更多信息、请告诉我。 谢谢。

      

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

    尊敬的 Tlee:

    请与您联系、了解 ADC 工作流程。

    使用同步采样模式、SOC0和 SOC1通过 CHSEL=2选择相同的通道。

     ADCRESULT0和 ADCRESULT1转换结果来自什么?  还是   SOC0或 SOC1的随机结果?

    此外、根据下面的 ADC 并行采样说明。 是否可以覆盖结果寄存器中的值? 谢谢。  

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

    [引用用户="Daniel Fang]1. 是的,我们 在 GPIOinit()中初始化 EPWM3,它在 SetupADC()之前。

    如果在配置 ADC 之前运行触发源、则在配置期间触发器到达的竞争条件下、可能会损坏第一组样本。  由于您说效果超过第一个系列、因此有源 ePWM 可能不是问题所在。

    [引用用户="Daniel Fang"]2.  互补通道的含义是什么? 它是指 SOC0和 SOC1吗?[/QUERP]

    您在 TRM 部分发布了一个片段、介绍了同步采样的工作原理。  在这里、它提到同步采样将始终对 A 和 B 通道执行操作。  我使用"互补"代替"配对"来描述分配的 A 和 B 通道。

    同步采样的结果将始终映射到已启用 SOC 中最近的 ADCRESULTEVEN 和 ADCRESULTEVEN+1寄存器。

    [引用用户="Daniel Fang"]3. 在勘误表中、建议单独配置奇数或偶数 SOC、建议不要同时配置这两个 SOC。

    现在、我们同时配置 SOC0~SOC7。 如果我们取消奇数 SOC 的配置、则在调试期间不会出现此类问题。

    您是否查看 了 TRM?  我在勘误表中没有看到如何配置同步 SOC。  勘误表 描述了已知的 ADC 问题。

    您是否清楚地了解 TRM 对同步采样模式的描述?

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

    Daniel:

    自上次更新以来已经有一段时间了。  我假设您能够解决您的问题。

    如果没有、请回复此主题。  如果该线程由于超时而锁定、请创建一个描述问题当前状态的新线程。

    Tommy