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.

[参考译文] ADS131A04:在使用同步从模式的多器件配置下、不会返回 AD 转换值

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/894451/ads131a04-ad-conversion-value-is-not-returned-at-multiple-device-configuration-using-synchronous-slave-mode

器件型号:ADS131A04
主题中讨论的其他器件: TIDA-00810CDCLVC1102.

在使用同步从模式的多器件配置中、不会返回 AD 转换值。

我选择两个 ADC、模式设置为32位、无汉明、从模式。  此外、我使用16MHz 晶体并将数据速率设置为16MHz/2/2/512=7812Hz。 因此、我每7812Hz 周期询问 AD 值、但我无法获得 AD 值。 AD 值为零。

如何获取 AD 值?

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

    Kenji-San、


    可能发生了几个阻止您收集数据的事件。

    首先、我将确保器件已正确初始化。 如果您看一下数据表第79页的图106、就会看到一个显示器件启动顺序的流程图。 通读它、确保您的启动序列匹配或非常相似。

    具体而言、序列中有两个重要命令可能会阻止读取。 首先、当器件首次启动时、必须发送解锁命令才能与器件通信。 其次、在确认器件准备就绪后、必须使用 ADC_ENA 寄存器启用 ADC。

    希望这些命令之一将帮助您使系统正常工作。 如果仍然有问题,请将命令序列以及命令响应一起发布回您的命令序列。 ADS131A04命令响应可帮助您确认器件正在接收并正确处理命令。


    吴约瑟

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

    Joseph Wu-San

    你(们)好

    我还无法读取 ADC 数据。

    逻辑信号看起来是这样的。

    我根据"初始化设置"流程图106初始化 ADC。

    控制代码基于 TI 的 TIDA-00810LIB。

    初始化就像这样。 我省略该命令的验证部分。

    ADS131_HardwareInit();

    ADS131_HardwareReset();

    ADS131_Unlock();

    ADS131_SendCommand (WRITE_REGISTER_COMMAND (CLK1、CLK_DIV_2));

    ADS131_SendCommand (WRITE_REGISTER_COMMAND (CLK2、ICLK_DIV_2 | OSR_512));

    ADS131_SendCommand (WRITE_REGISTER_COMMAND (A_SYS_CFG、HRM | A_SYS_CFG_RESERVED));

    //从现在开始固定帧大小

    ADS131_SendCommand_6words (WRITE_REGISTER_COMMAND (D_SYS_CFG、HIZDLY_12ns | DNDLY_12ns |固定);

    ADS131_SendCommand_6words (WRITE_REGISTER_COMMAND (ADC_ENA、ADC_ENABLE_All_CHANNELS));

    ADS131_Wakeup ();

    ADS131_Lock ();

    这是读取寄存器值的结果。

    【Afeter 解锁】

    OP_CODE:2000;地址:0;数据:4
    OP_CODE:2000;地址:1;数据:3
    OP_CODE:2000;地址:2;数据:4
    OP_CODE:2000;地址:3;数据:0
    OP_CODE:2000;地址:4;数据:0
    OP_CODE:2000;地址:5;数据:0
    OP_CODE:2000;地址:6;数据:0
    OP_CODE:2000;地址:7;数据:6
    OP_CODE:2000;地址:8;数据:0
    OP_CODE:2000;地址:9;数据:0
    OP_CODE:2000;地址:A;数据:0
    OP_CODE:2000;地址:b;数据:60
    OP_CODE:2000;地址:C;数据:3c
    OP_CODE:2000;地址:D;数据:8
    OP_CODE:2000;地址:E;数据:86
    OP_CODE:2000;地址:F;数据:0
    OP_CODE:2000;地址:10;数据:0
    OP_CODE:2000;地址:11;数据:0
    OP_CODE:2000;地址:12;数据:0
    OP_CODE:2000;地址:13;数据:0
    OP_CODE:2000;地址:14;数据:0

    【Afeter Set Registers】

    OP_CODE:2000;地址:0;数据:4
    OP_CODE:2000;地址:1;数据:3
    OP_CODE:2000;地址:2;数据:14
    OP_CODE:2000;地址:3;数据:C
    OP_CODE:2000;地址:4;数据:C
    OP_CODE:2000;地址:5;数据:0
    OP_CODE:2000;地址:6;数据:0
    OP_CODE:2000;地址:7;数据:6
    OP_CODE:2000;地址:8;数据:0
    OP_CODE:2000;地址:9;数据:0
    OP_CODE:2000;地址:A;数据:0
    OP_CODE:2000;地址:b;数据:60
    OP_CODE:2000;地址:C;数据:3E
    OP_CODE:2000;地址:D;数据:2
    OP_CODE:2000;地址:E;数据:25
    OP_CODE:2000;地址:F;数据:F
    OP_CODE:2000;地址:10;数据:0
    OP_CODE:2000;地址:11;数据:0
    OP_CODE:2000;地址:12;数据:0
    OP_CODE:2000;地址:13;数据:0
    OP_CODE:2000;地址:14;数据:0

    检查命令响应后、初始化似乎正常。
    初始化后、我每7.812 KHz 在伺服控制频率下询问一次 ADC 数据。

    读取 ADC 数据时、STAT_1位标志 F_RESync 为"1"。 因此、重新同步是故障。
    如何在 ADC 和 MCU 之间进行通信以每7.812kHz 读取一次数据?
    我指的是图96和图66、但我不知道正确的方法。
    我认为在有关通信时间的规格中没有描述任何信息。

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

    Kenji-San、

    查看初始化序列、看起来不错。 这非常相似(如果与数据表第79页的图106中所示的不同)。 请注意、TIDA-00810所述的设置使用异步中断模式下的一个器件和同步从模式下的菊花链器件。 这也类似于数据表第69页的图96所示的连接、其中包含使用异步中断模式进行的多器件配置。 您可以共享原理图吗? 我想确认您已按这种方式连接器件、以便菊花链正常运行。

    对于通信、查看命令响应也很重要。 此时、器件很可能无法理解其中一条命令或通信有误。 命令响应有助于轻松调试器件无法理解的命令。 通过数字通信的屏幕截图、我可以看到您使用的是 Saleae。 如果需要、您可以将数据文件附加到下一个帖子、以便我也可以通过 SPI 响应进行读取(我还在软件中有一个 Saleae)。

    我要注意的是、同步必须准确。 在同步从模式下、ADS131A04的时序非常严格、且时序应为7.8125kHz。 如果您在异步中断模式下使用第一个器件、则/DRDY 线路充当同步脉冲(只要两个器件使用相同的主时钟)。 如果您使用单独的同步脉冲、则最佳方法是从主时钟的2048个时钟脉冲中导出脉冲。

    吴约瑟

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

    Joseph Wu-San

    电路就像这样、"图100。 使用同步从模式的多器件配置"。
    这两个 ADC 以从模式连接、时钟源连接到不同的16MHz 晶体。
    ADC1和 ADC2的输入通道数量为三个通道。

    此连接中的逻辑信号与此类似。 我认为 ADC 器件和 MPU 在没有探测的情况下进行通信。

    询问 ADC 值时的状态响应与此类似。

    寄存器名称 地址 ADC 器件1 ADC 器件2.
    STAT_1 0x02 0x14 0x14
    STAT_P 0x03 0x0C 0x0F
    STAT_N 0x04 0x0C

    0x0F

    STAT_S 0x05 0x00

    0x00

    ERROR_CNT 0x06 0x00

    0x00

    STAT_M2 0x07 0x06

    0x06

    此外、逻辑分析仪屏幕不是 Saleae 屏幕。 UI 与 Saleae 类似、但它是 Kingst 的 LA1010。
    我有 Saleae、但现在我可以使用 Kingst La1010或 Analog Discovery 2。

    我有一个玉米饼。 时序图中“同步”的正确定义是什么? 蓝线还是红线?  哪个信号应该是7.812kHz?

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

    Kenji-San、


    首先、我收到了有关 E2E 的另一个问题、该问题与您在上一篇文章中提到的问题类似。 以下是该主题的链接:

    https://e2e.ti.com/support/data-converters/f/73/t/894982

    通读该帖子、看看我写的内容。 正如我在该帖子中提到的、我认为您无法让具有两个不同时钟的器件在同步从模式下与一个器件一起工作。 出于好奇、您是否与该现场应用工程师合作?

    现在、让我们继续通过查看通信来解决这个问题。 我认为、即使第二个器件未正确同步、处于异步中断模式的第一个器件仍应提供数据。

    当我询问命令响应时、我没有询问 STAT 寄存器的内容、而是问您发送命令的命令响应。 例如、当您发送复位时、您应该在下一帧的开头获得就绪响应。 当您发送 unlock 命令时、您应该会在下一帧中看到0655h、依此类推。 数据表第48页的表13中显示了这些命令和响应。 如果您查看初始化序列、您可以看到命令是否有任何不良响应。 这可能会告诉您是否初始化错误。

    在上一个问题中、您询问了同步。 异步中断模式下来自器件的同步来自/DRDY 线路。 当 ADC 转换完成时、来自第一个 ADC 的这条线会告知另一个处于同步从模式的 ADC。 对于第二个器件、这是/DRDY 线路的输入。


    吴约瑟

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

    Joseph Wu-San

    你(们)好

    我想使用“使用同步从模式的多器件配置”。
    我希望能够解决无法获得 AD 转换值的问题。

    我认为 TI 有一个原理图、用于验证"使用同步从模式的多器件配置"。
    是否可以显示它?
    此外、我还想看到 SPI/DRDY / DONE 的时序信号、这些信号实际上是在 "使用同步从模式的多器件配置"下由示波器或逻辑分析仪测量的。  当然、也请告诉我当时的设置。

    解决我的问题的最快方法是查看 TI 的正确方法。 您可以使用它。  
    我不会花太多时间、因此请展示电路图和实际时序信号数据。

    此外,我们 还确认了它即使在 “使用异步中断模式的多设备配置”中与另一个时钟源一起工作。

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

    Kenji-San、


    我了解了用于验证器件的设置、我不确定它是否会有所帮助。 该原理图使用跳线连接来设置所有运行模式所需的连接。 我们在异步中断模式下完成了大部分特性描述。 但是、我们使用同一电路板在同步从模式和同步主模式下运行器件。 此外、我们使用了一些定制 FPGA 编程来运行器件并收集数据。 我无法找到用于运行它的代码。 此时、我没有电路板或软件可用于在同步从模式下运行器件。 我所拥有的只是用于表征器件特性的电路板原理图、它的实现可适应所有工作模式。

    我想指出的是、许多客户在某种同步模式下运行了多个器件、因此我相信我们也可以使其正常工作。

    此时、我仍想查看命令响应。 我还一直认为我们绝对应该使用一个通用主时钟。 如果没有通用的主时钟、我认为无法使时钟同步到足以工作的程度。 请注意、在异步中断模式下运行的第一个器件为在同步从模式下运行的器件生成时序。


    吴约瑟

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

    约瑟夫-圣

    现在、我正在处理异步中断模式。
    我可以从传感器获取 AD 值。
    现在、我为 CLKIN 连接了单独的16MHz 晶体。

    我知道同一个 CLKIN 是驱动 ADC 的最佳解决方案。
    因此、为了同步 ADC、我订购了 CDCLVC1102.
    在 CDCLVC1102到达之前、我将使用晶体振荡器。