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.

[参考译文] ADS131M04:使用 ADC 读取和写入寄存器时出现问题

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1074567/ads131m04-problems-reading-and-writing-registers-with-adc

部件号:ADS131M04
“线程:测试”中讨论的其它部件

你好

 

在读取和写入寄存器方面,我们与此设备的通信正面临着困难。 数据读回正常,但读写寄存器会导致意外的值返回。 这是配置

 

SCLK = 4MHz

在24位模式(默认)下读取和切换6个字帧

与 teensy 4.0处理器通信

只有在 ddy 对所有读取和写入有效时,才实施访问

使用代码中撒有 printf 语句。

在代码中使用延迟

使用由工作台电源供电的 ADC 评估板,工作台电源与评估板上的 AVDD 和 DVDD 测试点相连,电压为3.2伏

使用重置线路(1 ms 脉冲)和重置命令重置。

读取作为 read 命令执行,后跟 null 命令以收集返回帧的第一个字中的响应。

 

 

问题-

数据表中不清楚登记的厚度是否需要对单调信号的地址。  这是必要的,或者您可以随时访问注册表。 认识到五分之三将不同步。

 

如果在下一个单调的脉冲之前没有读取第五次再同步问题,则响应(对于单个寄存器访问)是否会受到第五次再同步问题的影响(即,由于连续读取2次而重新同步,您是否会丢失一个值)。

 

访问之间的延迟是否会导致问题,即帧之间是否存在任何时间限制。

我们是否需要禁用 ADC 以执行读或写访问。

 

 

 

 

  我认为,由于电源问题,最初在读取值时遇到问题。  我认为 ADC 正因为电源变化而重置。当我切换到同时驱动 tensy 和 ADC 的外部电源时,解决了这一问题,即在状态寄存器验证为一致执行时,重置停止。

 

