STM32 ADC 噪声 2

电器工程 ADC 噪音 stm32
2022-02-03 08:20:34

我刚刚用 STM32F2 测试了我的第二个设计,现在它是 STM32F207ZFT6,ADC 行为与我的第一个应用程序中的相同 - ADC 中有强噪声。

电路板原理图的重要部分

未连接任何信号的电流输入噪声:

通过浮动引脚接收到的信号

注意:在上面的信号图中,垂直轴的单位是 ADC 位,而不是伏特!;不要被它的图例“[V]”弄糊涂了,对于这个测试,我们使用我们修改过的程序来查看粗略的 ADC 数据。

即使 CPU 模拟引脚短路到 GND 也会出现相同的噪声,如下所示: 输入信号与引脚短路到地

采样信号中存在超过 30 LSB 甚至更多的永久性尖峰,尽管我认为它们不应超过 5-10 LSB。

另一个细节:

  • 2面PCB,在底部还有其他连接,但大部分都是用GND信号浇注的——数字和模拟通用,模拟地没有分开。由于电路板消耗很少,低于 100 mA,我认为它不应该引起这样的噪音。

  • 电压参考 VREF 3.3V 运算放大器缓冲,100nF 和 10uF 并联阻隔,与 VREF/2 相同;每个处理器电源引脚都被 100nF 电容阻挡

  • 在我们的旧应用程序中,我们使用了相同的设计理念,但使用的处理器是 AduC834;它也有12位ADC,信号噪声只有几个LSB,没有问题;主要区别在于使用了 AduC 的内部电压基准,没有外部电压基准

  • 我们已经测试将处理器模拟接地引脚从电路板公共 GND 断开,并使用额外的电线将其直接连接到电压参考 VREF 接地,没有效果

  • 三相网络测量装置,有3个模拟电压通道和3个电流通道,带可切换增益前置放大器;CPU 振荡器 25 MHz,PLL 内部时钟 120 MHz,ADC 时钟为 30 MHz(符合技术规范),我们已测试将主内部时钟(因此所有辅助时钟)减慢四分之一,但没有任何影响

  • ADC 以每 50 Hz 网络周期(即每 156 微秒)的 128 次转换速率对输入信号进行周期性采样;结果由 DMA 传输到内部 RAM;RAM 中的数据通过绝缘 RS485(在另一块板上)传输并在我们的程序中可视化。我们已尝试将转换时间延长至最大,但没有效果

  • 除了 CPU,只有 3 个 opams、2 个模拟开关、I2C 温度计和 3 个 ULN 开关(测试期间未使用),由线性 LF33 稳压器供电,通常由另一块板上的切换器提供 5V DC 供电,但在测试期间切换器是断开连接,LF33 由透明的实验室 5V 直流电源供电。我确信只有处理器振荡器可以在板上振荡。

  • 用示波器检查信号没有得到决定性的结果,信号太弱了

有这个处理器系列 ADC 性能经验的人吗?

关于信号强度:即使模拟输入短路,我在示波器上看到 5-10 mV(峰峰值)的噪声 - 使用焊接到板上的最小接地线长度的同轴电缆测量。使用标准探头时,噪声大约高出两倍,这可能是由于接地不良(一般 EMC 噪声?)。

这是我的板的图像: 组装板的图像

和板的底部: 板底图

正如我上面所报道的,即使信号接地,大约 30 LSB 的噪声仍然存在于 ADC 转换数据中。

4个回答

我认为 ADC 除了 Fred 引用的三个输入之外还有第四个输入:它的时钟。至少对于某些类型的 ADC,时钟上的抖动或相位噪声会影响 ADC 测量。

您说您有一个 25 MHz 的振荡器,但正在以 30 MHz 运行 ADC,因此您有一些 PLL 参与其时钟的生成。如果效果不佳,则其不规则性可能是转换噪声的来源。您可以尝试更改软件配置(即使是暂时的)以不使用 PLL 并且只使用输入时钟或对其进行分频?

