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.

[参考译文] CCS/TMS320F28069M:ADC 同步采样

Guru**** 2522770 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/865621/ccs-tms320f28069m-simultaneous-sampling-in-adc

器件型号:TMS320F28069M

工具/软件:Code Composer Studio

你好!

我正在尝试在 DSP (F28069M)中使用同步采样 ADC 模式、但由于它未读取正确的值、因此出现了问题。 我遵循 TMS320x2806x Piccolo 技术参考手册中建议的步骤。 是否有任何代码可用于比较我的代码? 有人能解释我采样信号之后的过程(或方式)吗?

非常感谢你能抽出时间。

此致、

Álvaro μ A

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

    阿尔瓦罗

    感谢您访问 E2E 论坛。

    我假设您使用顺序(非同时)模式进行采样、ADC 采样正确吗?  如果是、请发布您拥有的 ADC 设置代码片段、我将查看该代码片段的正确性。  

    关于同步模式的一个注意事项是、它只对 A/B 通道对有效;也就是说、如果 CHSEL = 1且 SMODE = 1、则 ADC 将对 ADCINA1和 ADCINB1采样。  无法同时对2个 ADCINAx 或2个 ADCINBx 进行采样。

    将查找您的回复。

    最棒的

    Matthew

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

    我将随附我的代码。  当我使用顺序模式时、效果很好。 这两种方法都位于同一代码中。 顺序被注释。

    非常感谢您的观看!

    e2e.ti.com/.../6082.Example_5F00_2806xAdcSoc.c

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

    阿尔瓦罗

    我随附了三个修改后的.c 文件、如下所示:

    1) 6082.example_2806xAdx_INTSEL.c -请先尝试,在同步模式下,我看不到您为 ADCINT1/2/3配置源 EOC 的位置,因此我添加了该选项。  如果这是问题、则 EOC0将触发全部3个 ISR、这将在 SOC0转换完成后发生

    2) 6082. example_2806xAdif_INTSEL_dis_odg.c -在代码中,我将确保禁用奇数 SOC 的触发器,这可能会导致在上述情况下出现额外的样本(如果您是背靠背调试 sil/sequaling 模式)

    3) 6082. example_2806xPSAdh INTSEL_dis_ODD ACQ1.c - 以上全部、但我已将 S/H 窗口增加1以查看这是否会改善您的结果

    最棒的

    Matthew

    e2e.ti.com/.../6305.6082.Example_5F00_2806xAdcSoc_5F00_INTSEL.ce2e.ti.com/.../0474.6082.Example_5F00_2806xAdcSoc_5F00_INTSEL_5F00_dis_5F00_odd.ce2e.ti.com/.../7282.6082.Example_5F00_2806xAdcSoc_5F00_INTSEL_5F00_dis_5F00_odd_5F00_ACQPS1.c

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

    非常感谢您的回答。

    但我仍然遇到同样的问题、使用您与我共享的代码:我的硬件无法读取我的输入。 当我使用安全模式时、它会读取输入(值显示在"Expressions"窗口的表达式中:AdcResult.ADCRESULTX)、但当我同时使用配置时、此表达式不会更改(我已激活"Refresh"按钮)。 我不知道原因。 为什么会发生这种情况? 非常感谢您的观看!

    此致、

    Álvaro μ A

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

    我意识到我不会在正确的时刻读取 ADC 信号、并且 ADC 中断会在随机时间(使用安全读取)触发。 我将解释此代码的用途:

    我想控制3个频率为60kHz 的降压转换器。 它们的 PWM 信号被移位120度、但它们读取不同的信号、因此它们的任务可能不同。 因此、我声明了3次中断。 在每次中断时、我读取 ADC 模块2的不同信号、进行多次计算、然后执行占空比值(COMPA 和 COMPB、第一个用于产生工作 PWM 信号、第二个用于设置 ADC 读取时间。 它必须处于占空比的一半)。 PWM 具有死区时间。

    总结以下问题:

    -每个 COMPB 的 PWM 都应管理 ADC 中断的触发、但不起作用。 当应该只触发一个时、有很多触发(2或3个周期)(由 GPIO12、18、22显示)。 没有人会在正确的时刻燃烧。 我认为 COMPB 不会更新其值。

    我无法实现同步采样 ADC 模式。

    我非常感谢您的帮助。 了解并理解代码对我来说非常重要。

    此致、

    Álvaroe2eti.com/.../3034.Example_5F00_2806xAdcSoc.c

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

    阿尔瓦罗

    我需要更详细地查看代码;但有一点我想尝试为 ADCINT 启用连续运行

    在235行

    AdcRegs.ADCCTL1.bit.INTPULSEPOS= 1;
    
    AdcRegs.INTSEL1N2.bit.INT1E = 1;//启用 ADCINT1
    AdcRegs.INTSEL1N2.bit.INT1CONT = 1;//启用 ADCINT1连续模式
    
    
    AdcRegs.INTSEL1N2.bit.INT2E = 1;//启用 ADCINT2
    AdcRegs.INTSEL1N2.bit.INT2CONT = 1;//启用 ADCINT2连续模式
    
    
    
    AdcRegs.INTSEL3N4.bit.INT3E = 1;//启用 ADCINT3
    AdcRegs.INTSEL3N4.bit.INT3CONT = 1;//启用 ADCINT3连续模式 

    最棒的
    Matthew

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

    我发现了这个问题,现在,我认为一切都正常:问题出在函数中:"AdcOffsetSelfCal();"。 此函数由 TI 团队创建、用于调整 ADC 偏移。 我不知道它的工作方式、但它修改了" ADCINTSOCSEL1和 ADCINTSOCSEL2、它永远不会返回到初始配置。 我设置此配置、现在同步采样工作。

    非常感谢你的帮助。 没有你们,我就不能解决这种混乱。

    此致、  

    Álvaro μ A