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.

[参考译文] ADS1259-Q1:仅当 CS 保持低电平时的有效数据。 当 CS 从高电平设置为低电平时无数据。

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1530362/ads1259-q1-valid-data-only-when-cs-held-low-no-data-when-cs-set-low-from-high

器件型号:ADS1259-Q1
Thread 中讨论的其他器件: MSP430F2619ADS1259

工具/软件:

我目前正在开发一款包含 ADS1259-Q1 和 msp430f2619 MCU 的工具。 目前、我的硬件和固件能够使用芯片选择 (CS) 始终为低电平(使用 GPIO 引脚设置)读取有效数据、如下所示:

* START =黄色(已圈出)、DRDY =紫色、CS =蓝色、DOUT =绿色。  

 

我正在为未来的设计做好准备、在该设计中、2 个 ADS1259-Q1 将位于一条 SPI 线路上(与单独的 CS、RST、START、DRDY 共享 SCLK、DOUT、DIN)。 我正在测试一种通信方案、该方案在一条 SPI 线路上使用 CS 和一个 ADS1259 进行准备。 不过、 启用 CS 时、我的 DOUT 保持非活动状态。 如下图所示:

* START =黄色(已圈出)、DRDY =紫色、CS =蓝色、DOUT =绿色。  

一些注意事项:

  • 这与在 CS 保持低电平时提供有效结果的硬件相同。
  • 版本之间固件的唯一区别是 CS 是否在整个操作(第一个屏幕截图中的工作版本)中保持低电平、或者 CS 仅在读取/写入操作(第二个屏幕截图)中变为低电平。
  • 数据表提到 CS 低电平与 SCLK 上升沿之间的最短时间为 50ns。 我在我的系统中测量了 300ns、并经过测试、延迟高达 15us、行为无变化。
  • 已检查 ADS1259 和 MSP430 侧的引脚以确认通过的信号。
  • MCU 使用 16MHz 外部时钟、ADS SCLK 使用设置为 2MHz 的 SPI 时钟
  • ADS1259 寄存器设置(适用于这两种情况):
    • CONFIG0 = 0x05:启用 SPI 超时、内部基准偏置
    • CONFIG1 = 0xc0:校验和、启用超出范围标志(用于确认有效数据)
    • CONFIG2 = 0x17:脉冲控制模式、14400sps。
    • 偏移:未设置
    • 设置为 RDATAC  

