TI论坛
直播中

kmno4

12年用户 989经验值
私信 关注
[问答]

ADS1299初始化完毕后直接读ID结果读出来的值全是0x80或0xff或0xaa这样数值,为什么?


  • 这是我的初始化代码,初始化完毕后直接读ID结果读出来的值全是0x80或0xff或0xaa这样数值,实际1299的ID是0x3e,帮忙看一下,有什么问题??

    void Stop_Read_Data_Continuous(void) //发送SDATAC指令函数
    {
    ads_cs_low();
    SPI_WriteReadByte(SDATAC); //SDATAC(0x11)
    ads_cs_high();
    }

    void ADS_INIT(void)
    {
    ads_clkselhigh(); //CLK_SEL=1,选择内部时钟

    ads_powerup(); //PDWN=1

    ads_startlow(); //START=0

    ads_resethigh(); //RESET=1

    delay_ms(1000);

    ads_resetlow(); //RESET=0

    delay_ms(100);

    ads_resethigh(); //RESET=1

    delay_ms(1);
    ads_cs_high(); //CS_DISABLE

    Stop_Read_Data_Continuous(); //先发送SDATAC指令
    }

    uint8_t ADS_Read_Version(void) //读ID函数
    {
    uint8_t Version_ID = 0;

    ads_cs_low();
    SPI_WriteReadByte(Read_ID); //Read_ID(0x20)

    SPI_WriteReadByte(SINGLE_BYTE_READ_WRITE); //SINGLE_BYTE_READ_WRITE(0x00)

    delay_us(10);

    Version_ID = SPI_WriteReadByte(SPI_TEST_DATA); //SPI_TEST_DATA(0xDD)
    ads_cs_high();
    return Version_ID;
    }

回帖(2)

周润艺

3 天前
发送完SDATAC命令之后,没有配置寄存器1和2吗? 采用的内部参考还是外部参考?
ADS1299 datasheet Page62中给出了初始化的顺序,可以参考一下。
举报

陈博

3 天前
从您提供的代码片段来看,您已经实现了ADS1299的基本初始化过程。但是,您在读取ID时遇到了问题,读取到的值不是预期的0x3E。以下是一些建议和可能的原因:

1. 检查硬件连接:请确保您的ADS1299与微控制器之间的连接正确。检查SPI接口的MISO、MOSI、SCK和CS引脚是否正确连接。

2. 检查SPI通信:确保您的SPI通信设置正确,包括时钟频率、CPOL和CPHA。您可能需要根据您的微控制器和ADS1299的数据手册调整这些参数。

3. 检查ADS1299的配置:在读取ID之前,确保ADS1299的配置正确。您可能需要设置正确的寄存器值以确保设备正常工作。

4. 检查读取ID的代码:请确保您在读取ID时使用了正确的寄存器地址。ADS1299的ID寄存器地址是0x00。以下是读取ID的示例代码:

```c
uint8_t Read_ID(void) {
    uint8_t id;

    ads_cs_low();
    SPI_WriteReadByte(0x00); // 读取ID寄存器地址
    id = SPI_WriteReadByte(0x00); // 读取ID值
    ads_cs_high();

    return id;
}
```

5. 检查延时函数:确保您的延时函数(如`delay_ms`)能够提供足够的延时。ADS1299在初始化过程中需要一定的延时以确保设备正常工作。

6. 检查电源:确保您的ADS1299电源稳定且在规定的范围内。不稳定的电源可能导致设备无法正常工作。

如果以上建议都无法解决问题,您可能需要检查您的ADS1299芯片是否损坏或者与其他硬件不兼容。您可以尝试使用另一块ADS1299芯片或者在不同的硬件平台上测试您的代码。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分