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/TMS320F28069:TMS320F28069 ADC 问题

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/814533/ccs-tms320f28069-tms320f28069-adc-issues

器件型号:TMS320F28069

工具/软件:Code Composer Studio

我一直在开发基于28069 MCU 的数据采集硬件、发现12位 ADC 存在一些问题、想知道是否有人可以解释。

我的 ADC 配置:  

AdcRegs.ADCCTL2.bit.ADCNONOVERLAP = 1;//启用非重叠模式
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.INTSEL1N2.bit.INT1SEL = 0;//设置 EOC0以触发 ADCINT1触发
AdcRegs.INTSEL1N2.bit.INT2SEL = 1;//设置 EOC1以触发 ADCINT2触发
AdcRegs.ADCSOC0CTL.bit.CHSEL = 0;//将 SOC0通道选择设置为 ADCINA0
AdcRegs.ADCSOC1CTL.bit.CHSEL = 8;//将 SOC1通道选择设置为 ADCINB0
AdcRegs.ADCSOC0CTL.bit.TRIGSEL = 0;//在 cputimer1上设置 SOC0启动触发器,但最初关闭
AdcRegs.ADCSOC1CTL.bit.TRIGSEL = 0;//在 cputimer1上设置 SOC1启动触发器,但最初关闭
AdcRegs.ADCINTSOCSEL1.ALL = 0x0;
AdcRegs.ADCINTSOCSEL2.ALL = 0x0;
AdcRegs.ADCSOC0CTL.bit.ACQPS = 8;//将 SOC0 S/H 窗口设置为9个 ADC 时钟周期,
AdcRegs.ADCSOC1CTL.bit.ACQPS = 8;

1、不同的 SR 给出的 ADC 结果略有不同。
  在大约一半的 Vref 提供输入时、我扫描了不同的 SR (100KHz 至3MHz)。 某些 SR 与正常的12位代码相差3-4 LSB。 不确定是否正常?

2.在较高的 SR (例如1.5MHz)下、我必须对两个通道都使用重叠、在这种情况下、通道 A 和 B 将相互影响。 例如、如果我打开或关闭其中一个通道、则另一个通道的 ADC 结果可能更高或更低。 因此、我必须使用非反向 LAP、且 ACQPS >7来消除这种情况、从而降低 SR。

3.当我测量小信号时,我可以观察到至少3-4LSB 的 ADC 结果不正确。 例如、我为 ADCIN 提供50mV 1KHz 正弦信号、该正弦信号以1024mV (Vref=2048mV)为中心、每当信号超过大约1024mV 的中值时、结果波形就像一个位(至少3-4 LSB)振荡、而不是波形平滑、然后变为正常。

4、当 SR = 2MHz 时、设置 ACQPS=6或7不起作用、结果波形变得相当糟糕、极大的失真。 但对于其他采样率来说、这是可以的、即使对于较高的 SR=3MHz 也是如此。 因此我设置 ACQPS=8、没关系。

ADC 是否存在这些已知问题? 还是由糟糕的布局造成的? 或者我的 ADC 配置不正确?