我目前看到的是,当我读了之后再写了再读增益寄存器(通常),它在读回时不会显示内容已更新。 如果它们最初为0,那么即使写入非0值,我也会得到原来的0。 信道的 ADC 数据会发生变化,因此我知道 ,在写入时,该值已被写入。 此外,当我查看写入命令的响应(在后续 访问中)时,我获得了0x4084,而不是我预期的0x4200 ( 我正在写入寄存器4,但响应是已写入 reg 0。 使用0x84字节,这毫无意义。 这种情况一直在发生。

 

下面是我通过处理器访问和 SPI 嗅探器看到的内容的一小插曲

 

 

状态字节读回正常。

 

我正在使用复位引脚(1 ms 脉冲)复位 ADC,该过程将在开始时进行。

 

 

我们是否需要密切关注从 SPI 到 ADC 的布线。  我们正在使用您的评估模块,并在两端安装有 ribon 电缆和 Dupont 连接器。  只有引脚加载是示波器探测器和/或 SPI 嗅探器。  接地只是跳线。

 

请告知我对如何正确阅读此内容的理解有何不理解。

 

 

 

我搬到了另一个激发平台(Digilent 数字发现),并独立于工具 SPI 主工具发送命令。  这允许我发送 SPI 命令并观察接口的响应。  这也提供了一个单独的平台,希望来自 tensy 的任何问题都能解决。

 

我有类似的行为,因为交易不稳定。  我尝试了低时钟频率,以防出现信号完整性问题。

 

 在 ADC 处于待机状态后,我确实设法使其能够可靠地读写。  这通常是必需的吗?  此设置不会等待单调 的音量降低,因此可能略有不同。  范围信号比较好。

 

 

观察到从 id 命令返回的数据不正确,但总线看起来不错。  预期值为0x24xx ,我得到的值(在两个平台上)为0x0408。  在这种情况下,似乎2是0。 下面是捕获。

 

 

 

 

写入:A0,00,00,00,00, 00,00,00,00,00, 00,00,00,00,00, 00,00,00,

已阅读:04,80,60,00,00, 91,C0,00,8F,C0, 00,B9,00,00,42, 德国(DE),2C,00,

我真的只需要了解如何连接到该设备。

如果你能向我指出一个好方向,我可以更好地为你提供数据和范围的屏幕截图。

下面是一些描述上述问题的信息。

非常感谢

标记

 

下面是复制为 ADC 板供电方式的设置。  如图所示,在感应板背面进行简单剪切(电极片之间的迹线)。

 

切口将 PC 提供的电源与感应板上调节器的输入分开。 这为 ADC 和 tensy 提供了更清洁的电源。

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

    Mark 您好,

    感谢您在数据转换器论坛上发表意见! 这里有很多东西,所以我会尽力回答所有问题。  

    问题-

    我们是否需要禁用 ADC 以执行读或写访问?

    否。在转换中启用任何通道时,您可以进行写入和读取。 如果必须禁用频道以读取它们,则无法进行连续转换。

    数据表中不清楚寄存器访问是否需要遵守单调的信号。  这是必要的,或者您可以随时访问注册表。 认识到五分之三将不同步。  访问之间的延迟是否会导致问题,即帧之间是否存在任何时间限制。

    通常,您可以随时访问或写入注册表。 数据表中的大多数示例计时图都是这样创建的,因为这是与设备交互的最常见方式。 即,在 nDRDY 下降边缘触发中断,并从设备读取数据。 在 nDRDY 之间提交写入和读取操作正常。  

    通常, 对于下一个 SPI 帧,没有计时限制(除了尝试太快地启动新命令,但我们将忽略这一点)。 实际上,大多数设计人员都试图在下一个 nDRDY 之间保留所有的写入和读取,这样他们就可以在 新数据进入时简单地读取数据,而不必执行其他操作。  由于数据速率与 SCLK 频率相比有多慢,因此时间问题极少。  

    即使在读取未在下一个 nDRDY 之前完成的情况下,FIFO 也将存储最多两个数据样本,设计人员只需在下一个数据样本之前读取两次。 在你的情况下,我们不在乎数据,只是命令的反应,所以对你来说,这真的不是一个限制。

     

    如果在下一个单调的脉冲之前没有读取第五次再同步问题,则响应(对于单个寄存器访问)是否会受到第五次再同步问题的影响(即,由于连续读取2次而重新同步,您是否会丢失一个值)。

    不能,数据收集和注册内容完全独立。 命令末尾将更新响应,并且响应将始终 显示 在 下一个 SPI 帧的开头。 因此,无论您决定在下一个 nDRDY 之前还是之后阅读,这都无关紧要。 如果您还尝试连续读取两次,则不会丢失响应,因为当您执行第二次读取时,第一次读取会在进入第二次读取命令时给出对被测设备的响应。   

    我们是否需要密切关注从 SPI 到 ADC 的布线。  我们正在使用您的评估模块,并在两端安装有 ribon 电缆和 Dupont 连接器。  只有引脚加载是示波器探测器和/或 SPI 嗅探器。  接地只是跳线。

    如果您使用的是 EVM,我希望您从 J6路由 SPI 线路,DVDD 路由 TP1路由,AVDD 路由 J9路由(或启动板连接器 J7和 J8与其他组件路由)。 我会在 J6或 R28-R33处探测 SPI 信号。 我看到跳线电缆能够充分提供来自不同 PCBA 的电压,我看到它们增加了信号停止看起来像方波的线路上的负载。 确定这些问题就像在 设备附近进行探测一样简单,可以寻找恒定稳定的电压。 根据我的经验,我们的运行频率不够快,无法使 SPI 线路看起来四舍五入或弛垂。

    我的想法:  

    我遇到了一个无法读取但无法写入的问题,问题是电压供应不稳定,MCU 无法提供足够的电流以实现干净的转换。 在设备附近添加外部上拉电阻似乎有所帮助。

    相比之下,你说你可以成功阅读,但我没有在你提供的证据中看到一次成功阅读。 为命令提供0xA200 (不是空命令)以读取0x02或模式寄存器,已导致两 个不可能的响应,其中0b1的位[15:14]应始终为0b0。

    要检查读取是否成功,请阅读 ID 寄存器 addr:0x0,因为它具有静态响应。 之后,使用 NULL 命令或读取状态(寄存器地址:0x1),并查看响应是否 为默认值(或关闭)。 如果一切看起来都很好,您可以多次读取其他寄存器以确认读数是否正常。 然后,您应该进入写入。

    最后,该解决方案将驻留在代码或硬件更改中,我不会更接近于根据 您在此处提供的数据找到根本原因。

    其他调试:

    尽管如此,如果您有 EVM,那么您可能仍有 EVM 随附的 PHI 板。 您可以下载 GUI 并使用 SPI 嗅探器,将您对 GUI+PHI+EVM 的响应与设置中给出的相同命令进行比较,并查看不同之处。 使用示波器和逻辑分析仪了解不同之处可以帮助您实现这一目的。

    此外,我们还有示例代码。 您可以四处走动,看看您是否在做一些不同或根本错误的事情: https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/811864/faq-ads131m04-ads131m04-example-code 

    最佳

    Cole