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.

[参考译文] ADS1261:以全零进行响应第2部分

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1501399/ads1261-responding-with-all-zeros-part-2

器件型号:ADS1261

工具/软件:

此问题的原始线程已关闭、但未解决。  

最初的问题是、TI-ADS1261在 DOUT 线路上不会对 Xilinx Zynq 7020 SPI 总线在 DIN 上发送给它的命令做出响应。 1261对复位命令的响应不一致、复位命令通常在 DOUT 上静音失败、然后在大约四十次尝试后、1261开始响应复位0x06、0xFF 和 DOUT 0xFF、0x06。 但一旦1261得到使用相同总线和相同软件的 RREG 命令,它就会完全停止响应。

目前、我有许多单独的命令连续运行、包括 NOP、RESET、LOCK、UNLOCK 等多项测试。

但是、只要我尝试执行 RREG 命令、一条 RREG 命令就会成功、那么所有响应都将从1261停止、包括之前有效的 RESET。 无论进行多少次复位、在 RREG 之后都是如此。 使1261在 RREG 之后再次工作的唯一方法是下电上电。

我注意到、我需要以某种方式修复的另一个问题是、上电后、1261开始响应之前、需要发送25到100条复位命令。 对于任何命令、我都不会做任何不同的事情。

下面的第一个图显示了一系列尖峰、这些尖峰都是具有响应的良好复位命令、并被软件报告为成功。 第二个图显示了时钟电平上第一个复位尖峰的时钟电平视图。 第三个显示了 RREG 命令之后复位的时钟电平视图、这是1261在 RREG 命令之后停止响应后的数百个之一。

从第二个图中可以看到、我的时钟设置现在看起来非常好。 总线时钟在发送和接收期间开启、之后变为低电平。 从图中可以清楚地看出、DIN 在1261时钟上升沿锁存、因此它在下降沿提供稳定的读取、而1261 DOUT 看起来像在时钟下降沿锁存、正如我想您在上面提到的那样。

这次我还包括我的完整软件日志文件。 此文件中没有任何专有内容。 日志文件显示大约40个 reset 命令失败、直到它在第454行开始工作、然后八次成功重置。 然后切换到命令、第一个 RREG 命令在第483行成功执行。 之后1261没有响应任何东西。 请记住、我的软件对于通过和失败复位以及 RREG 完全相同。

我需要帮助了解1261会延迟对 RESET 的响应的原因、以及它在收到 RREG 命令后停止响应的原因?