在尝试使用 CS 时、我会寻找其他调试提示。 此外、当在一条 SPI 线路上使用 2 个 ADS1259-Q1 来设计系统时、我希望能考虑任何建议

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

    尊敬的 Michael Green69:

    您能否将两个器件的 START 引脚拉为高电平、然后监控两个器件的 DRDY 引脚以查看它们是否都在工作? 您应该会看到 DRDY 以大约 1/数据速率切换。 如果您在上电时执行此操作、则预计默认数据速率为 10SPS。

    是否可以尝试启用 SDATAC 模式并使用 RDATA 命令而不是 RDATAC 模式?

    您是否有用于此故障排除工作的逻辑分析仪? 这将使它比尝试使用示波器容易得多,尤其是因为您希望同时查看更长的时间和多个信号 (>4)

    在您描述的配置中、绝对可以使用 2 个 ADS1259、因此此处存在其他一些问题

    -布莱恩

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

    “您能否将两个器件的 START 引脚拉为高电平、然后监控两个器件的 DRDY 引脚以查看它们是否都在工作? 您应该会看到 DRDY 以大约 1/data rate 进行切换“

    我目前在 1 条 SPI 线路上没有带有 2 个器件的硬件。 我正在使用 1 个器件和 1 个 SPI 进行测试。 在上述测试中、我假设需要在栅极控制模式下工作。 切换模式并将 START 保持为高电平、可得到以下结果:

    蓝色= CS、黄色= DRDY、绿色= DOUT

    在这里、DRDY 每 68-69us 产生一次脉冲、~14.4kHz。 这与我编程的 14400SPS 相对应。 DRDY 在~2.67us 内保持高电平、或者在 ADS1259 上针对 7.5MHz 时钟保持 20 个时钟周期。 我认为这与预期的行为和命令相对应。 我没有这方面的示波器 pic、但通过使用芯片选择、DOUT 也在此模式下保持非活动状态。

     

    “您可以尝试启用 SDATAC 模式并使用 RDATA 命令而不是 RDATAC 模式吗?“

    这就是事情变得有趣的地方:

    紫色= DRDY、蓝色= CS、黄色= DIN、绿色= DOUT

    在 SDATAC 模式+脉冲控制下、通过发送 RDATA(黄色)、ADS1259 芯片确实使用有效数据进行响应(通过校验和检查)。 我会评估此模式是否适用于我们的应用、但这可能是一个可行的解决方案。

    我仍想了解为何 RDATAC 与 CS 有问题。

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

    尊敬的 Michael Green69:

    在下面的图片中(这是您初始帖子中的第二张图片)、您希望在这里看到什么? 我无法看到 START 信号变为高电平、但我想这是在您圈出的紫色迹线后面吗? 然后 DRDY(紫色)变为高电平、然后大约 420us 后降至低电平。 此时、您将 CS 拉至低电平约 25us。 我假设在此期间您正在发送 SCLK? (这就是我推荐此任务使用逻辑分析仪的原因,因为这样您就可以同时捕获所有信号)。 我只想确认、因为下图没有明显的错误、除非您在此期间发送 SCLK。 您也说“DOUT 处于非活动状态“、因此我想了解这是否意味着“即使我正在发送 SCLK、DOUT 也不会发送数据“、或者其他内容

    -布莱恩

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

    “您也说“DOUT 处于非活动状态“、因此我想了解这是否意味着“即使我正在发送 SCLK、DOUT 也不会发送数据“、

    这就是我的意思。 我重新查看屏幕截图并放大以在 RDATAC +脉冲控制模式下显示 SCLK:

    紫色= DRDY、蓝色= CS、黄色= SCLK、绿色= DOUT

    与 SDATAC + RDATA 命令+脉冲控制模式(这是有效数据)相比:

    紫色= DRDY、蓝色= CS、黄色= SCLK、绿色= DOUT

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

    尊敬的 Michael Green69:

    感谢您的澄清

    在您的原始代码中、您是否发送了 SDAC 命令来初始化器件、然后在准备好开始转换后发送 RDATAC 命令?

    您是使用开始引脚还是使用开始命令来控制转换?

    您选择脉冲转换(单次)模式而不是栅极控制(连续转换)模式是否有任何原因? 您似乎希望能够在特定时刻启动 ADC,采样一次,然后等待一段时间,然后再重复此过程 — 正确吗?

    请告诉我 、使用 SDATAC + RDATA 是否足以解决您的问题。 如果没有、我可以尝试模仿您在系统中看到的行为、但 我需要更多时间(1-2 周)才能 做到这一点。

    -布莱恩

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

    在您的原始代码中、您是否发送了 SDAC 命令来初始化器件、然后在准备好开始转换后发送 RDATAC 命令?

    正确。 具体而言、这些是用于初始化 ADS1259 的设置、位于最后发布的两个屏幕截图中。 唯一的区别是最后一条命令被注释掉 (SDATAC + RDATA)。 它对 RDATAC 有效。

        writeSPIA0(0x11);    //SDATAC = stop data continuously
    
        writeSPIA0(0x40);    //WREG command: from address 0h
    
        writeSPIA0(0x05);    //WREG command: 6 registers - 1
    
        writeSPIA0(0x05);    //CONFIG0: SPI timeout enabled, Internal reference bias
    
        writeSPIA0(0xc0);    //CONFIG1: checksum, out-of-range flag enabled
    
        writeSPIA0(0x17);    //CONFIG2: Pulse Control Mode, 14400sps.
    
        writeSPIA0(0x00);    // Offset: not set
    
        writeSPIA0(0x00);
    
        writeSPIA0(0x00);
    
        //writeSPIA0(0x10);  //RDATAC = read data continuously
     

    您是使用开始引脚还是使用开始命令来控制转换?

    在这两种情况下、我都使用了 START 引脚。

     

    您选择脉冲转换(单次)模式而不是栅极控制(连续转换)模式是否有任何原因? 您似乎希望能够在特定时刻启动 ADC、采样一次、然后等待一段时间、然后再重复此过程–正确吗?

    是的、是这样。

     

    请告诉我、使用 SDATAC + RDATA 是否足以解决您的问题。 如果没有、我可以尝试模仿您在系统中看到的行为、但我需要更多时间(1-2 周)才能做到这一点

    SDAT+RDATA 似乎是一个足够的解决方案、但我想知道 RDATAC + CHIP SELECT 为何不适用于未来的项目的根本原因。 如果这是芯片物理损坏的问题、我可能需要添加一项检查、以便将来进行调试。

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

    尊敬的 Michael Green69:

    这听起来并不像物理损坏的结果。 但我想我应该问、您是否在多个器件/电路板上看到了这种行为? 如果您在电路板上看不到全部内容、您能否将“良好“设备替换为“不良“设备、看看问题是否出在设备或电路板上? 如果您在所有电路板上都看到此问题、您能否用卷带中的新器件换出“损坏“器件、看看问题是否仍然存在?

    -布莱恩

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

    此时我没有额外的设备/电路板进行测试、但会尝试一次。