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.

[参考译文] MSP430I2040:SD24的输入电路(降噪)

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1110199/msp430i2040-input-circuit-for-sd24-noise-reduction

器件型号:MSP430I2040
主题中讨论的其他器件: INA333

我们希望将 MSP430i2040与多个差分输入信号配合使用。 一个是惠斯通电桥信号(恒定信号)、另一个信号应在2KHz 信号上测量(仅需要测量下缘)。

我们的测试显示了两个不同的问题:

首先、常量信号显示 SD24MEMx 字(噪声)上的高变化。 只有高字节是稳定字节、中字节具有 大约20至50 AD 步长的噪声、而低字节具有非常高的可读性(不可用)。 与其他高阻抗16位 AD-IC 的比较没有显示这些问题(最低位没有明显噪声)。 我们应该在 SD24输入之前放置什么输入滤波器电路来降低输入信号噪声、以此来稳定 至少 SD24MEMx 结果的16个高位。

其次、对于2kHz 信号、我们不知道如何参数化 SD24输入和 SD24寄存 器、因为实际上、我们似乎收到了某种平均结果、这很明显是错误的。 有人是否有类似问题的代码示例? 我们是否还需要 SD24输入端的输入滤波器。 从转换开始到就绪结果的最短转换时间是多少?

非常感谢您提供建议(软件和硬件)来克服这两个问题。

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

    您好!

    [~用户名="305799" url="支持/微控制器/MSP-low 功耗微控制器-group/msp430/f/MSP-low 功耗微控制器-forum/1110199/msp430i2040-input-circuit-for-sd24-noise-reduction "]

    首先、常量信号显示 SD24MEMx 字(噪声)上的高变化。 只有高字节是稳定字节、中字节具有 大约20至50 AD 步长的噪声、而低字节具有非常高的可读性(不可用)。 与其他高阻抗16位 AD-IC 的比较没有显示这些问题(最低位没有明显噪声)。 我们应该在 SD24输入之前放置什么输入滤波器电路来降低输入信号噪声、以此来稳定 至少 SD24MEMx 结果的16个高位。

    [/报价]

    当您注意到噪声时、过采样率(SD24OSR)设置为什么、以及您将 ADC 输入连接到的信号具有多高的阻抗?

    您使用的是内部基准还是外部基准?  此外、您是否在所有通道上都看到此噪声?  

    [引用 userid="305799" URL"~/support/microcontroller /msp-lust-power-microcontroller -group/msp430/f/msp430-lust-microcontroller -forum/1110199/msp430i2040-input-circuit-for-sd24-noise-reduction "]第二、由于2kHz 信号、我们不知道如何接收 SD24寄存 器的输入结果、我们显然是错误的、因此实际上是 SD24的。 有人是否有类似问题的代码示例? 我们是否还需要 SD24输入端的输入滤波器。 从转换开始到就绪结果的最短转换时间是多少?[/QUERT]

    当 OSR 设置为256 (默认值)时、您应该获得大约4kHz 的输出数据速率、对于您的2kHz 频率、该速率将恰好位于奈奎斯特频率。 通常、减小 OSR 会增加噪声、但在您的情况下、如果您遇到任何混叠、则可能会有所改善。 作为参考、MSP430I2040的调制频率固定为1.024MHz、并且使用已知的 OSR 值、您可以计算实际采样率。 最小采样时间的想法在这里并不适用、因为该器件的实际采样频率是固定的。

    您可以查看 我们《MSP MCU 上 Σ-Δ ADC 常见问题解答 》指南的第5.1.3节、了解 您可以在此处实现的 N=2 RC 抗混叠滤波器示例。 根据建议、对于大多数 Δ-Σ 转换器而言、低于调制频率100倍的 RC 滤波器应该足够了。  

    此致、
    Brandon Fisher

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

    感谢您的回答。

    当您注意到噪声时、过采样率(SD24OSR)设置为什么、以及您将 ADC 输入连接到的信号具有多高的阻抗?

    我们使用 SD24OSR 的默认值(OSR = 256)。 如"MSP430i2xx 系列用户指南(修订版 a)"第350页(3.2.7.2数字滤波器输出)、我认为如果要读取两个高字节、我们必须使用该值。 这是正确的、还是我们应该使用其他值?

    第二个 ADC-IC 在应答字上未显示噪声、其输入阻抗为几个 MOhm。 另一方面、根据数据表、MSP430i2040针对每个输入的输入阻抗小于200kOhm。 这可能是信号中产生噪声的原因、因为我们的输出信号(惠斯通电桥)在 Vcc 和 VSS 之间的总阻抗约为3KOhm?

    您使用的是内部基准还是外部基准?  此外、您是否在所有通道上都看到此噪声?  

    是的、我们使用的内部基准为1.2V。 噪声似乎在所有通道上。

    作为参考、MSP430I2040的调制频率固定为1.024MHz、并且使用已知的 OSR 值、您可以计算实际采样率。 最小采样时间的想法在这里并不适用、因为该器件的实际采样频率是固定的。

    我在数据表中找不到采样率的计算公式。 它写在哪里? 实际上、2KHz 信号的采样代码似乎无法正常工作。

      //初始化:
      SD24CTL = SD24REFS;
      SD24CCTL0 = SD24SNGL | SD24DF;
      SD24INCTL0 = SD24GAIN_16;
      _delay_cycles (3200);
      (笑声)
      //开始测量2KHz 信号下沿的开始
      SD24CCTL0 |= SD24SC;
      (笑声)
      //读取结果(稍后)
      X = SD24MEM0;

    您建议在此代码中进行哪些更改以获取下缘信号的实际值? 实际上、它是一种介于下缘和上缘之间的随机值

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

    您说结果不稳定。 您是否等待数字滤波器稳定? 您不仅可以启动 Σ-Δ ADC、还可以立即获得完美的结果。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [~引脚 userid="305799" URL"μ C/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp430-low-power-microcontroller-forum/1110199/msp430i2040-input-circuit-for-sd24-noise-reduction /4115188#4115188"]

    我们使用 SD24OSR 的默认值(OSR = 256)。 如"MSP430i2xx 系列用户指南(修订版 a)"第350页(3.2.7.2数字滤波器输出)、我认为如果要读取两个高字节、我们必须使用该值。 这是正确的、还是我们应该使用其他值?

    [/报价]

    不正确、您需要将 OSR 设置为256 才能获取高字节。 如果您目前没有建议的抗混叠滤波器、我会考虑添加该滤波器。 10kHz 是系列用户指南建议的截止频率。  

    [~ userid="305799" URL"/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp430i-forum/1110199/msp430i2040-input-circuit-for-sd24-noise-reduction /4115188#4115188]第二 个 ADC-IC 在输入上没有显示多个输入阻抗、它在 MOhm 上没有显示多个字。 另一方面、根据数据表、MSP430i2040针对每个输入的输入阻抗小于200kOhm。 这可能是信号中产生噪声的原因、因为我们的输出信号(续流桥)在 Vcc 和 VSS 之间的总阻抗约为3KOhm?[/引述]

    对我来说、3k Ω 的源阻抗似乎不够高。 由于该器件上的 SD24没有集成缓冲器、因此可能需要考虑输入阻抗、但惠斯通电桥阻抗非常低。 这里还有什么东西可能会增加您的阻抗或耦合噪声、也许是长电缆?  

    [~引脚 userid="305799" URL"μ C/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp430-low-power-microcontroller-forum/1110199/msp430i2040-input-circuit-for-sd24-noise-reduction /4115188#4115188"]

    我在数据表中找不到采样率的计算公式。 它写在哪里? 实际上、2KHz 信号的采样代码似乎无法正常工作。

    [/报价]

    我在上一篇文章中链接到的 Σ-Δ 常见问题解答文档的第5.2.1节介绍了如何获取采样率。  

    如该公式所示、ADC 采样频率(fs)是过采样率(OSR)上的调制频率(FM)。  您可能还会听到有时称为输出数据频率的采样频率、在这种情况下、您的调制频率可能称为采样频率。 我看到的语言并不总是一致的。 必须了解的是、在 Σ-Δ 上、它输出数据的频率(在本例中为1.024MHz/256 = 4kHz)、并且它实际运行频率(1.024MHz)。 这两者与过采样率有关。  

    [~用户名="305799" url="支持/微控制器/MSP-low-power-microcontrollers-group/msp430/f/MSP-low-power-microcontrollers-forum/1110199/msp430i2040-input-circuit-for-sd24-noise-reduction /4115188#4115188"]  //初始化:
      SD24CTL = SD24REFS;
      SD24CCTL0 = SD24SNGL | SD24DF;
      SD24INCTL0 = SD24GAIN_16;
      __delay_cycles (3200);[/quot]

    这部分代码对我来说很好。  

    [引用 userid="305799" URL"~μ C/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp430-low-power-microcontrollers-forum/1110199/msp430i2040-input-circuit-for-sd24-noise-reduction /4115188#4115188"]//  使用下缘开始测量
      SD24CCTL0 |= SD24SC;[/QUERP]

    在这里、您如何对该信号的下沿进行计时并触发转换? 这是在 ISR 内部发生的吗?

    [~ userid="305799" URL"μ C/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp430-low-power-microcontroller-forum/1110199/msp430i2040-input-circuit-for-sd24-noise-reimine-reduction /4115188#4115188"]  //读取结果(后面)
      X = SD24MEM0;[/引用]

    这部分看起来也不错。 您的大多数代码 实际上与我们的示例非常匹配。  

    您也可以尝试按照 David 的建议添加其他延迟。 这种测试应该相当快。

    此致、
    Brandon Fisher

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

    感谢您的回答。

    是的、我等待数字滤波器稳定。 此外,在开发的这一步中,PCB 始终处于通电状态(稍后,我们必须使用 LPM 进行优化,断电...,但这些问题目前还不存在)。 实际上、第一个测量是在上电几秒钟后进行的(用于测试的手动模式)。

    电路的模拟侧没有长电缆。 惠斯通电桥和 MSP430之间 PCB 上的长度约为5cm。 我们是否需要额外的电容器来滤除噪声。

    硬件:

    由于测量的电桥电压高于1.158V 的内部基准电压、因此我们在 MSP430的内部200K 中插入了两个额外的电阻器、以便 Vin+和 Vin-在电桥的中性位置都处于大约0.6V 的位置。 电容器还具有100nF 的电容。

    是否对此电路有进一步的建议? 实际上、我并不完全理解 SD24的内部工作。 我们是否需要使用两个电阻器来降低基准电压下 Vin+和 Vin-处的电压、或者我们是否可以直接将电桥连接到 Vin+和 Vin-?

    对于 SD24GAIN_16、数据表显示了一个 Vref/gain=58mV 的值。 这是否意味着 Vin+和 Vin-必须都低于0.58mV、或者只有差值(Vin+- Vin-)必须低于0.58mV。 因为如果第一种情况属实,那么我们绝对需要一个输入电压设置 为 GND 的轨到轨输出仪表放大器(INA333,...)来满足这些规范。 在第二种情况下、我认为我们可以将桥直接连接到 MSP430。

    软件:

    对于最终版本、我们需要确切知道 SD24MEMx 值何时就绪。 因此、我尝试使用以下初始化:
    SD24CCTL0 = SD24SNGL | SD24DF | SD24OSR_256 | SD24IE;

    和相关的读取函数:
    SD24CCTL0 |= SD24SC;
    while (! (((SD24CCTL0和 SD24IFG))){;}  //等待中断
    X = SD24MEM0;
    SD24CCTL0 &=~SD24IFG;

    在我看来、SD24IFG 标志在任何时候都没有被置位。 它堆叠在 while 循环中。 代码中的错误在哪里?

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

    您既启用 SD24中断、又使中断标志极点。 一个或另一个将起作用、但不能同时起作用。 如果您启用了全局中断、那么您更有一个针对该中断的中断服务例程。 (提示:当您读取 SD24MEM 寄存器时、IFG 标志会自动复位。)

    即使输入是在图表中绘制的、这些输入阻抗也不是恰好为1%的电阻器。 甚至不是10%。 因此无法精确调节输入电压。

    我看不到您在等待数字滤波器稳定的位置。 例如、设置 SD24INTDLY。