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.

[参考译文] TMS320F28027:具有 ADC 精度的产品

Guru**** 2589300 points
Other Parts Discussed in Thread: LAUNCHXL-F28027

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/665221/tms320f28027-porblem-with-adc-precision

器件型号:TMS320F28027
主题中讨论的其他器件:LAUNCHXL-F28027

您好!  

我还在这里发布了这个问题:  

https://electronics.stackexchange.com/questions/356934/how-to-improve-adc-accuracy?noredirect=1#comment856567_356934 

当 运行示例 Temp_F2802xAdcTempRunning 时、ADC 的返回值相差不多、但当运行 Example_F2802xAdcex两者 之间的方案时、返回值会很容易变化100个计数。 这些值是在 MCU 的 VSS 与接地端获取的、也是在包含电池的其他稳定源中获取的。 我更改了采样窗口以匹配项目示例的窗口。 为什么从内部连接的传感器返回的值比通过其他方式返回的值更精确? 引脚使用跳线电缆进行连接、未焊接。  

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

    射线、

    您使用的是什么板? 它是 TI EVM 板还是定制板?

    有噪声的外部转换通常指向有噪声的信号源或 ADC 输入端电路/连接的电气特性与 ACQPS 设置不匹配。 ACQPS 持续时间需要满足采样电容器的充电时间。

    从数据表中:

    Tommy

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

    嗨、Tommy、感谢您的帮助。

    我正在使用 Launchpad (LAUNCHXL-F28027)。

    我将窗口设置为40、与64的最大值相比、它看起来很高。 我将使用以下电路测试 ADC:

    电池是9V 碱性电池(我想电阻很小)。 在一个 kΩ 中、kΩ 和 R2分别为1k Ω 和5k Ω、而在另一个 kΩ kΩ Ω 和750k Ω。 我认为、将输入电阻与开关电阻进行匹配将会有所帮助、尽管电源电阻要大得多。  没有任何东西会返回稳定的结果。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我还尝试使用1.5伏电池时没有电阻、结果相同
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    射线、

    源电阻越低越好。 例如、通过直接测量1.5V 电池的端子、您会看到更好的结果。

    分压器的最佳设置是使用具有足够带宽和驱动强度的运算放大器缓冲电阻分压器输出、以便在 ACQPS 窗口内为 ADC 采样电容器充电。

    如果您可以承受低带宽、您还可以在分压器输出端放置一个非常大的大容量电容器(从4.7uF 左右开始并进行实验)、以便可以通过较低阻抗的大容量电容器而不是通过电阻器对 ADC 采样电容器快速充电。

    Tommy
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您从1.5V 电池读回了什么值? 如何将1.5V 电池接地端连接到电路板接地端?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的、电路板连接到同一接地端。

    结果:

    数据以10Hz 的频率输出。 ADC 配置如下:

    ADC_setIntPulseGenMode (myAdc、ADC_IntPulseGenMode_Prior); //ADCINT1在 AdcResults 锁存后跳闸
    ADC_enableInt (myAdc、ADC_IntNumber_1); //启用 ADCINT1
    ADC_setIntMode (myAdc、ADC_IntNumber_1、ADC_IntMode_ClearFlag); //禁用 ADCINT1连续模式
    ADC_setIntSrc (myAdc、ADC_IntNumber_1、ADC_IntSrc_EoC2); //设置 EOC2以触发 ADCINT1触发
    ADC_setSockChanNumber (myAdc、ADC_SockNumber_0、ADC_SockChanNumber_A0);//将 SOC0通道选择设置为 ADCINA4
    ADC_setSockChanNumber (myAdc、ADC_SockNumber_2、ADC_SockChanNumber_A2);//将 SOC2通道选择设置为 ADCINA2
    ADC_setSockTrigSrc (myAdc、ADC_SockNumber_0、ADC_SockTrigSrc_EPWM1_ADCSOCA);//设置 EPWM1A 上的 SOC0启动触发器、由于轮询 SOC0先转换、然后 SOC1
    ADC_setSockTrigSrc (myAdc、ADC_SockNumber_2、ADC_SockTrigSrc_EPWM1_ADCSOCA);//设置 SOC2在 EPWM1A 上启动触发、因为轮询 SOC0先转换 SOC1、然后转换 SOC2
    
    ADC_setSockSampleWindow (myAdc、ADC_SockNumber_0、ADC_SockSampleWindow_7_cycles);//将 SOC0 S/H 窗口设置为7个 ADC 时钟周期(6个 ACQPS 加1)
    ADC_setSockSampleWindow (myAdc、ADC_SockNumber_2、ADC_SockSampleWindow_40_cycles);//将 SOC2 S/H 窗口设置为7个 ADC 时钟周期(6个 ACQPS 加1)
    
    //启用 PWM 时钟
    CLK_enablePwmClock (myClk、PWM_NUMBER_1);
    
    //设置 PWM
    PWM_enableSockpulse (myPwm); //在组上启用 SOC
    PWM_setSockAPulseSrc (myPwm、PWM_SockPulseSrc_CounterEqualCmpAcincr);//从 CPMA 向上计数选择 SOC
    PWM_setSockAPeriod (myPwm、PWM_SockPeriod_FirstEvent); //在发生第一个事件时生成脉冲
    PWM_setCmpA (myPwm、0x0080); //设置比较 A 值
    PWM_setPeriod (myPwm、0xFFFF); //为 ePWM1设置周期
    PWM_setCounterMode (myPwm、PWM_CounterMode_Up); //向上计数并启动
    CLK_enableTbClockSync (myClk);
    

    我没有包含代码、但也配置了 ADC A1、A3、A4、A6和 A7

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

    让我们从头开始工作。

    禁用除 A7之外的所有 ADC 通道。 然后使用跳线穿过 J5-2和 J5-3、通过 A7对 GND 进行采样。 小心不要将5V (J5-1)短接至 GND。 这将为您提供接近零的稳定结果。 为了进行调试、如果只看到零、则可以将额外的偏移编程到 ADCOFFTRIM。

    一旦证明这是有效的、尝试使用 A7对 J1-1上的3.3V 电源进行采样。 您应该会看到接近4095的稳定转换。 同样、如果读数停留在4095、则可以从 ADCOFFTRIM 中减去。

    完成这两项工作后、直接使用 J5-2和 J5-3引脚对具有 A7的1.5V 电池进行采样。

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

    这些结果包括:

    仅 A7启动

    J5-2和 J5-3连接到1.5V 电池、J5-3连接到 J5-2

    J5-3连接到 J5-2、偏移为255

    J5-3连接到 J1-1、偏移为-256

    采样窗口为7

    -所有图都有250个计数范围

     

    以下是窗口为40时的相同测试:

    7周期窗口的结果似乎比40周期窗口的结果好。  

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

    射线、

    我在这里找到了一个 F28027 LaunchPad、并且能够通过 A7获得 GND 读数、其中通过 J5-2和 J5-3上的分流跳线将结果聚集在+/- 5个代码内。  用短跳线替换分流跳线 可将结果扩大至+/- 10个代码。  较长的电缆会为我提供+/- 20个代码。  您看到的误差可能是由您的设置的电气寄生效应引起的。

    为了获得良好的 ADC 性能、我们通常在 ADC 通道上放置一个非常靠近器件的电容器。  这有助于滤除大量噪声。  对于 LaunchPad、这些电容器看起来像是为了降低成本而被关闭。  遗憾的是、除了创造性焊接之外、在靠近器件的位置添加电容器是不容易的。

    这里最简单的权变措施是对输入信号进行过采样并对结果求平均值。  这种方法通常非常有效。

    Tommy

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