我相信一些微控制器还具有一种机制,可以在读取 ADC 读数的同时暂停大部分数字电路,以降低噪声。你可能会考虑看看这样的事情是否可行。

您看到的噪音有很多可能的原因。了解 ADC 具有三个输入非常重要:

  1. 输入引脚(设计为信号输入的引脚)
  2. 参考输入(Dout = 2^n * Vin/Vref)
  3. 电源引脚(电源 + 接地)

其中任何一个上的噪声都可能产生您所看到的噪声,并且假设 ADC 本身没有缺陷,则噪声必须通过这三个路径之一进入。

为模拟和数字使用相同的接地可能具有不错的 ADC 性能,但您必须仔细布置 PCB,以便所有数字环路电流都与模拟环路隔离。

在这种情况下,环路是信号或电源线(在这种情况下应被视为“噪声”信号)在 PCB 上的整个电流路径。因此,对于电源线,它将是从电源进入电路板的地方,沿着走线直到它到达电源引脚,通过 IC 中的所有晶体管,从接地引脚出来,然后沿着电阻最小的路径返回到电源进入电路板的地方。那是一个电源回路。

但是,如果您在电源旁路方面做得很好,那么该环路中的交流电流就不会太多,因为您将拥有一个更小、更本地化的环路,即旁路帽的电源侧到电源引脚到接地引脚并返回到地旁通盖的一侧。如果您的所有数字电源都被紧密旁路,那么您的电源回路将大部分是干净的,并且所有嘈杂的数字电源都被限制在短旁路电容回路中。

信号环路(包括 Vref 环路)以相同的方式工作 - 信号进来,绕到 ADC,从 ADC GND 出来,然后回到信号地(希望是信号开始的同一位置)。如果该环路穿过数字环路,您可能会注入噪声。因此,通常一个良好的混合信号设计将一个 GND 用于模拟和数字,会将数字全部放在一侧,将模拟全部放在另一侧,而 GND 位于电路板的末端,正好位于分界点。它通常不是那么简单,你必须做出妥协,但这就是想法。

您提到“由于电路板消耗很小,低于 100 mA,我认为它不应该引起这样的噪音。” 这更多地与系统被绕过的程度有关。与旁路良好的 1000mA 系统相比,旁路不良的 100mA 系统在接地层中的数字噪声要多得多。

希望这可以帮助...

我已将 PCB 重新设计为 4 层。而且 - 多么令人惊讶 - 噪音消失了!更多细节在这里

电路板设计确实不尊重推荐的一般规则。

我们再次对其进行了重新测试。标准板的典型噪声在http://imgur.com/a/TU9RQ的 Fig1 上。

为了确认问题是由错误接地引起的,我们做了以下修改:

  • 增强的公共接地(图 2 上的修改板和图 3 上的适当噪声)
  • 模拟接地与数字接地的分离以及它们在 VSSA 处理器引脚上的相互互连(图 4)。

他们都没有帮助。所以我很害怕即使重新设计为 4 层 PCB 后问题会再次出现......

为了测试 PLL 的影响,我们将其关闭,内核仅由外部 25 MHz 晶振提供时钟。噪声下降了(图 5),但我认为它只是由较低的系统时钟引起的(通常,内核由 PLL 的 120 MHz 提供时钟),而不是由停止的 PLL 引起的,因为当我们在 25 处重新切换回 PLL 时MHz,噪声与没有 PLL 运行时的噪声相同。

唯一明显的效果是通过单个处理器引脚同时测量 VREF/2 信号和使用第三个处理器 ADC 的每个电压和电流对并从电压和电流信号中减去它 - 然后调制噪声降低到大约一半(在http ://imgur.com/a/EeqUo,上红色图=标准信号,下蓝色图=测量噪声减法后的信号)。但是我不能使用第三个 ADC 进行噪声测量,我需要它来完成另一项任务,所以这不是我的解决方案。