TI论坛
直播中

吕钢格

9年用户 1075经验值
私信 关注
[问答]

ADS8568的8个通道通过SPI读取到的数据都是一样的,为什么?


  • 28335与ADS8568的SPI通信问题:
    在给了convst信号并且片选使能ADS8568后,先SPI发送一个数据给从模块ADS8568,然后读取到ADS8568的模拟量采集值,
    发现只能读取到第1通道,其它7通道全部与1通道一样,请问是说明原因?8个通道读取不是通过
    Gaabb[0]=SpiaRegs.SPIRXBUF;
    Gaabb[1]=SpiaRegs.SPIRXBUF;
    Gaabb[2]=SpiaRegs.SPIRXBUF;
    Gaabb[3]=SpiaRegs.SPIRXBUF;
    Gaabb[4]=SpiaRegs.SPIRXBUF;
    Gaabb[5]=SpiaRegs.SPIRXBUF;
    Gaabb[6]=SpiaRegs.SPIRXBUF;
    Gaabb[7]=SpiaRegs.SPIRXBUF;
    就行了吗?究竟通过SPI读取ADS8568的转换结果是怎样的,看时序图不是就先给CONVT(先高后底模拟上升沿),再片选使能,再根据BUSY/INT判断
    已经转换完毕则直接连续读取8个字的转换结果就行了吗?为什么只能读到通道1的,比较困惑,请指教!

回帖(3)

王婷婷

2024-12-13 09:29:57
这种情况, 也可能跟通信时序有关, 你也考虑再检查一下.
举报

姜雪

2024-12-13 09:30:06
  你这个读取的不对,读取的是同一个spi寄存器的缓存值,这个值没经过更新,肯定还是一模一样的数据的。8路ad数据通过一个spi接口传数据,起码应该连续读取8次.如果你用的是dma的话,也应该是读取不同的数组缓存值了。
举报

张勇

2024-12-14 15:50:19
ADS8568的8个通道通过SPI读取到的数据都是一样的,可能有以下几个原因:

1. ADS8568配置问题:请检查ADS8568的配置寄存器是否正确设置。确保通道选择寄存器(CHSEL)设置正确,以便选择正确的通道进行数据读取。

2. SPI通信问题:请检查SPI通信是否正常。确保SPI时钟频率、CPOL和CPHA设置正确,以匹配ADS8568的要求。

3. 代码问题:请检查您的代码是否正确实现了SPI通信和数据读取。根据您的描述,您使用了以下代码读取8个通道的数据:

```c
Gaabb[0]=SpiaRegs.SPIRXBUF;
Gaabb[1]=SpiaRegs.SPIRXBUF;
Gaabb[2]=SpiaRegs.SPIRXBUF;
Gaabb[3]=SpiaRegs.SPIRXBUF;
Gaabb[4]=SpiaRegs.SPIRXBUF;
Gaabb[5]=SpiaRegs.SPIRXBUF;
Gaabb[6]=SpiaRegs.SPIRXBUF;
Gaabb[7]=SpiaRegs.SPIRXBUF;
```

这段代码实际上并没有实现通道切换和数据读取。您需要在读取每个通道的数据之前,先发送通道选择命令,然后读取数据。以下是一个示例代码:

```c
// 选择通道0
sendCommand(0x00);
Gaabb[0] = SpiaRegs.SPIRXBUF;

// 选择通道1
sendCommand(0x01);
Gaabb[1] = SpiaRegs.SPIRXBUF;

// ... 以此类推,直到通道7
```

其中,`sendCommand`函数用于发送通道选择命令。您需要根据实际情况实现这个函数。

4. ADS8568硬件问题:如果以上步骤都无法解决问题,可能是ADS8568硬件本身存在问题。您可以尝试更换一个新的ADS8568模块进行测试。

总之,要解决这个问题,您需要检查ADS8568的配置、SPI通信设置和代码实现,并确保正确地选择通道和读取数据。希望这些建议能帮助您解决问题。
举报

更多回帖

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