TI论坛
直播中

小峰

13年用户 972经验值
私信 关注
[问答]

ADS8685使用的是标准SPI通信,但是现在对相应寄存器写入数据时候,芯片没有反应怎么解决?


  • 问题如下:使用的是标准SPI通信,但是现在对相应寄存器写入数据时候,芯片没有反应,具体不知道是自己写SPI有问题还是其他什么问题。对于写命令的后16bit数据在对应寄存器的各位的时候应该是怎么使用。还有现在如果我的写数据是没有问题的,因为我用示波器都看过一遍了,但是SDO均没有输出,这时候使用读命令采到的均为0,所以暂时自己的读命令也没办法知道是对的还是错的。所以,最后想要请问下读写命令的相关操作有什么我没注意到的以及有没有相应的例子可以参考或者该怎么使用?
    贴上ADS8685的电路原理图如下:

回帖(2)

张强

2024-12-18 17:09:07
 先检查一下硬件吧, 包括供电, 复位信号是否正常, 还有焊接质量也检查一下.
怎么说 SPI 写没有问题呢,  SDO 都没有回应哪, 还是先对照手册验证一下时序
举报

符筹荣

2024-12-18 18:10:30
根据您的描述,您在使用ADS8685时遇到了一些问题。以下是一些建议和解决方案:

1. 检查硬件连接:确保您的SPI接口连接正确,包括MOSI、MISO、SCK和CS。检查电源和地线是否连接正确。

2. 检查SPI时序:确保您的SPI时序符合ADS8685的要求。ADS8685的时序要求如下:
   - CS低电平有效
   - SCK上升沿读取数据,下降沿写入数据
   - MOSI为数据输入线,MISO为数据输出线

3. 检查写命令格式:ADS8685的写命令格式为:[1 bit start] + [1 bit write] + [6 bits register address] + [16 bits data]。确保您的写命令格式正确。

4. 检查读命令格式:ADS8685的读命令格式为:[1 bit start] + [1 bit read] + [6 bits register address] + [16 bits dummy clock cycles]。确保您的读命令格式正确。

5. 检查寄存器地址:确保您写入的寄存器地址是正确的。您可以查阅ADS8685的数据手册,找到正确的寄存器地址。

6. 检查数据格式:确保您写入的数据格式是正确的。您可以查阅ADS8685的数据手册,找到正确的数据格式。

7. 使用示波器检查SPI信号:使用示波器检查SPI信号,确保您的SPI信号符合ADS8685的要求。

8. 参考示例代码:您可以查阅ADS8685的数据手册,找到示例代码,以便更好地理解如何使用ADS8685。

以下是一段示例代码,用于写入和读取ADS8685的寄存器:

```c
#include
#include

// SPI接口函数
void spi_transfer(uint8_t *tx, uint8_t *rx, uint8_t len);

// 写入ADS8685寄存器
void ads8685_write_register(uint8_t reg_addr, uint16_t data) {
    uint8_t tx[3] = {0};
    uint8_t rx[3] = {0};

    tx[0] = 0x00; // 写命令
    tx[1] = reg_addr;
    tx[2] = (data >> 8) & 0xFF;
    tx[3] = data & 0xFF;

    spi_transfer(tx, rx, 4);
}

// 读取ADS8685寄存器
uint16_t ads8685_read_register(uint8_t reg_addr) {
    uint8_t tx[4] = {0};
    uint8_t rx[4] = {0};

    tx[0] = 0x40; // 读命令
    tx[1] = reg_addr;
    tx[2] = 0x00; // 16位dummy clock cycles
    tx[3] = 0x00;

    spi_transfer(tx, rx, 4);

    return (rx[2] << 8) | rx[3];
}
```

希望这些建议和示例代码能帮助您解决问题。如果问题仍然存在,请查阅ADS8685的数据手册,了解更多详细信息。
举报

更多回帖

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