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.

[参考译文] ADS1298:ADC 引脚电压帮助

Guru**** 2455560 points
Other Parts Discussed in Thread: ADS1298

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1403111/ads1298-help-with-adc-pin-voltages

器件型号:ADS1298

工具与软件:

大家好!

随附的原理图显示了两个作为独立 SPI 从器件进行连接的 ADS1298。 我们无法从任何 IC 读取数据。
如果您对任何 IC (尤其是以下引脚)的连接有其他看法、我们将不胜感激:


引脚17 (TESTP_PACE_OUT1)
引脚18 (TESTN_PACE_OUT2)
引脚24 (VREFP)
引脚25 (VREFN)
引脚37 (CLK)
针脚47 (\D\R\D\Y\)
引脚60 (RLDREF)
引脚61 (RLDINV)
引脚62 (RLDINV)
引脚63 (RLDOUT)


提前感谢您的帮助!

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

    您好、Mohammed:

    感谢您发送编修。

    对于初学者、您能在加电后读取任何器件寄存器吗? 这至少将确认 SPI 通信已正确设置。 您还可以测量以下相对于 AVSS 的 VCAPx 引脚:

    • VCAP1 =带隙= 1.2V
    • VCAP2 = VCM (中间电源)
    • VCAP3 (电荷泵)= AVDD + 1.8V
    • VCAP4 = VREF/2

    关于器件连接:

    1. nDRDY 引脚在两个 IC 上保持悬空。 该引脚用作 MCU 的中断、以读取最新的转换数据。 如果没有该中断、在 SPI 读取期间、数据可能会被完全覆盖或丢失。
    2. 应通过将 RLDOUT 连接到 RLDINV (放大器反相输入)来闭合 RLD 放大器的反馈环路。 1M||1nF 网络通常包含在反馈环路中。 RLDOUT 通过某种保护网络(即499k||4.7nF)驱动至患者。
    3. 假设在使用内部基准、VREFP/N 没有问题。
    4. TEST_PACE_OUTx 引脚可保持悬空

    此致、

    Ryan

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

    你好穆罕默德-我刚刚遇到了你的一个较旧的帖子,这是在我离开办公室的时间错过的。 我对此深表歉意。 我将删除该主题、我们可以在此处继续讨论。

    很明显、您以前运行过这些器件。  引起我注意的一个细节是、您似乎在转换之间切换 START 引脚(即单次模式)。 这种方法有效、但不建议用于大多数应用、因为它会将数字滤波器复位并将有效转换数据的延迟增加4倍。 相反、最佳实践是同时在两个器件上一次将 START 引脚从低电平变为高电平。 这会将它们的转换同步到同一个 CLK 边沿。 转换数据将在每个 nDRDY 下降沿以配置的数据速率提供。 然后、您必须启用每个器件的相应 nCS 引脚、并在发生下一个 nDRDY 中断之前从每个器件读取全部216位。 例如、500SPS 的数据速率将要求 SCLK 频率至少为216kHz (建议采用更高的频率以允许时序裕量)。

    如果这一点很清楚、或者您有任何其他问题、请告诉我。

    此致、

    Ryan

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

    您好、Ryan。 感谢您的回答!

    我们可以在配置后立即读取所有寄存器、它们看起来与代码相同。
    chip ID/reg 0为0x92、这与我们要使用的器件(ADS1298IPAGR)相匹配

    * rambuf1: adc1, rambuf2: adc2, array indexes = reg.addresss.

    文件夹 电流
    rambuf1 0x200016e4 ""Æ\ x01À"
    [0] 0x92 ''
    [1] 0xc6 'Æ'
    [2] 0x01 "\x01"
    [3] 0xc0 à μ s"
    [4] 0x00 "\x00"
    [5] 0x10 '\x10'
    [6] 0x81''
    [7] 0x81''
    [8] 0x81''
    [9] 0x81''
    [10] 0x81''
    [11] 0x81''
    [12] 0x81''
    [13] 0x00 "\x00"
    [14] 0x00 "\x00"
    [15] 0x00 "\x00"
    [16] 0x00 "\x00"
    [17] 0x00 "\x00"
    [18] 0x00 "\x00"
    [19] 0x00 "\x00"
    [20] 0xf0 'Ð'
    [21] 0x00 "\x00"
    [22] 0x00 "\x00"
    [23] 0x08 '\b'
    [24] 0x00 "\x00"
    [25] 0x00 "\x00"
    Rambuf2 0x200016c8 ""Æ\ x01À"
    [0] 0x92 ''
    [1] 0xc6 'Æ'
    [2] 0x01 "\x01"
    [3] 0xc0 à μ s"
    [4] 0x00 "\x00"
    [5] 0x10 '\x10'
    [6] 0x81''
    [7] 0x81''
    [8] 0x81''
    [9] 0x81''
    [10] 0x81''
    [11] 0x81''
    [12] 0x81''
    [13] 0x00 "\x00"
    [14] 0x00 "\x00"
    [15] 0x00 "\x00"
    [16] 0x00 "\x00"
    [17] 0x00 "\x00"
    [18] 0x00 "\x00"
    [19] 0x00 "\x00"
    [20] 0xf0 'Ð'
    [21] 0x00 "\x00"
    [22] 0x00 "\x00"
    [23] 0x08 '\b'
    [24] 0x00 "\x00"
    [25] 0x00 "\x00"

    我们的 VCAPx 电压似乎符合您的要求:

    VCAP1:1.22V
    VCAP2:2.52V
    VCAP3:4.44V
    VCAP4:1.23V

    AVDD:+2.5V
    AVSS:-2.5V

    1.我同意 nDRDY 必须在理想情况下由代码读取。 不过、如果用示波器查看 SPI 时钟(顶部迹线)和 nDRDY 引脚、您会注意到 SPI 读取在转换完成后开始。
    我们的 ADC 配置为500sps、SPI 端口以100Hz 的频率读取数据。 nDRDY 高电平脉冲为9.640ms、这对于您提到的滤波器复位延迟来说是合理的。



    2.这听起来可能是罪魁祸首、尽管我认为当 ADC 应该能够读取输入时、这会影响 RLD。  下面是我们的装置。 我们插入一个1Vpp 正弦波、无直流偏置。
    如果输入是差分的、我希望即使在禁用 RLD 的情况下也能获得读数、对吧?


    最后一个问题:如果我们使用+2.5/-2.5模拟电源、如何设置 CONFIG3->VREF_4V 位? (在代码中清除)。  数据表中仅说明必须设置该位"仅与5V 模拟电源配合使用"。  不清楚这是不是由 简介。

    再次感谢!

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

    你好、Mohammed、

    感谢您确认寄存器读回和额外的电压测量值。 我同意引脚电压接近预期值。

    1. 配置器件寄存器并进行回读后、您是否发送 RDATAC 命令(10h)以返回到读取数据连续模式? 如果不是这样、您必须在每个帧的开头发送一个 RDATA 命令(12h)、以便将最新的转换数据加载到输出移位寄存器中、然后立即发送216个空位以在时钟沿输出数据。  您将需要使用单独的 nCS 信号从每个器件独立读取、因为这些信号共享 SPI 总线。
    2. 在正弦波测试中、信号发生器输出是否为单端? (信号连接到 IN1P、GND 连接到 IN1N)? 这种设置对于初始测试是可以的。 只需确保 PCB GND 也与信号发生器接地共享。 此设置不需要 RLD。
    3. 关于最后一个问题、5V 模拟电源是指 AVDD 和 AVSS 之间的差异、因此 VREF_4V = 1b 是正确的。

    此致、

    Ryan

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

    谢谢 Ryan。

    1.复位后、我们发送 SDATAC、写入所有寄存器并返回主程序、而不使用 RDATAC (即此后连续数据被禁用)。

    2.右侧,单端。 我们测试了连接在一起的 SIGNAL->IN1P、GND->IN1N 和发生器 GND +电路板 GND
    3.我们 按照建议将 VREF_4V 设置为1b、所有作为输出的 GPIO 都设置为"1"、以查看 ADC 是否复制了我们的命令。

    以下是两个 ADC 的结果(adc1data、adc2data)。  前3个字节与数据表中的状态字匹配、但第3个字节应同时读取0x0F (禁用导联脱落检测、GPIO 设置如上所述)。

      文件夹 电流 参数
    ◢μ A ADC1数据 {databyte =[27]、ch_data =[8]、...} adcdata_t
      ◢databyte 0x20000b88 "à Ω" uint8_t [27]
      [0] 0xc0 à μ s" uint8_t
      [1] 0x00 "\x00" uint8_t
      [2] 0x0F "\x0f" uint8_t
      [3] 0x00 "\x00" uint8_t
      [4] 0x00 "\x00" uint8_t
      [5] 0x00 "\x00" uint8_t
      [6] 0x00 "\x00" uint8_t
      [7] 0x00 "\x00" uint8_t
      [8] 0x00 "\x00" uint8_t
      [9] 0x00 "\x00" uint8_t
      [10] 0x00 "\x00" uint8_t
      [11] 0x00 "\x00" uint8_t
      [12] 0x00 "\x00" uint8_t
      [13] 0x00 "\x00" uint8_t
      [14] 0x00 "\x00" uint8_t
      [15] 0x00 "\x00" uint8_t
      [16] 0x00 "\x00" uint8_t
      [17] 0x00 "\x00" uint8_t
      [18] 0x00 "\x00" uint8_t
      [19] 0x00 "\x00" uint8_t
      [20] 0x00 "\x00" uint8_t
      [21] 0x00 "\x00" uint8_t
      [22] 0x00 "\x00" uint8_t
      [23] 0x00 "\x00" uint8_t
      [24] 0x00 "\x00" uint8_t
      [25] 0x00 "\x00" uint8_t
      [26] 0x00 "\x00" uint8_t
      文件夹 电流 参数
    ◢μ A ADC2data {databyte =[27]、ch_data =[8]、...} adcdata_t
      ◢databyte 0x20000ae0 "à Ω" uint8_t [27]
      [0] 0xc0 à μ s" uint8_t
      [1] 0x00 "\x00" uint8_t
      [2] 0x08 '\b' uint8_t
      [3] 0x00 "\x00" uint8_t
      [4] 0x00 "\x00" uint8_t
      [5] 0x00 "\x00" uint8_t
      [6] 0x00 "\x00" uint8_t
      [7] 0x00 "\x00" uint8_t
      [8] 0x00 "\x00" uint8_t
      [9] 0x00 "\x00" uint8_t
      [10] 0x00 "\x00" uint8_t
      [11] 0x00 "\x00" uint8_t
      [12] 0x00 "\x00" uint8_t
      [13] 0x00 "\x00" uint8_t
      [14] 0x00 "\x00" uint8_t
      [15] 0x00 "\x00" uint8_t
      [16] 0x00 "\x00" uint8_t
      [17] 0x00 "\x00" uint8_t
      [18] 0x00 "\x00" uint8_t
      [19] 0x00 "\x00" uint8_t
      [20] 0x00 "\x00" uint8_t
      [21] 0xFF 'ÿ' uint8_t
      [22] 0xe5 å Ω uint8_t
      [23] 0x62'b' uint8_t
      [24] 0xFF 'ÿ' uint8_t
      [25] 0xef ï uint8_t
      [26] 0x17 '\x17' uint8_t

    在使用示波器检查 GPIO 引脚时、有些引脚被随机设置为输入、有些引脚被设置为随机状态的输出。
    已检查同一总线上两个 ADC 和所有其他芯片的 nCS 引脚、看起来都正常。

    还有一些结果超出了0x7FFFFF-0x800000范围。

    ~的 SPI 端口设置为 I ² C 4.9MHz。  想知道这是否是 SPI 时钟问题?   

    感谢您的帮助!

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

    尊敬的 Mohammed:

    只是为了确认、您是在每个 ADC 读取事务的帧开头发送 RDATA 命令(12h)吗? 总帧长度应该是28个字节、并且在发送命令时 DOUT 上的第一个字节应该被主机忽略?

    第一个器件的 GPIO 引脚似乎配置正确、但第二个器件的 GPIO 引脚配置不正确。 您是否可以探测 GPIO 引脚以确认寄存器是否按预期写入?

    这些值为 ADC2的字节21-26、实际上非常接近 ADS1298的量程中点。 传递函数是双极的、因此正值范围为000001h 至7FFFFFh、负值范围为 FFFFFFh 至800000h。

    SCLK = 4.9 MHz 是可以的、但您必须考虑名为 tSDECODE 的时序规格、这是发送一个字节所需的最短时间。 规格为4 * tCLK、其中默认情况下 CLK = 2.048 MHz。 因此、4 * tCLK 必须< 8 * tSCLK、或 SCLK 必须> 2倍 CLK。 在4.9 MHz SCLK 下、发送 RREG 或 WREG 命令时、您需要在字节之间插入一个小延迟。 更多详细信息、请参阅第9.5.1.2.1节和第9.5.2.9节。

    此致、

    Ryan

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

    您好、Ryan、

    调整 tSDECODE 实现了这一点。  代码对 WREG 和 RREG 命令进行计时、 字节间没有延迟。
    结果也以无暂停的27字节突发形式读取。

    通过在字节之间添加6 x tclk 延迟、一切都成功了。

    我也在使用相同的缓冲区进行写入和读取、 在读取数据时、MOSI 引脚正在发送最后接收到的字节、而 ADC 将其误认为是新命令、因此会增加更多噪声。

    通道9.5.1.2数据表是合理的:"器件尝试每八个串行时钟解码和执行命令。"

    我要将它标记为已解决。 感谢您的帮助!