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.

[参考译文] ADS1282-HT:读取和写入寄存器

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1037970/ads1282-ht-reading-and-writing-the-registers

器件型号:ADS1282-HT
主题中讨论的其他器件:ADS1282ADS1283

您好!

我能够写入和读取除寄存器0x0a (FSC2)之外的 ADS1282寄存器。 我假设、我可以写入/更改该寄存 器、因为 ADC 输出正在更改、但每当我读取它(0x0a)时、返回的值都是0x0a。  我可以毫无问题地对 FSC0 (0x08)和 FSC1 (0x09)进行写入和读取。

我在这里错过了什么?

此致、

Marius Raducanu  

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

    您好、Marius、

    任何校准寄存器之间都没有什么不同。 我确实觉得奇怪的是返回的值是0x0a、复位值是0x40。 您能否对其进行重置并读回以查看是否获得重置值?  

    最棒的

    Cole

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

    您好、Cole、

    是的、奇怪的是返回的值是0xA、与寄存器编号相同。 首先、我怀疑我在固件中将返回的值与寄存器编号交换、但事实并非如此。 写入寄存器会根据文档影响输出(更改增益)、但每次读取的值都是0x0a。 例如、第一个寄存器0x00、按应有的方式读取/返回0x20 (ID)。 正如我说过的、我可以写入/读取所有其他寄存器、而不会出现任何问题。 我正在构建第二个系统、我将对其进行测试、以查看我是否遇到同样的问题。

    只要使用 SPI、我就会使用系统中的 RESET 引脚重置 ADC -我将此用作芯片选择的替代产品、在同一 SPI 上具有 DAC (AD5600)。  

    另一个奇怪的问题是在 CONFIG1 (0x02)中设置增益。 我能够顺利地对寄存器/增益 PGA[2:0]进行写入/读取。  在我 将 ADC 输入设置为零后、将增益从1更改为8通常会增加 ADC 输出"噪声"/波动。 增益的进一步增加(16至64)也会改变超过 4000个 ADC 单元的偏移-偏移寄存器不会改变、只有 ADC 输出。 您对此有什么解释吗?

    此致、

    Marius Raducanu

      

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

    您好、Marius、

    我想与您确认以下几点:

    我随时使用 SPI 通过系统中的 RESET 引脚复位 ADC:  

    请注意、这会重置寄存器设置并重新启动转换过程、这意味着您必须等待数据稳定后再查看测量结果。 这"有效"、但不建议使用。

    请注意、如果 SCLK 在64个 DRDY 周期内保持低电平、数据传输或正在进行的命令终止且 SPI 接口复位、则可以复位 ADS1282上的 SPI 接口。 我希望这些重置不会对行为产生影响。

    我将此用作芯片选择的替代产品

    除了重置器件外、您还可以执行一些操作来解决此问题。

    • 为每个 ADC 使用单独的 SPI 外设(如果 MCU 或 FPGA 可以支持)。
    • 多路复用 SCLK 信号、以便一次只与一个器件通信。 下面是一个示例原理图:

    e2e.ti.com/.../4505.ADS1281_2D00_2-Shared-SPI-Schematic-_2800_1_2900_.pdf

    • 或者、如果您未在 ADS1282上设置、则可以查看 ADS1283。 它提高了 SNR 并降低了功耗。

    在我 将 ADC 输入设置为零后、将增益从1更改为8通常会增加 ADC 输出"噪声"/波动。 增益的进一步增加(16至64)也会改变超过 4000个 ADC 单元的偏移-偏移寄存器不会改变、只有 ADC 输出。 您对此有什么解释吗?

    通常、增益和偏移是独立且不相关的误差、因此这是意外的。

    因此、我建议您深入研究您的测试设置。 有时、我看到用户忘记在输入短接后施加共模电压(而不是将其设置为 GND、这可能是共模电压、也可能不是、具体取决于电源。 尽管在内部短接输入会更容易一些)。 此外、为了消除测量中的噪声、最好运行多次校准并对结果求平均值、以使偏移收敛到最终值。  

    否则、是的、这是意料之外的。 SNR 和 THD 等常见规格随着增益的增加而降低、但4000个代码看起来很像。

    我们可以抓取 FFT 来查看是否有任何看起来不正确的东西。 如果可以、获取一些时域数据并将其放入模拟工程师计算器 https://www.ti.com/tool/ANALOGUE-ENGINEER-CALC 中、您可以获取 FFT (使用加载 ADC 数据按钮、并按照单击"帮助"按钮后所述格式化数据)。 如果您不熟悉、此博客应能帮助您了解其他一些内容、如 LSB 大小: https://e2e.ti.com/blogs_/archives/b/precisionhub/posts/it-s-in-the-math-how-to-convert-adc-code-to-a-voltage-part-1 

    最棒的

    Cole

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

    您好、Cole、

    "请注意、如果 SCLK 在64个 DRDY 周期内保持低电平、则可以重置 ADS1282上的 SPI 接口、数据传输或正在进行的命令终止、SPI 接口复位。 我希望这些重置不会对行为造成影响。"

    不、这不是问题。 我在同一 SPI 上有两个 DAC、用于为仪表放大器(INA128U)设置基准、以平衡应变桥。 我仅在系统通电时执行一次此操作。 这是一个原型板、在最终版本中、我将使用不同的 SPI -我已经在不同的问题/线程中与您讨论过这一点。

    在 ADC 输入端、我有 两个应变电桥、每个应变电桥由四个350欧姆电阻器仿真并由5V 供电。  

    我使用的是 ADS1282、因为它的额定电压为175C。  

    下面是我开发的应用的屏幕截图、其中我每秒绘制 ADC 输出。 该图从接近零的值开始、然后我将增益从1更改为64。 当我将增益更改为16时、该图在两个通道上跳转超过4000个单元(图中的第一步)。 在增益32处、另一个1000个单位(图中的第二步)跳跃。 当增益更改为64时,输出将降至~4000 (图中的最后一步)。

    应用程序还显示寄存器:20、52、1E、32、03、00、00、00、00、0A

    此致、

    Marius Raducanu

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

    嗨、Marius、

    我以为我认出了你的名字! 是的、温度额定值方面没有太多可做的事情。

    更改增益时代码出现较大跳转:

    关于这一点、我在了解时域中的 x 轴时遇到了一些问题(它看起来就像样片编号、不确定它是否是您采样率的上下文)。 但是、如果这在时域中相对"快速"、则更有可能出现不连续性(即4K 代码跳转)。

    当我们更改增益时、我们实际上会在 PGA 的反馈路径中输入和输出电阻器、并清除数字滤波器中的内容。 我的意思是、我们希望滤波器经过"重新稳定"过程。 更详细地说、您知道当您有阶跃输入到数字滤波器中时、您希望等待一段时间以使输出稳定。 在断开 PGA 的反馈环路以添加新电阻器的时序和将滤波器级的数据重置为"零"的时序之间、我们会得到相同类型的不连续性行为。  

    不要误解我、时序有点"手波浪"、但这是预期的。 当您之前说过这一点时、我认为新的增益设置在稍后收敛到4k 代码。 因此、我们刚刚建议、当您更改增益时、在软件中添加一个例程、要求在更改增益后输出稳定(就像第一次打开器件时应该有的例程一样)。 这有道理吗?   

    不同增益的不同趋稳点。

    关于每一项成果的汇点的变化,预计也会出现这种变化,原因有两个。 第一个是偏移始终以 PGA 为基准的输入。 因此、如果您具有固定的失调电压、更改增益将更改 PGA 之后的输出(以及在输出中看到的代码)。 这比 ADC 知识更丰富、如果您希望我发送它、上面有一个很好的 TIPL 视频。

    较小的已知事实是、增益1 至16、32和64的输入路径在物理上是不同的。 您始终可以通过查看规格表来推断这一点。 我在下面粘贴了 THD (屏幕上看起来模糊、单击它将以某种方式提高质量)。 因此、我知道我说过增益和偏移是不相关的、 但在误差分析中、就像我们使用具有不同失调电压和增益误差的不同不相关运算放大器一样(记录下来、我们不会为不同的增益级使用不同的运算放大器、我在误差分析中说明了一个点)。  

    一天结束时、这仍然是可以 校准的直流误差。 我们建议您在更改 PGA 设置时执行此操作、如数据表所示。

    希望这对您有所帮助。

    最棒的

    Cole

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

    您好、Cole、

     "我在了解时域中的 x 轴时遇到了一些问题 ..."

    ADC 通道采样时的平均值为2x50Hz、每秒显示一次。

    "因此、我们刚刚建议、当您更改增益时、在软件中添加一个例程、要求在更改增益后输出稳定下来(就像第一次打开器件时应该有的例程一样)。 这有道理吗? "

    我可以解决这个问题(更改增益后使偏移为0 -我使用 DAC 开发了一个自动偏移校准)、但我想 确认4000跳转是否正常/预期?

    此外、将增益更改为2 (10Adc)、4 (20ADC)或8 (40ADC)时、跳变不是很大、但在增益16、32和64上很明显。

    下面是另一个屏幕截图-将 增益从1更改为64。 这一次 、偏移较小、我不知道原因。

    不过 、我现在不知道为什么读取寄存器0x0a (FSC2)的值为0x0a。

    此致、

    Marius Raducanu

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

    您好、Marius、

    这很有帮助。 嗯、我可以说、这与我之前的解释非常相关、但我很惊讶地看到偏移似乎没有跳过相同的量。 所以 、总的来说、我不会担心。

    不过 、我现在不知道为什么读取寄存器0x0a (FSC2)的值为0x0a。

    这仍然是一个问题、但根本原因最接近您的读取例程。 如果写入操作改变了器件的行为(这意味着写入操作正常)、并且无论您只是复位还是刚刚完成对该寄存器的写入操作、读取操作都将产生0xA0、那么读取例程是有故障的。 不要误会我的意思、除了 这个特定的寄存器之外、没有任何其他寄存器的读取操作。 因此、在继续之前、我们必须验证基本假设。

    因此、我们需要验证代码是否正在执行正确的命令。 您能否使用 逻辑分析仪或示波器来验证是否发送了正确的命令?

    或者、如果第二个设置正在运行、您可以看到验证它不是单板问题。 我将看到我是否可以抓取其中一个 EVM 并重现此问题。  

    最棒的

    Cole

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

    您好、Cole、

    "因此、我们需要验证代码是否正在执行正确的命令。 您能否使用 逻辑分析仪或示波器来验证是否发送了正确的命令?"

    我确定使用/发送正确的命令(RREG)、因为我使用一条命令读取所有11个寄存器。 其他10被正确读取。

     void ADS1282_read_Registers_Data (unsigned char reg、unsigned char nrofreg、unsigned char * regdata);

    我已经开发并测试了成功的函数来读取和写入寄存 器-例如、更改增益或通道。

    "或者、如果第二个设置正在运行、您可以看到验证它不是单板问题。"

    我今天要这样做并进行确认。

    此致、

    Marius Raducanu

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

    嗨、Marius、

    啊、是的、指定要读取的寄存器数量 真的很难弄乱。 您最好不要单独读取寄存器。 这让我认为这可能会将其转换为器件错误类别、但我也必须在我的一侧尝试它。 这对我来说需要几天时间、预计下周中期会有更新。  

    谢谢、

    Cole

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

    您好、Cole、

    感谢你的帮助。

    读取该特定寄存器(FSC2)并不重要(另一个工作是读取/写入)。 我可以写它并观察相应增益的变化-因此读数不起作用、但写操作有效。 其他寄存 器确实对读取至关重要-例如、要更改增益或多路复用器(通道)、我必须先正确读取寄存器、更改相应的位、然后将其写回。

    我 了解更改 ADC 内部开关以设置增益的效果、但从使用角度来看、更改增益会导致失调电压变化非常不方便: 增益为2的10-20个 ADC 单元、增益为4的20-40个 ADC 单元、增益为8的40-80个 ADC 单元、增益为16、32和64的~4500单元跳转。  

    此致、

    Marius

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

    您好、Cole、

    我能够测试第二个系统、并且我获得了 FSC2寄存器常数(0x0a)的相同读数。

    偏移比第一个系统的偏移小得多 -我的预期结果是、随着增益的增加而成比例增加、增益64最大为200个 ADC 单元(不是~4000 ADC 单元跳转)。 这两个系统是相同的、唯一的区别是 ADS1282 -可能是第一个 ADC 有问题。

    此致、

    Marius

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

    您好、Cole、

      我在读取寄存器时出错:

    ADS1282_READ_Registers_Data (0、11、Receive_SPI);
    serial_out_CStr ("04、");
    for (i=0;i<10;i++)

    serial_out_Hex (receive_spi[i]);serial_out_char ('、');

    serial_out_Hex (10);OutCRLF ();

    我发送10、而不是发送到串行寄存器10。

    此致、

    Marius  

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

    您好、Marius、

      我在读取寄存器时发现了错误

    很棒的发现! 请告诉我问题是否得到解决。

     在更改增益时进行偏移变化非常不方便

    感谢您的反馈。 这是一个有趣的问题、因为很明显、设计团队希望用户在更改增益后重新校准。 鉴于此、我不会真正关心失调电压会发生多大变化、因为它将无论如何校准。 我需要重新校准根本不方便、但我没有系统知识来知道我需要经常校准会失去什么。 我知道、由于在设计过程中拧紧了一些容差、制造极低偏移器件(无需校准)可能会更昂贵、因此在这方面存在明显的折衷 (没有边际优势、因为我只需花时间进行校准即可获得类似的性能)。  

    如果您想进一步了解这对系统及其工作流程的影响、请随意阐述。 如果没有、我会将其传递给团队、看看如何更好地设计下一个器件。  

    谢谢、

    Cole

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

    您好、Cole、

    现在、我有两个相同的系统:其中一个系统在增益发生变化时具有可接受的失调电平、另一个系统在增益发生变化时具有较大的失调电压跳转。 我现在看到的更大问题是偏移不是恒定的、它们在增益发生变化时(在两个系统中)都会发生变化-例如:设置增益16 ->设置增益32 ->设置增益16 -当返回增益16时、偏移是不同的。 我仍在测试这些系统、让您知道结果并根据更多测试确认。

    我想开发一个自动增益控制-设置输入信号的增益、功能。 如果失调电压随增益变化、则无法完成此操作-或至少无法轻松完成-我没有尝试使用多路复用器来使用内部400欧姆电阻器来测量失调电压、我不知道它们是否保持恒定。

    目前、我正在设计的系统可以与 ADS1282配合使用-拥有解决方案或澄清不断变化的偏移将会进一步改善系统。   

    此致、

    Marius Raducanu  

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

    嗨、Marius、

    感谢您的背景。 我通常使用内部400欧姆电阻器来测量失调电压、这正是我们在数据表中生成某些规格时使用的电阻器。  我建议 对其进行评估。 这 是我开发自动增益控制的方法、同时在每次增益选择后仍校准偏移。  

    同时、我将了解我是否可以获得有关这些400欧姆电阻器容差的任何一般信息、因为我认为我们在数据表中没有这种信息。

    最棒的

    Cole

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

    嗨、Maruis、

    因此,偏移误差的主要来源是 PGA 的输入偏置电流(V_OUT_IB = I_Bias*R*GAIN)和电阻容差(除数据表中的电压偏移外)。

    我们在下图中为您提供输入偏置电流。 简而言之、10皮安斩波=关断、斩波导通时为1纳安。 另请注意、根据数据表规格、在210C 时会增加1000%。

    电阻器具有+/-15%容差、温漂容差可以忽略不计(1s ppm)。

    最棒的

    Cole

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

    您好、Cole、

    感谢您提供信息。

    正如我说过的、我有两个应该是相同的电路板。 一个在增益变化时具有大偏移、另一个在增益变化时具有可接受的(非常好)偏移。

    我想、第一个电路板有问题。 我将进行调查并报告。

    现在、我对 ADS1282的工作方式非常满意。 我将基于该 ADC 构建10个原型系统(175C)。 价格很高,但目前市场上唯一的选择。

    谢谢、

    Marius Raducanu

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

    很棒的工作,玛丽乌斯 在时间到来时、请随时单击顶部的"提问"相关问题。 这将有助于防止线程变得过长。

    是的、我肯定承认目前市场的发展趋势。 希望其他10块电路板上的构建能够顺利进行。 祝你好运。

    最棒的

    Cole