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.

[参考译文] ADS8168:ADS8168 Dataread

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1034358/ads8168-ads8168-dataread

器件型号:ADS8168

您好 ,我有关于 ADS8168的问题。

我在自己的设计板上使用 ADS8168。

我已经测试了与 ADS8168的 SPI 通信。

WRITE_cmd (ADCCMD_WR_REG、0xFF、0x55);
WRITE_cmd (ADCCMD_RD_REG、0xFF、0x0);

在地址0xFF 上对数据0x55执行写操作、并读取地址0xFF、其输出数据为0x55;


WRITE_cmd (ADCCMD_WR_REG、0xFFFF、0x66);
WRITE_cmd (ADCCMD_RD_REG、0xFFFF、0x0);

在地址0xFF 上对数据0x66执行写操作、并读取地址0xFF、其输出数据为0x66;

因此我认为 SPI 通信是可以的。

I init ADS8168并在自动模式下工作。

//启用写入
WRITE_cmd (ADCCMD_WR_REG、REG_ACCESS、REG_ACCESS_BITS);
//write_cmd (ADCCMD_RD_REG、REG_ACCESS、0x0);

//除 ref/2缓冲器之外的所有加电
WRITE_cmd (ADCCMD_WR_REG、REG_PD_CNTL、PD_CNTL_PD_REFby2);

//数据类型:ADC 值+ 4位通道 ID
WRITE_cmd (ADCCMD_WR_REG、REG_DATA_CNTL、DATA_CNTL_FORMAT_Chid);

// Vref = 4V096
WRITE_cmd (ADCCMD_WR_REG、REG_Ofst_CAL、Ofst_CAL_4V096);//REG_SDO_CNTL4

WRITE_cmd (ADCCMD_WR_REG、REG_SDO_CNTL4、SDO_CNTL4_SEQSTS_CFG);

 WRITE_cmd (ADCCMD_WR_REG、REG_SEQ_START、SEQ_START_START);

while (readpin (SEQSTS)!= 0)

 chanel2=readChannelCustom();
chanel6=readChannelCustom();

可读信道自定义的趣味学习

uint16_t readChannelCustom()

//建立时间
for (int i=0;i<50000;i++);
unsigned char TX_DATA[2]={0、0};
unsigned char rx_data[2]={0、0};
XSpi_Transfer (SpiInstance、TX_DATA、Rx_DATA、2);
返回 Rx_DATA[0]<< 8 | Rx_DATA[1];

当我在通道0中将输入电压从0.4-2.0更改为0.4-2.0时,结果为数据0x8e1。

那么哪一步是错误的?  

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

    很抱歉,我忘记了一些东西。

    //启用写入
    WRITE_cmd (ADCCMD_WR_REG、REG_ACCESS、REG_ACCESS_BITS);
    //write_cmd (ADCCMD_RD_REG、REG_ACCESS、0x0);

    //除 ref/2缓冲器之外的所有加电
    WRITE_cmd (ADCCMD_WR_REG、REG_PD_CNTL、PD_CNTL_PD_REFby2);

    //数据类型:ADC 值+ 4位通道 ID
    WRITE_cmd (ADCCMD_WR_REG、REG_DATA_CNTL、DATA_CNTL_FORMAT_Chid);

    // Vref = 4V096
    WRITE_cmd (ADCCMD_WR_REG、REG_Ofst_CAL、Ofst_CAL_4V096);//REG_SDO_CNTL4

    WRITE_cmd (ADCCMD_WR_REG、REG_SDO_CNTL4、SDO_CNTL4_SEQSTS_CFG);

    WRITE_cmd (ADCCMD_WR_REG、REG_DEVICE_CFG、DEVICE_CFG_SEQMODE_AUTO);
    TMP|=AUTO_SEQ_CFG1_EN_AIN0;
    TMP|=AUTO_SEQ_CFG1_EN_AIN1;
    WRITE_cmd (ADCCMD_WR_REG、REG_AUTO_SEQ_CFG1、tmp);

     WRITE_cmd (ADCCMD_WR_REG、REG_SEQ_START、SEQ_START_START);

    while (readpin (SEQSTS)!= 0)

     chanel2=readChannelCustom();
    chanel6=readChannelCustom();

    可读信道自定义的趣味学习

    uint16_t readChannelCustom()

    //建立时间
    for (int i=0;i<50000;i++);
    unsigned char TX_DATA[2]={0、0};
    unsigned char rx_data[2]={0、0};
    XSpi_Transfer (SpiInstance、TX_DATA、Rx_DATA、2);
    返回 Rx_DATA[0]<< 8 | Rx_DATA[1];

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

    您好、Shaoqing、

    您似乎已经将数据格式设置为 ADC 值+ 4位通道 ID。 您的通道功能适用于16位数据、您是否确定为器件提供足够的时钟来包含通道 ID 数据、以及您是否正在将数据读取到正确的位置?

    最棒的

    Zak

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

    感谢,我已再次检查 SPI 通信,我已找到 返回数据重复 之前的命令。、因此 SPI 通信为错误?

    WRITE_cmd (ADCCMD_WR_REG、REG_SDI_CNTL、0x0);

    SPI 发送:0x08 0x08 0x00

        读取:0x06 0x06 0x06

    usleep(100);
    WRITE_cmd (ADCCMD_WR_REG、REG_SDO_CNTL1、0x0);

    SPI 发送:0x08 0x0C 0x00

        读取:0x08 0x08 0x00


    usleep(100);
    WRITE_cmd (ADCCMD_RD_REG、REG_ACCESS、0x0);

    SPI 发送:0x02 0x00 0x00

        读取:0x08 0x0C 0x00


    usleep(100);
    WRITE_cmd (ADCCMD_NOP、0xFF、0x00);

    SPI 发送:0x00 0xFF 0x00

        读取: 0x02 0x00 0x00


    usleep(100);

    我应该怎么做?

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

    我 有3个 ADS8168 online,由于默认设置、所有 CS 都设置为零,、因此 SDO。上存在冲突

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

    嗨、Shaoqing、

    很高兴您能够解决此问题、如果您遇到任何其他问题、请告知我们!

    最棒的

    Zak