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.

[参考译文] ADS130E08:在菊花链模式下配置和读取数据

Guru**** 2391175 points
Other Parts Discussed in Thread: ADS130E08

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1059710/ads130e08-configure-and-read-data-in-daisy-chain-mode

器件型号:ADS130E08

大家好。

我目前正在研究一个在菊花链模式下使用多个 ADS130E08的项目。 我在仅使用一个板时能够设置和读取数据、但是、当我尝试在菊花链模式下设置多个板(每个板具有单独的 ADS130E08)时、我无法准确地捕获数据。

我的设置:

- CS、SCLK 和 MOSI 引脚在电路板之间共享。

-启用 CLK_OUT 位。

#第一个电路板:

- MISO 引脚连接到微控制器。

- CLK_SEL 引脚连接到高逻辑电平(时钟在内部生成并输出到 CLK 引脚)。

#第二个电路板

- MISO 引脚连接到第一块电路板的 DAISY_IN 引脚。

- CLK_SEL 引脚被接至逻辑低电平(来自第一个电路板的外部时钟源)。

提前感谢、

Weslley Duarte

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

    Weslley、您好!

    感谢您的发帖。

    您是否考虑了器件0的 LSB 和器件1的 MSB 之间额外的"无关"位? ADS130E08数据表的图36对此进行了说明。

    我假设您在两个器件之间共享了 CLK 引脚、对吧? 在使用相同的寄存器设置配置两个器件后、还必须对 START 引脚进行脉冲或发送 START 命令以重新启动转换并将 DRDYn 中断同步到同一 CLK 边沿。

    此致、

    Ryan

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

    您好、Ryan、

    是的、我考虑了额外的"无关"位。 此外、CLK (外部晶振)在器件之间共享、并且我在配置之后/读取数据之前发送 START 命令。

    在菊花链模式下、我能够从第一个器件正确读取数据、我的问题是从第二个器件捕获数据。

    我的位移代码:

    #define UPPER_1_BITS 0x80 // 1000 0000
    #define LOWER_7_BITS 0x7f // 0111 1111
    
    uint8_t rx[40] = {0};
    
    /*
     * rx[0] = empty
     * rx[1 - 3] = status bits (device 0)
     * rx[4 - 19] = data (device 0)
     * rx[20 - 39] = "don't care bit" + 3 status bytes + 16 data bytes (device 1)
     */
    
    uint8_t aux_rx[19] = {0}; // 3 status bytes + 16 data bytes
    
    for (size_t i = 0; i < sizeof(aux_rx); i++)
    {
      aux_rx[i] = ((uint8_t)((rx[20 + i] & LOWER_7_BITS) << 1) | (uint8_t)(rx[20 + i + 1] & UPPER_1_BITS) >> 7);
    }

    此致、

    Weslley

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

    您好、Weslley、

    当您说无法正确读取数据时、数据从第二个器件看起来是什么样子的? 您是否看到随机位或全部为0x00?  

    让我们来看看其他几件事:

    1. 您能否确认两个器件上的 DRDYn 是否同步?
    2. 您能否共享一个显示状态为+ CH1-8 +"无关"+状态为+ CH1-8的完整帧的逻辑分析仪捕捉? 总共应该有305位(2x (24 + 8x16)+ 1)。

    如果您可以共享显示 ADS130E08连接的部分原理图、这可能也会有所帮助。

    此致、

    Ryan

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

    您好、Ryan、

    当我从第二个器件捕获数据时、它都是随机位。

    我没有逻辑分析仪、但我已将示波器连接到两个 DRDY 输出(第二个器件 DRDY 保持悬空)。

    当仅将第一个板连接到我的背板时、第一个板的 DRDY 信号每125us 出现一次。 当我连接第二个电路板时、第二个电路板的 DRDY 也会每125us 出现一次、但第一个电路板的 DRDY 会每75秒出现一次、因此它们不会同步。

    此致、

    Weslley

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

    您好、Weslley、

    感谢您的澄清。 在这种情况下、当您从两个器件读取数据时、来自第二个器件的数据可能会被新的转换结果覆盖。 在器件1的帧中间的某个点、您可能会再次注意到0xC00000 状态字。

    您是否能够通过向 START 引脚发出公共脉冲来同步两个器件?

    同步两个器件的数据速率后、您需要确保 SCLK 频率足够快、能够在一个数据速率周期内读取全部305个位。 在8kSPS 时、考虑到时序规格、您将需要略高于2.44MHz 的 SCLK 频率。

    另一种确认同步器件正常的方法是将两个器件配置为 RDATA 模式(而非 RDATAC 模式)。 在此模式下、仅当发送 RDATA 命令时才会将新数据加载到输出移位寄存器中。 这样、您就可以从两个器件读取最近的转换结果、而无需担心新数据会覆盖帧中间的旧数据。

    此致、

    Ryan

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

    您好、Ryan、

    上周、我尝试将具有脉冲的器件同步到两个 START 引脚、但结果与发出 START 命令相同、DRDY 中断每隔75us 发生一次。

    我还将频率增加到了3MHz、并最终能够使用 RDATA 命令捕获数据并正确读取两个电路板、但无法将中断修复为按预期每125us 发生一次。

    结论:有时我能够正确读取数据、有时甚至不能。

    此致、

    Weslley

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

    您好、Ryan、

    我将 SCLK 增加到了4MHz、现在我能够始终使用 RDATA 命令从两个器件读取数据。 奇怪的是、来自第一个器件的数据(蓝色)不像第二个器件(橙色)那么清晰。

    DRDY 每75美元就会持续发生一次。 您认为这是否与读取第一个器件时的不良信号质量有关?

    编辑:两个信号都来自信号发生器(单独的通道、相同的振幅和频率)、并且彼此之间的相位间隔仅为180°。 单独读取时、两个信号都正常。

    提前感谢。

    Weslley

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

    您好、Weslley、

    来自每个器件的 DRDYn 信号与 ADC 输入端的信号质量无关。 它严格取决于主 CLK (内部或外部)、内部过采样率(OSR)和 START 脉冲或 START 命令。 要使用 START 命令同步器件、必须首先发出 STOP (0Ah)命令。 否则、START 命令无效。

    如果任一器件的 DRDYn 与预期数据速率不匹配、并且您已确认两个器件都接收到相同的 CLK 信号、则唯一的解释是数据速率未正确编程。 您能否对两个器件进行写操作、然后从一个器件上断开 CSn 并读回寄存器内容? 对每个器件执行此操作以确认它们是否相同。 请记住-要写入寄存器、必须先发出 SDATAC 命令。 您已经这么做了吗?

    如果您可以共享两个 ADC 的部分原理图和显示 CLK 和 DRDYn 波形的示波器捕获、也会有所帮助。

    此致、

    Ryan

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

    您好、Ryan、

    我能够修复问题并正确读取数据。 问题是由于我的电路接线故障造成的。

    我唯一想解决的问题是每75uS 的 DRDY 脉冲。

    此致。

    Weslley

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

    您好、Weslley、

    感谢您的更新、很高兴您发现了接线问题!

    关于 DRDYn 内部、我是否可以建议尝试将两个器件配置为使用内部振荡器? 如果两个器件都配置为使用相同的寄存器设置并同时发出启动脉冲、则两个 DRDYn 脉冲将在一个 tCLK 周期内同步。 您能看到它是否起作用吗?

    此致、

    Ryan

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

    您好、Ryan、

    它发挥了作用。

    我按照您的建议使用了内部振荡器、并且能够以菊花链模式同步两个器件、从而每125us 输出一次 DRDY 信号。

    感谢您的所有帮助。

    此致、

    Weslley

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

    您好、Weslley、

    感谢您让我们知道这是有效的。 似乎这两个器件最初并不使用相同的时钟频率。 为了实现最精确的同步、两个器件必须接收相同的外部时钟、或者一个器件必须将其内部时钟输出到另一个器件。 如果在一个时钟周期内同步到足够了、那么两个器件都可以使用自己的内部时钟、我们可以关闭这个线程。  

    此致、

    Ryan