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.

[参考译文] ADS1191:功能测试

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/821553/ads1191-functionality-test

器件型号:ADS1191
主题中讨论的其他器件: SN74LVC3G17SN74LV1T34ADS1292ADS1298ADS1294

您好!

我还有一个问题...

下面、我首先要重点介绍 ADS1191。
我构建了以下电路: AVDD = 3.3V、DVDD = 1.8V

当我连接电路时、我希望 DRDY 在我将"启动"设置为"高电平"时立即开始脉冲、或者在我发送命令时立即更改其状态。
但是、线路始终保持低电平。
我可以通过某种方式测量芯片的全部功能、还是电路完全可用?

要转换我的5V 数字输入、我使用 SN74LVC3G17和 SN74LV1T34、如下所示:

提前非常感谢!

Hendrik

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

    您好 Hendrik、

    感谢您的发帖!

    如何配置 CLKSEL 和 START 引脚? 有关 ADS92的主时钟的配置选项,请参阅表9。

    此致、

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

    您好、Ryan、

    CLKSEL 和 START 引脚以及 PWDN/ RESET 引脚均配置为高电平。 不过,我不知道这一点。 该引脚是否应设置为高电平以进行上电并获得短复位脉冲、 或者如果我始终将该引脚设置为高电平、是否可以?

    例如:

    此致、

    Hendrik

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

    如果我尝试对其进行仿真、我只能创建宽度为3.56µs μ s 的脉冲、这是否太大?

    我不确定 t_RST 和 t_POR 的确切时间。 这些是 t_MOD 的倍数、对吧? t_MOD 再次为4*tclk 或16*tclk。 根据 CLK_DIV 的不同、如果我使用频率为512kHz 的内部时钟、默认设置为0。 16*tclk 不是问题,4*tclk 最大为3.56µs μ s,如果我可以假设 t_clk 在465 - 514ns 的范围内。

    但是、如果内部时钟为512kHz 且 CLK_DIV = 0、则时间数据指定为 TBA... 是否建议使用例如2048kHz 的外部振荡器?

    我的 START 算法的工作原理如下:

    设置 reset==1;
    等待3809µs
    设置 RESET==0;"脉冲"
    设置 reset==1;--> 3.56µs
    等待9µs
    设置 START ==1;
    设置 CLKSEL = 1;
    等待1s;
    设置 RESET==0;"puls"
    设置 reset==1;--> 3.56µs
    等待9µs

    如果我使用此算法、我至少可以观察到 DRDY 从高电平变为低电平。

    但是、DRDY 应进行脉冲...

    是否需要对 CLK 引脚执行任何操作? 例如、使用下拉电阻器或其他东西将其拉至 GND?

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

    您好、Hendrick、

    /RESET 脉冲对于启动例程至关重要。 请遵循数据表中的 POR (上电复位)指南进行计时。

    内部 Δ-Σ 调制器设计为以128kHz 的频率运行。 主时钟频率可以是512kHz 或2.048MHz、但必须选择适当的 CLK_DIV 设置以获得128kHz 调制器频率(Fmod)。

    /RESET 脉冲必须短于2^9 tMOD 周期(即4ms)、以避免断电。 但是、它还必须保持低电平至少1个 tMOD 周期、该周期等于1/128kHz 或7.1825us。 因此、3.56us 的时间不够长、无法正确复位器件。

    如果器件使用内部512kHz 主时钟、CLK 引脚可保持悬空。

    此致、

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

    您好、Ryan、

    我找到了我的错误。 无论出于何种原因、我忽略了 CLKSEL、RESET 和 START 也是数字输入这一事实、因此也需要最大值 VDD + 0.1V 和我的10.0Vinos 的5V 电压过高。 不管怎样、DRDY 现在会发生脉动、并在我发送命令时更改其逻辑电平。

    但现在我有一个新问题。


    我可以观察到、我可以使用命令将器件置于待机模式、也可以通过唤醒来再次终止器件。
    但是、如果我现在遵循协议并首先发送 SDATAC 来读取寄存器、我可以看到 DRDY 希望提供数据、但最终不会提供数据。
    例如、我为器件 ID 发送 SDATAC (->可能带 STOP)-> READREGISTER (00100000 00000001)。 因此、我可以看到 DRDY 指示数据可用、但 MISO 输出不会输出任何数据、如图所示。
    我还使用正常的示波器直接测量器件的 MISO 输出、您可以看到时钟经过、但不会导致答案。 (参见图片)

    SPI 设置为 CPOL = 0、CPHA = 1。

    你对我有什么想法吗?

    DRDY 的电平下降约为20ns、对吗?

    我还尝试更改字节之间的 CS 级别、以再次同步器件。

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

    我再次在电路板上重建了一些东西。
    我不是在 SN74LV1T34之后挑选 MISO、而是直接将引脚设置为 DOUT。 如图所示、DOUT 输出一些东西、但信号不是很好。
    我想在 ID:01010000得到答案、我肯定不能从这个问题上说、您有什么想法吗?

    每次我发送命令读取寄存器时、DOUT 的输出也会更改。

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

    您好 Hendrik、

    我很高兴您发现了数字 I/O 电源电平的原始问题。

    /DRDY 低电平脉冲的持续时间将取决于您何时在通信期间发送 SCLK 信号。 第一个 SCLK 下降沿清除/DRDY 标志。 SDATAC 不会停止 ADC 转换-这是 STOP 命令的作用(仅在 START 引脚连接至低电平时使用)。 因此、/DRDY 将在转换完成时继续脉冲、但加载到输出移位寄存器中的数据将与您发送的 SPI 命令(即 RREG)相关。

    此致、

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

    您好、Ryan、

    到目前为止我的问题还不能解决、我想再次更准确地向大家解释一下目前不起作用的地方以及我做的事情。 您可能会发现我的过程中出现了错误。

    我附上了两张图片。
    在第一张图片中、您可以看到我的时序参数、我的 SCLK 为1MHz。 (我还尝试了不同的 SCLK、例如2.048MHz 和4MHz。)
    在我看来、我与第8页数据表中给出的所有时序要求相匹配。 是这样吗?
    但是、我仍然无法从 ADS1191获得正确的输出信号。 我仍在尝试读取 ID 的寄存器。 为此、我发送操作码1 = 00100 0000 (ID 寄存器)、操作码2 = 0000 0001 (1寄存器)、然后默认发送0000 0000、以便我为芯片提供 SCLK 来应答。

    1) 但是从图片中可以看到、芯片已经通过操作码1处的 DOUT (MISO)发送了一些内容、这是正确的吗? 在我看来、只要我不要求芯片直接发送东西、DOUT 应该为= 0。 (芯片对所有其他命令执行相同的操作)
    2) DRDY 会发生磨合、因此在命令或读取过程中它会不稳定、这是正常的还是甚至是所需的、还是存在错误?
    3) 您可以看到、芯片的答案非常不干净。 芯片有时会提供干净的位、但通常我会得到随机生成的位序列、并且也会受到与 DRDY 相同的中断。 当您查看第二幅图像时、您可以看到我对芯片完全相同的请求开始、并得到完全不同的答案。 这种情况每次都会发生。 我仍然希望 ID 为0101 0000、但我对此有很大的不满。
    我的过程如下、我启动芯片并上拉启动、然后发送 SDATAC、然后将 ReadRegister 发送到芯片。 命令之间的 DRDY 脉冲。 我尝试不更改启动级别、只使用操作码来控制它、这也起作用、但不会更改我的任何功能。
    我总共有6个未连接的悬空引脚。 IP2、IN2、IP3、IN3和 GPIO 1和2。 前4个通道是逻辑的、因为我只有一个通道、我不需要它们。 对于 GPIO 1和2、我不确定。 我不使用它们、是否可以将它们悬空或这可以解释我的错误? 我应该将其拖动到 GND 吗?
    为了确保待机和唤醒的操作码正常工作、芯片至少能够识别我的命令。

    很抱歉、我的报告很详细、但我有点绝望、现在找不到我的错误。 我希望您有一个想法。

    此致、
    Hendrik

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

    好的、我已经解决了 DOUT 输出信号不干净的问题。 故障是 SN74LV1T34。 然而、ADS1191仍然为我提供随机输出信号、并且与我预期的输出和"问题1。") 保留。  

    我认为红圈仍然是我的问题。

    加电顺序是否仍然存在问题?
    如果我为 ADS1191加电、然后激活复位(等)等引脚、可以吗? 例如、我的电源启动、然后我打开 RESET 引脚直到 t_POR、提供 RESET 脉冲、然后使用器件? 在数据表中、看起来两个器件都是同时激活的、很遗憾、我无法使用我的电源。

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

    您好!

    你有什么想法吗?
    我还尝试在默认模式下读取这些值、因为 ADS1191以 RDATAC 模式启动... 但这些值显然也是完全随机的。 无论我对正弦波施加何种电压、7FFF 和8000输出之间始终有任何值(ADS1191的值范围)。

    谢谢!

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

    您好 Hendrik、

    请原谅我的答复中的拖延。

    上面有很多信息可供我了解(顺便说一下、非常详细!)。 首先、让我澄清一下、您要发送的用于读取器件 ID 的命令在技术上是不正确的-也就是说、第二个字节应该是0x00来读取一个寄存器。 RREG 操作码中的第二个字节是要读取 的寄存器数量减一。  如果您告诉器件要读取两个寄存器、但只发送足够的 SCLK 来读取一个寄存器(即8个时钟)、然后不读取下一个寄存器、则输出移位寄存器中的数据可能会损坏。 尝试在 SDATAC 命令之后发送0x20 0x00、以便只读取 ID 寄存器。

    此致、

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

    Hendrik、

    我从您在2019年7月23日上午4:08 CDT 的帖子中注意到以下几点:

    1. 在 每个字节之后、您似乎要重置/CS 信号。 这是不正确的、因为它将重置 ADS1298上的 SPI 接口。 要读取数据、您必须在整个帧内保持/CS 为低电平。 读取数据的典型 SPI 事务涉及:
      1. 检测/DRDY 下降沿
      2. 启用 SPI 接口(/CS =低电平)
      3. 发送足够的 SCLK 来读取所有数据(状态字+ 8个24位通道= 216位)
      4. 禁用 SPI 接口(/CS =高电平)
      5. 等待下一个/DRDY
    2. 要发送 SPI 命令、该过程与上述过程类似。 大多数命令只涉及发送一个字节、但是对于 WREG 和 RREG、 所有字节 必须在一个帧内发送:
      1. 启用 SPI 接口(/CS =低电平)
      2. 发送 SDATAC 命令
      3. 忽略随后的/DRDY 脉冲
      4. 在一帧中发送整个 RREG 或 WREG 命令。
        1. 对于 RREG、该命令将包括两字节命令以及您正在读取的每个寄存器地址的空字节(0x00)。
        2. 对于 WREG、该命令将包含两字节运算代码以及您要写入的每个寄存器值一个字节。
      5. 发送 RDATAC 以在准备就绪时返回到读取数据。
      6. 禁用 SPI 接口(/CS =高电平)
      7. 等待下一个/DRDY

    此致、

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

    您好、Ryan、

    很不错! 我可以读取正确的 ID!
    问题是、我要求寄存器太多、感谢您的澄清! 实际上、我在 SDATAC 和 RREG 之间设置-/CS =高电平。 如果我在整个通信期间将其关闭、则始终会发出正确的 ID。

    为了让我正确理解您对数据的读取、我再次提出一个问题。
    您说、如果我检测到 DRDY 的下降沿、我必须读取数据、对吧? 如果我在 DRDY =低电平时发送 SCLK、还是必须恰好在下降沿发生? 目前、我将随机发送或启动 SCLK。 一旦启动、DRDY 当然不会再发生脉动。

    一旦我再次开始发送4x8 SCLK (两个状态字节和两个单通道字节)、我就会再次遇到 MISO、SCLK 的第一个上升沿也是如此巨大的初始脉冲。 是不是很好? 我不再将其与其他命令一起使用、因此我不知道为什么要将其安装在那里。

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

    Henrik 您好、

    我很高兴工作了! 在一个帧中发送 SDATAC 和 RREG 时、您不必保持/CS 为低电平-也许您违反了一些时序限制。 但是如果它在工作、那么它就很棒!

    您可以在/DRDY 下降沿之后的任何时间读取转换数据。 但是、/DRDY 下降沿之间的周期是恒定的(等于数据速率)、因此当下一个/DRDY 下降沿发生时、输出移位寄存器中的旧数据将立即被新数据覆盖。 连续 RDATAC 模式用于定期读取数据、而不是随机读取。 如果您退出 RDATAC 模式(即发送 SDATAC)、您仍然可以在每次要读取最新转换结果时监控/DRDY 并发送 RDATA 命令。 在 RDATA 模式下、不存在用新数据覆盖旧数据的风险。

    我在上一篇文章中提到了 ADS1298、但忘记了您使用的是 ADS1191。 步骤相同、只是要读取所有数据的位数会有所不同(计算结果为32位)。

    此致、

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

    您好、Ryan、

    不幸的是、我对数据的读取不是很满意。

    首先重新计算数据(默认设置):
    我假设 Vref = 2.42V、增益= 6且 n = 16。
    因此、我将按如下方式计算我的值:
    LSB =(2xVref)/增益/((2^n)-1)、我将二进制补码中的16位转换回、并将 SEe 与 LSB 相乘。 计算是否正确?
    但是、整个过程应该只是一个缩放、无论如何、我应该能够识别我的信号。

    我想在 RDATAC 模式下读出我的信号。 (我对 RDATA 尝试了相同的方法、结果相同)
    当我启动器件时、它将以 RDATAC 模式启动、并且当我直接发送32个 SCLK 以 while 环路的形式进行读取(即、在1MHz 的时钟下反复执行)。
    然后、数据在 SPI 中如下所示:

    前16位应指示器件的状态。 在默认模式下0000 0000、对吧? 然而、无论我做什么、我在第一个时钟期间总是在 MISO 导线上获得这个初始脉冲。 对于其他命令、我不再得到该值、即使我这么做、这些命令至少会正确执行。
    我首先假设这可能还不错... 我绘制了数据。 如果没有任何东西连接到电极、数据也会看起来像噪声。

    根据初始流程、我接下来应测试测试信号、即1Hz 方波。
    因此、我将寄存器设置如下:WREG CONFIG2 A3H
    和 WREG CH1SET 05h。 我还可以通过 RREG 看到寄存器设置已更改。 如果我现在通过 ADC 获取信号、我将获得除方波之外的所有其他内容... 正如您在以下测量中看到的、我只得到具有单个小峰值(而不是1Hz)的零线。

    这已经是错了... 但没关系。 之后我进行了复位、因此所有内容都再次处于默认模式、并尝试使用正弦波发生器进行正常测量。 但是、我遇到的问题是它有点类似于正弦波、但如果我更改频率和/或振幅、我会更改完整输出。 第一张图片应显示20Hz 时的正弦和100mV 的电压、第二张图片应显示1V 电压和相同频率时的正弦。 您可以看到、数据的形状看起来不同、但您看不到振幅的变化。 如果我更改频率、那么20Hz 时的频率看起来比1kHz 时的频率高、除了您真的无法再解释正弦波这一事实... 是的、我检查了示波器上的正弦。

     但是、我可以检测输出信号的变化、例如、如果我施加白噪声、我会向您展示转换:

    总之、我可以说我可以测量信号、但我无法令人满意地显示信号。 我自己根据两个补码计算了所有值、结果在任何地方都是相同的、因此至少不是绘图仪的故障、它太慢了。

    最后是正弦波的典型测量系列、我已经将这些值转换为两个补充:

    X =[-32768 32767 27936 -32768 32767 -32768 32767 -32768 32767 -32768 32767 3833 -32768 32767 ...
    -32768 32767 -32768 32767 -16025 0 32767 -32768 32767 -20212 3224 32767 -32768 ...
    32767-32768 32767 12024 1536 32767 -32768 32767 -32768 27937 32767 -32768 ...
    32767-32768 32767-32768 32767 17526 -29284 32767 -32768 32767 -32768 ...
    32767-9030...]

    您是否仍然对我需要更改设置以获得更好的结果有任何想法、或者我的计算错误?

    很抱歉消息很长。

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

    尊敬的 Henrik:

    在我们继续之前、您需要纠正此问题:

    您说您的"时钟"频率为1MHz。 您是指串行 SPI 时钟(SCLK)吗? 每个 SCLK 周期内有多个/DRDY 下降沿、我可以向您保证 ADS1191不支持2MHz 以上的数据速率。 :) 是否加载了/DRDY 引脚? 由于您的例程中没有监控/DRDY、因此请断开/DRDY 与主机控制器的连接、并重复上述相同的 SPI 捕获。 /DRDY 将在第一个 SCLK 下降沿之后空闲高电平、并保持该状态直到下一个采样准备就绪(即@ 500SPS、两个采样之间有2ms 的时间)。 您的1MHz SCLK 只需32us 即可输出全部32位时钟、因此应该有足够的额外时间、并且/DRDY 不应在32个 SCLK 期间再次切换。 /DRDY 的目的是将其用作主机控制器的中断。

    请阅读数据表的 DOUT、数据检索和 RDATAC 部分。 您在 MISO 开始时看到的这个"脉冲"是状态字的开头、对我来说是正确的(0xC0 0x00)。

    此致、

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

    嘿、Ryan、

    我自己认为问题可能是什么。 这个... 我也有点困惑。
    为电路板供电后、我可以测量接地与\CS、SCLK 和 MOSI 之间的连接。 我发现这与我的 tripple Schmidt 触发器有关。 但是、我只是更换了它、结果是一样的。 我不认为我的所有组件都损坏了... 您是否具有 SN74LVC3G17相关经验、可以告诉我这是否正确?

    此致、

    Hendrik

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

    您好、Ryan、

    我认为一切都按计划进行。
    再次感谢您的耐心和帮助!
    可能很快会有一个有关 ADS1294的问题。 :D
    通过一些信号处理、您可以重建正弦波。  

    祝你度过美好的一天!

    Hendrik

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

    很棒的工作,Hendrik!