e2e.ti.com/.../log-0005-sagrad-spi-ti-ads-1261.txt

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

    尊敬的 Everett:

    CS 在您的系统中是否连接至低电平? 至少在第一个图像中、CS 在整个时间内为低电平(~1秒)。 当 CS 连接至低电平时、SPI 通信不会复位、因为如果您在命令帧中设置了 CS 高电平-低电平、然后进行低电平-高电平转换、即仅在帧持续时间内将 CS 拉至低电平、同时满足所有其他时序要求。 如果 SCLK 上有任何错误干扰或任何类似的干扰、ADC 可能会将这些干扰解释为有效的 SCLK 脉冲并退出同步。 这可以解释为什么你的第一个命令是好的,然后一切都变得混乱后. 然后、在尝试了几十次后、另一个命令就会起作用

    没有其他明显的原因使得通信会发生这种零星的情况、除非 ADC 已损坏

    -布莱恩

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

    Bryan、  

    我认为我们将 CS 正确连接到 Xilinx SPI 总线的片选输出、这样当我将从器件选择写入 Xilinx SPI 配置寄存器并选择从器件时、它会在正确的从器件上生成 CS。 但显然情况并非如此 、因为 CS 线显然没有移动。 我将检查之前的所有图、以查看 CS 是否在某个点移动。 也许我更改了 Xilinx SPI 总线配置寄存器中的某些内容、使其损坏、并且不再驱动 CS。 或者、正如您所说、它确实连接到低电平、我将向 HW 进行检查。

    我同意您的观点、无法正确驱动 CS 可能是导致问题的原因。 我很好奇、为什么有些命令连续对多个命令始终有效、而有些命令根本不起作用。 但如果 CS 是根本原因、这可能是解决问题的分心。

    我们很快就会重新旋转电路板、在下一个版本中、我将直接控制 CS 线路。 此时、我已经尝试了软件中的所有功能。 现在、让我们结束这个问题! 我认为在正确驱动 CS 之前再花更多时间来处理此问题是没有好处的。 希望这样可以解决问题。 如果没有、我们必须选择不同的 TI-ADC、因为我们无法更改处理器 SOC。  

    非常感谢您的帮助和快速回答。

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

    尊敬的 Everett:

    我还建议使用 EVM。 这将建立一个操作基准、您可以根据您的控制器正在执行的操作进行基准测试。 您还可以使用我们的控制器/GUI 验证您的硬件(通过将它们连接在一起)、以确保没有硬件问题(到目前为止、我们假设这纯粹是一个软件/通信问题)

    ADS1261与我们的大多数其他精密 ADC 一样、能够使用标准 SPI 接口运行。 但它们的通信方式大致相同、因此如果这是通信问题、选择新的 ADC 无法解决该问题。

    -布莱恩

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

    我得到芯片选择工作、但芯片选择工作时、1261不会回显命令。 以下各图展示了这一点。

    相比之下、这是我的软件版本337、其中我能够获得复位命令来响应 DIN 0x06、0xFF DOUT 0xFF、0x06、其他单命令都起作用、但 RREG、WREG 和 RDATA 不应答。 该图显示了 DOUT 上的正确响应、未对 CS 执行任何操作。

    下一张图来自我最新的软件346、其中显示了一个良好的 SCLK、DIN、CS、但 DOUT 变为高电平并保持高电平、因此不会响应复位0x06、0xFF。

    此图也适用于软件346 CS、它更宽并且不与时钟完全匹配、我不知道为什么这个变化、DOUT 会镜像 CS 并且不响应命令。

    这是同一个捕获的放大图、显示了时钟的更多细节、对我来说很好、并且 DIN (SPI 总线 MOSI) 0x06、0xFF 上很好地复位、但1261 DOUT 上没有。

    我还在每次命令之前尝试了1261 RESET 引脚上的硬件复位、但这产生了负面影响。 我还尝试循环遍历所有总线从通道0、1、2、我得到了几个复位命令要通过、但随后它停止工作、拒绝再次开始工作。

    此时、我有一个成功有限的软件版本337、幸运的是已进入 GIT、 在1261开始在 DOUT 上通过良好的复位回波正确响应之前、它将发送大约100个失败的复位命令、然后它将响应 NOP、START、STOP LOCK、UNLOCK 等单独的命令。 但一旦收到 RREG 命令、它就会停止通信、即使对之前有效的复位命令也不再起作用。

    我认为您关于正确对 Chip Select 进行编程的建议是一个不错的建议、但从功能上讲、这实际上让情况更糟。 在该软件的版本1261根本没有响应,即使 CS 做了它应该做的关于 CLK . 我怀疑 CS 应该连接至低电平有效、因为这就是它工作时的样子。

    我相信我的时钟极性是正确的、因为我使其完全响应的唯一方法是使 SPI 总线在时钟前沿锁存、因此1261可以像我认为您在上面提到的那样在稳定的下降沿采样。  

    什么是神秘的我是,即使 CLK 和 DIN 运行完美1261只是拒绝响应。

    此时、我无法在软件中尝试其他任何操作。 除非你能想一想让1261说话,否则我会等到我们得到我们的开发板,然后再继续。 衷心感谢您在这方面的时间。

    Everett

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

    尊敬的 Everett:

    为了确保 CS 低电平和 SCLK 高电平之间存在时序延迟、请检查 ADS1261数据表中的时序要求、即不允许这样做:

    在 CS 低电平和 SCLK 高电平之间添加一个 SCLK (例如200ns)的延迟、看看这样是否会改善这种情况。 在后端执行相同的操作(SCLK 低电平到 CS 高电平)

    同样、根据您在左上角选择的图标、LA 仍在上升沿触发。 这需要在下降沿触发(数据看起来正常、因此您的系统可能正在获取正确的数据、只有 LA 出错)

    另外、第三幅和第四幅图像显示了当您发送 SCLK 时 CS 为高电平、这意味着 ADC 未接收 SCLK。 当然、ADC 不会做出响应。

    -布莱恩

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

    好的、我会看看是否可以比时钟启动早一点将 CS 驱动至低电平。 据我所知、SPI 总线寄存器中没有交货周期设置、但我想我可以通过尝试手动从器件选择模式、选择从器件、然后在启用时钟之前等待延迟、然后进行发送来完成该设置。 这应该是可行的。

    你是对的。 如果 CS 为高电平、则不可能做出响应。 我确实有一些旧图、虽然在 CS 较低时无响应。 我认为这用于 RREG 命令。  

    根据我们所做的所有测试、我倾向于认为1261很可能没有任何问题、并且我没有正确编程 SPI 总线。 但是、如果我们可以让该主题再开放一天或两天、我想根据您的建议发布调整 CS 交货周期的结果图。 我应该在今天的一天结束时得到它们。

    谢谢!

    Everett

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

    尊敬的 Everett:

    我懂了

    有时可以在3线模式下使用 SPI 外设、然后使用 GPIO 控制 CS。 然后、您可以更好地控制 CS 引脚时序。 不确定这是否是控制器上的一个选项、这只是一个一般观察结果

    如果 您取得任何进展、请告诉我

    -布莱恩

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

    我的想法完全正确。 我已经与我们的硬件主管一起制定了关于即将重新旋转的计划、以便我能够对 CS、START、RESET 进行引脚控制。 我现在正在软件中实施您的想法、将在今天晚些时候或明天发布图表。 一如既往,谢谢!

    Everett