非常感谢有人能给我一些线索。

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

    [引用用户="Wang Ning]1. 不同的 SR 会产生稍微不同的 ADC 结果。  

      在大约一半的 Vref 提供输入时、我扫描了不同的 SR (100KHz 至3MHz)。 某些 SR 与正常的12位代码相差3-4 LSB。 不确定是否正常?

    这并不是普通的事。 不同的运行条件应该会产生小幅的结果变化。 总体性能应满足 数据表 规格。

    [引用用户="Wang Ning]2. 在较高的 SR (例如1.5MHz)下、我必须对两个通道都使用重叠、在这种情况下、通道 A 和 B 将相互影响。 例如、如果我打开或关闭其中一个通道、则另一个通道的 ADC 结果可能更高或更低。 因此、我必须使用非反向 LAP、且 ACQPS >7来消除这种情况、从而降低 SR。

    3.当我测量小信号时,我可以观察到至少3-4LSB 的 ADC 结果不正确。 例如、我为 ADCIN 提供50mV 1KHz 正弦信号、该正弦信号以1024mV (Vref=2048mV)为中心、每当信号超过大约1024mV 的中值时、结果波形就像一个位(至少3-4 LSB)振荡、而不是波形平滑、然后变为正常。

    4、当 SR = 2MHz 时、设置 ACQPS=6或7不起作用、结果波形变得相当糟糕、极大的失真。 但对于其他采样率来说、这是可以的、即使对于较高的 SR=3MHz 也是如此。 因此我设置 ACQPS=8、这是可以的。[/QUERP]

    确保您的输入信号得到适当调节(例如使用缓冲器)、以便它能够在 ACQPS 窗口内为 S/H 电容器完全充电。  从数据表中:

    您还可以查看 已知 问题的勘误表。

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

    我在 ADCIN 和运算放大器缓冲器之间有一个 RC 用于带限。 R = 50欧姆、C = 10nF。 您认为这是原因吗?

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

    王宁

    RC 截止可能会导致问题。  您需要将 RC 截止频率与 ACQPS 窗口内为 S/H 电容器充电所需的带宽相匹配。

    请注意、每个 ADC 通道的组(A 和 B)只有一个 S/H 电容器、因此 S/H 电容器的启动电压与该组的最新转换值直接相关。

    Tommy

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

    因此 、RC = 50 Ω* 10nF = 0.5us、而 ACQPS 窗口= 10*(1/45MHz)= 0.2us。 RC Tau 应明显小于 ACQPS 窗口

    我的理解是否正确?  如果是、我应该将 RC 滤波器放在缓冲器之前。

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

    正确、假设缓冲器具有足够的带宽来响应 S/H 充电曲线、将 RC 滤波器放置在缓冲器的输入端应能提供更快的稳定时间。

    如果缓冲器无法跟上 ACQPS 窗口的步伐、您还可以考虑更改 RC 值、以便电容器能够快速向 ADC 的 S/H 电容器提供大部分所需的电荷。  缓冲器将负责在采样之间对大电容器进行缓慢充电。  一个很好的尝试起点是~47nF。

    Tommy

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

    [引用 user="tlee"]

    正确、假设缓冲器具有足够的带宽来响应 S/H 充电曲线、将 RC 滤波器放置在缓冲器的输入端应能提供更快的稳定时间。

    如果缓冲器无法跟上 ACQPS 窗口的步伐、您还可以考虑更改 RC 值、以便电容器能够快速向 ADC 的 S/H 电容器提供大部分所需的电荷。  缓冲器将负责在采样之间对大电容器进行缓慢充电。  一个很好的尝试起点是~47nF。

    Tommy

    [/报价]

    另一个问题:

    如果我在 ADC 运行期间修改 ADC 寄存器、这是否会成为问题?

    我已经观察到、更改 nonVERLAP 位将导致 ADC 停止工作、结果寄存器中没有数据。 因此、在更新该位之前、我必须停止 ePWM SOC、然后重新启动 ePWM 计数、然后它工作正常。  

    是否需要复位 ADC 以更新 ADC 配置? 正如我看到的、如果我更改采样率或打开/关闭一个通道、数据会发生位改变。

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

    另一个问题:

    如果我在 ADC 运行期间修改 ADC 寄存器、这是否会成为问题?

    我已经观察到、更改 nonVERLAP 位将导致 ADC 停止工作、结果寄存器中没有数据。 因此、在更新该位之前、我必须停止 ePWM SOC、然后重新启动 ePWM 计数、然后它工作正常。  

    是否需要复位 ADC 以更新 ADC 配置? 正如我看到的、如果我更改采样率或打开/关闭一个通道、数据会发生位改变。

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

    应避免在转换器处于活动状态时更改全局 ADC 设置。  如您所见、最简单的方法是禁用 ADC 触发器并在 ADC 空闲时更新设置。  无需重置。

    如果修改的 SOC 没有待处理的触发器、则可以更新 SoC。

    Tommy