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.

[参考译文] ADS8661:如何使用 ADS8661 (Raspberry Pi 平台)读取数字电压

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1115365/ads8661-how-to-read-digital-voltage-by-using-ads8661-raspberry-pi-platform

器件型号:ADS8661
主题中讨论的其他器件:ADS8861

大家好、

我想检查使用 ADS8861读取电压的过程。 您能帮我们检查以下流程吗? 谢谢你。

平台 :Raspberry Pi、 SPI 速度= 15.25878906kHz

SPI 接口、SDO-O、SCLK、CONVST/CS、SDI

REFIO、REFCAP、连接到 CAP

DGND、AGND、REFGND、AIN_GND 至 GND (Raspberry Pi 板  GND)

AVDD = 5V、DVDD = 3V (Raspberry Pi 提供电源)

程序 :

RST:高电平->延迟1ms ->低电平->延迟1ms ->高电平

 

寄存器参数写入:                        

DEVICE_ID_REG (0x02)             ->数据(0x00 、 0x0c)  (地址0x03下0x00数据、地址0x02下0x0c 数据)      

RST_PWRCTL_REG (0x04)      ->数据(0x69 、 0x03)

SDI_CTL_REG (0x08)               ->数据(0x00 、 0x03)

SDO_CTL_REG (0x0C)             ->数据(0x00 、 0x00)

DATAOUT_CTL_REG (0x0C)   ->数据(0x55 、 0x08)  ->启用所有数据标志的输出数据字

Range_SEL_CTL_REG (0x0C)->数据(0x00 、 0x0B)  ->内部基准4.096V,范围= 1.25 * 4.096= 0 ~ 5.12V

 

我们希望通过 ADS8861读取数字电压。 ( 我们在 AIN_P 上放置了电压输入。)

现在、我们可以检测  Raspberry Pi Device_ID。  

我想知道如何解释我们读取的数据。

 

下面是 我们的测量结果。

0x00b10c00 (GND)

0x00b13c5c (1.834V)

0x00b23c2d (3.443V)

0x00b27c6d (4.82V)

此致、

罗伊

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

    Roy、您好!

    您共享的引脚图像与 ADS8861不对应、您是否确认器件型号?

    此致

    Cynthia

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

    您好、Cynthia、

    打扰一下。 应为 ADS8661。


    罗伊

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

    您好、Roy、

    请查看我的反馈和以下问题:

    1. RST_PWRCTL_REG (0x04): 将 PWRDN 设置为1、从而使转换器进入断电模式。 您是否期望这样做?
    2. SDI_CTL_REG (0x08):将 SDO 设置为11b 模式。  您的微控制器上的 SPI 配置是什么?
    3. SDO_CTL_REG (0x0C): 该命令不执行任何操作、因为该寄存器的复位值已全为0。
    4. DATAOUT_CTL_REG (0x10?):寄存器值、ACTIVDD_H_FLAG、ACTIVE_IN_H_FLAG、输入范围和两个奇偶校验位包含在输出位流中。

    这些代码似乎不正确、请告诉我问题的答案。 我还有其他问题、您的采样率是多少? REFIO 和 REFCAP 引脚上测得的电压是多少? 您是否读回了每个寄存器、以确保您的寄存器写入是否正确?

    此外、您能否共享寄存器写入的时序? 以及数据转换的时序? 应使用示波器捕获 SCLK、/CS、SDI 和 SDO 的时序。

    此致、

    戴尔

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

    您好 Dale、

    1.    RST_PWRCTL_REG (0x04): 将 PWRDN 设置为1、从而使转换器进入断电模式。 您是否期望这样做?   [Roy]我们删除了它。
    1. SDI_CTL_REG (0x08):将 SDO 设置为11b 模式。 您的微控制器上的 SPI 配置是什么? [Roy] Raspberry Pi 设置了 SPI_MODE00、因此我们设置了 ADS8861 = 00b
    2. SDO_CTL_REG (0x0C): 该命令不执行任何操作、因为该寄存器的复位值已全为0。  [Roy]好的
    3. DATAOUT_CTL_REG (0x10?):寄存器值、ACTIVDD_H_FLAG、ACTIVE_IN_H_FLAG、输入范围和两个奇偶校验位包含在输出位流中。 [Roy]打扰一下、它是拼写错误、DATAOUT_CTL_REG (0x10)、 RANGE_SEL_CTL_REG (0x14)

    这些代码似乎不正确、请告诉我问题的答案。 我还有其他问题、您的采样率是多少? REFIO 和 REFCAP 引脚上测得的电压是多少? 您是否读回了每个寄存器、以确保您的寄存器写入是否正确?   

    [YUY]我们使用了具有错误 SP_MODE 的双向器件来读取寄存器、这与我们编写的内容相同。

    此外、您能否共享寄存器写入的时序? 以及数据转换的时序? 应使用示波器捕获 SCLK、/CS、SDI 和 SDO 的时序。         

     

    现在、我们解决了一些问题、但仍有一些问题需要您发表意见、

     修改后、我们可以读取数字电压。 (0~5.12V -> 0x000~0xxff)

     

    Raspberry Pi 读取的第一个字节是 ADS8861 MSB、CPU 读取值应该相反、因此我们对其进行了转换。 现在设置如下所示。

    DEVICE_ID_REG (0x02)             ->数据(0x00 、 0x0C)

    DATAOUT_CTL_REG (0x0C)   ->数据(0x7D 、 0x08)  ->启用所有数据标志的输出数据字

    Range_SEL_CTL_REG (0x0C)->数据(0x00 、 0x0B)  ->内部基准4.096V,范围= 1.25 * 4.096= 0 ~ 5.12V

     

    输出数据  

    D[31:20]: 电压,正常

    D[19:16]:设备地址,正常

    D[15:12]:该位应通过 ADC 输入范围设置进行更改,但应为 D[11:8]

    不确定 有关 ADC 输入范围的根本原因  

    下面是一些测试结果数据

    0x741c B100 (2.308V)

    0x280c b080 (0.798V)

    0xe9dc b040 (4.658V)

    0x3c b080 (5.084V)

    0x000c B100 (GND)

     

    此致、

    罗伊

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

    您好、Roy、

    很高兴您更正了您的代码和配置、现在您已为每个模拟输入信号获得了正确的转换代码。 关于您对 D[15:12]的问题、我认为您正在查看旧的 ADS8615数据表。 我们最近于3月更新了表7-6、输出位流中输入范围的位置已更新为 D[11:8]、请参阅下面的新表和新 的 ADS8661数据表

    如果您有任何有关 ADS8661的其他问题、请告诉我、谢谢。

    此致、

    戴尔

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

    您好 Dale、

    我们的数据表表表表7-6看起来 与您的数据表相同。  

    RANGE_SEL_CTL_REG (0x0C) 设置输入范围= 0x0B

     

    但测试结果显示输出数据字= 0x741c B100 (2.308V) -> b  是 D[15:12]中的输入范围位置

    罗伊

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

    您好、Roy、

    您是否仍在写入地址为0x0C 的 RANGE_SEL_REG 寄存器? 正确的地址为0x14。  

    您是否对 ALARM_REG 进行了编程以启用输出位流中的所有警报标志?

    此致、

    戴尔