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.

[参考译文] ADS8684:ADC 读取值在每次扫描时保持变化

Guru**** 2502205 points
Other Parts Discussed in Thread: ADS8684

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/974689/ads8684-adc-reading-value-keep-changes-on-every-scan

器件型号:ADS8684

您好!  

 我将 ADS8684与 dsPIC33微控制器配合使用、它与通道0集成、当我扫描通道0时、即使电压保持不变、ADC 值也会保持变化。  

我的代码如下所示:

void adcInit()

{
adccdreg (man_ch_0);
}



void main ()

{

uint16_t 结果= 0;
uint8 MSB = 0;
uint8 LSB = 0;

while (1)

{

adcCS_Low ();
SPIPut (2、reg);
SPIPut (2、0
);SPIPut (2、0);SPIPut (2、0);
LSB = SPIPut (2、0);
adcCS_High ();
结果=(MSB << 8)| LSB; 
}

任何帮助。

谢谢

Rakesh  

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

    您好、Rakesh、


    您能否提供 CS、SCLK、SDO 和 SDI 的一些示波器图? 这将使我们能够验证计时。 请将探针放在器件的引脚上。

    此外、您能否测量 REFIO 和 REFCAP 引脚上的电压?

    如果您有可用的原理图、我们也可以查看。

    此致、

    戴尔

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

    谢谢 Dale、  

    原理图、 如下所示。  

    REFIO 引脚和 REFCAP 均具有4.48V 电压  

    我没有示波器、但逻辑分析仪可以很快发送数据。  

     

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

    您好 Dale、

    我现在能够写入和读取命令值。 将 SPI 模式更改为0后。  

    但 ADC 的重复结果仍然不一致。  

    引脚16和17之间的电压为1.78V、ADC 给出的结果如下:有时它的值为0、这很奇怪。  

    即使我将引脚16和17电压更改为0.7V、结果也是一样的。

    0x7FF1
    0x7FF6
    0x8F4C
    0x8004
    0x8002
    0x8005
    0x8037
    0x8054
    0x7FF0
    0x7FF7
    0x0000
    0x90A2
    0x8006
    0x8002
    0x8005
    0x8037
    0x8053
    0x7FF0
    0x7FF6
    0x0000
    0x8003
    0x8001
    0x8005
    0x8037
    0x8054
    0x7FF1

    我的代码如下所示  

    void main()
    {adcInit()
    ;
    while (1)
    {
    adread();
    }
    
    
    
    uint16_t adccdreg (uint8 reg)
    {
    uint16_t 结果= 0;
    UINT8 MSB = 0;
    UINT8 LSB = 0;
    
    adcCS_Low ();
    SPIPut (2、reg);
    SPIPut (2、0);
    MSB = SPIPut (2、0);
    LSB = SPIPut (2、0);
    adcCS_High ();
    
    结果=(MSB << 8)| LSB;
    }
    uint16_t adcReadReg (uint8 reg)
    {
    uint16_t 结果= 0;
    UINT8 MSB = 0;
    UINT8 LSB = 0;
    
    adcCS_Low ();
    SPIPut (2、(reg << 1)| 0x00);
    SPIPut (2、0);
    MSB = SPIPut (2、0);
    LSB = SPIPut (2、0);
    adcCS_High ();
    
    结果= MSB<<8;
    结果|= LSB;
    
    返回结果;
    }
    
    void adcInit()
    {
    adccdreg (man_Ch_0);
    __delay32(10000);
    adccdreg (AUTO_RST);
    __delay32 (10000);
    }
    
    void adread (void)
    {
    uint16 adcData;
    __delay32(10000);
    adcData = adcReadReg (NO_OP);
    __delay32(10000);
    } 

     

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

    您好、Rakesh、

    REFIO 和 REFCAP 上的4.48V 电压不正确、 这些引脚上的电压应为4.096V、请使用精密万用表进行仔细检查。

    很难看到您的原理图、因为它不清楚。 但是、在您的电路中发现了几个错误:

    应将 DAISY 引脚连接到接地端、而不是 VCC_5V。  

      如果应用使用独立器件、则 DAISY 引脚连接到 GND。 请参阅数据表中的图70和第8.4.1.1.5节。

    ADS8684只能接受单端输入信号、AIN_xGND 引脚应接地。 您要将差分信号连接到 ADC 的输入。

    3、如果需要上拉电阻、引脚1 (SDI)和引脚2 (/RST/PD)应连接到 DVDD (VCC_3V3)、而不是 VCC_5V。

    强烈建议使用实心接地层、不建议在 SGND 和 GND 之间进行单点连接。

    此致、

    戴尔

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

    谢谢 Dale、  

    我根据您的建议进行了更改。 我在 AIN_0P 和 AIN_xGND 上施加了外部电压。 当改变电压时、我得到了 ADC 计数。  

    必须按照以下代码读取 ADC。 REST 初始化将按照之前的代码进行  

    void adread (void)
    {
    adcData = adccdreg (man_Ch_0);
    __delay32 (10000);
    adcData = adcReadReg (no_OP);
    __delay32 (10000);
    } 

    感谢您的支持 Dale。  

    Rakesh P