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.

[参考译文] ADS7038Q1EVM-PDK:了解 ADS7038 ADC 时出现问题

Guru**** 2478765 points
Other Parts Discussed in Thread: ADS7038Q1EVM-PDK, ADS7038

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1323890/ads7038q1evm-pdk-problem-with-understanding-the-ads7038-adc

器件型号:ADS7038Q1EVM-PDK
主题中讨论的其他器件: ADS7038

我在理解该器件时遇到问题。 我已购买评估套件 DC120、ADS7038Q1EVM-PDK、并运行套件的软件。 当我以手动模式对其进行设置时、对通道1进行采样、这是 SPI 总线上的信号。 好像使用了 SPI_xfer 和 SPI_READ 函数。 向器件发送读取寄存器命令时、它会在下一个 CE 中输出该寄存器的内容。 如果不是下一个 CE 的读取、那么它会输出采样数据。 对吧?

从逻辑分析器中绘制的图、其中 Eval-kit 是从 Eval-kit 软件控制的。

我的计划是通过 Raspberry PI 实现相同的操作。 然后、我可以先开发软件(Python)、然后再在大系统上进行测试。 在这里、我通过将0x00写入寄存器0、1、4、5和0x10将其设置为手动模式。 然后我将0x10写入寄存器2、从而将 Chid 添加到12位样本数据中。

然后在通道0 (WR 0x11=0x00)上进行采样。 结果略有不同。 这是顺序:

SPI_xfer (WR SEQ_CFG = 0)        读取采样值= 0x7F3       (Ain0上电压的正确值)
SPI_xfer (RD SEQ_CFG)               读取采样值= 0x7F3       (Ain0上电压的正确值)
SPI_READ (3字节)                           读取 SEQ_CFG = 0x7F  (预期为0x00)
SPI_xfer (RD SEQ_CFG)                读取采样值= 0x7F3       (Ain0上电压的正确值)
SPI_READ (3字节)                          读取 SEQ_CFG = 0x7F  (预期为0x00)
SPI_xfer (RD SYS_STAT)                读取采样值= 0x7F3       (Ain0上电压的正确值)
SPI_READ (3字节)                          读取 SYS_STAT = 0x7F  (预期为0x00)

前12位的采样似乎正确、但接下来的12位是错误的。 为什么?
寄存器输出错误。 这看起来像是样本数据。 为什么?

通过 Raspberry PI 软件控制 Eval-kit 时逻辑分析仪的图。

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

    您好、Leif、

    如果您重复从 EVM 中看到的相同模式、会发生什么情况?

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

    您好、Tom、

    这就是我做过的事情。 我刚刚首先写入 CHANNEL_SELECT、以将 Ain0设置为输入通道。 我发送了与从 EVM 相同的模式。 采样是正确的、但是我希望前两个字节是0x7F30而不是0x7F3F。 ChID 应为0。 第三个字节应为0x00。

    我假设当您尚未发送读取命令时器件始终在 SDO 上发送样本?

    莱夫

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

    您好、Leif、

    您为 RPi 设置了什么 SPI 设置?  您能否发送另一个捕获、仅显示一个或两个事务?

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

    您好、Tom、

    这是第一个瞬变的捕获:

    (CNT、regdata)= self.pi.spi_xfer (self.h、[0x08、0x10、0x00])      #将0写入 sequence_config
    (CNT、regdata)= self.pi.spi_xfer (self.h、[0x10、0x10、0x00])     #写入我们要读取 register_config 的内容
    (CNT、regdata)= self.pi.spi_read (self.h、3)                                #从 serial_config 读取3个字节

    我们使用 Raspberry PI 上的 pigpio 库。 (https://abyz.me.uk/rpi/pigpio/python.html)

    设置如下:

    piadc = pigpio.pi()
    hadc = piadc.spi_open (1100000、0x100)
    #辅助通道1100kHz、模式0 (CPOL=0、CPHA=0)
    ADC = hk_adc (hadc、piadc)

    莱夫

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

    感谢您添加了详细信息 Leif、

    在这些捕获之前、您是否对任何其他模式进行编程?  根据发送的数据、我希望 ADS7038输出寄存器内容(而非转换结果)。   

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

    您好、Tom、

    在我的第一篇文章中、我解释了如何通过写入一些寄存器将其设置为手动模式。

    当我在下一个 CS 周期发送读取 Reg 命令时、它会在 SDO 上输出该寄存器的内容、这是否正确?

    例如:
    写入(0x08、0x05、0x5A)
    写入(0x10、0x05、0x00)
    然后它应该在下一个 CS 周期读取0x5A?

    每当我没有发送 Read Reg 命令(0x10、Reg、0x00)、它就会根据 CS 周期数据表中的图25输出样本?

    莱夫

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

    您好、Leif、

    是的、正确。  寄存器数据在 RD_REG 命令之后的周期中输出、如图32所示。