AD7710采集的问题

AD7710与STM32F107连接,其中写控制寄存器和读控制寄存器完全正确(A0=0),但是读数据处寄存器(A0=1)时,却读出了控制寄存器的内容?这个是为何?另外,关于MD2~MD0中的模式7 和8怎么使用?怎么读取校准寄存器?

方案来自 梦想橡皮擦 狂飙组基于 GPT 编写的 “程秘”

AD7710是一款高精度的数模转换器,它通过与STM32F107的SPI连接来读取传感器数据。

根据您的描述,读取控制寄存器时是正确的,但读取数据寄存器时却读取到了控制寄存器的内容,这可能是由于AD7710的SPI通讯配置问题导致的。
关于MD2~MD0中的模式7和8,它们是AD7710中的数据读取模式。模式7是长度固定的数据读取模式,而模式8是长度可变的数据读取模式。选择具体使用的模式取决于您的数据读取需求。

读取校准寄存器与读取其他寄存器类似,只需在读取数据寄存器时更改地址即可。

首先,读取控制寄存器内容而不是数据寄存器内容可能是由于以下原因之一导致的:

控制寄存器和数据寄存器的地址未正确分配。您需要确保控制寄存器地址为 0(A0 = 0),而数据寄存器地址为 1(A0 = 1)。
您可能没有正确配置数据存储格式,该格式决定了读取数据寄存器时所读取的位数。请检查控制寄存器中的数据存储格式配置,确保符合您的需求。
关于 AD7710 中的模式 7 和模式 8,它们是两种高级模式,可以提供更丰富的功能。具体而言,模式 7 是积分模式,可以实现长时间的积分,适用于积分类型的传感器。模式 8 则是滤波模式,可以实现高通滤波和低通滤波,适用于需要滤波的传感器。

要读取校准寄存器,您需要先配置 AD7710 的模式为校准模式,并确保校准寄存器的地址正确设置。然后,您可以通过 I2C 或 SPI 通信协议读取校准寄存器内容。

以下答案引用自GPT-3大模型,请合理使用:

。

AD7710与STM32F107连接时,使用A0=0连接控制寄存器,使用A0=1连接读数据处寄存器。关于MD2~MD0中的模式78怎么使用?怎么读取校准寄存器?可以参考下面的代码。

#include "stm32f4xx.h"

#define AD7710_I2C_ADDRESS 0x5B

#define AD7710_REGISTER_1 (0x00)

#define AD7710_READ_MODE_7 (0x01)

#define AD7710_READ_MODE_8 (0x02)

void ad7710_init(void)

{

I2C_Init();

AD7710_Init();

}

void ad7710_read_reg(unsigned int reg)

{

// write reg to control register

I2C_Wr(AD7710_I2C_ADDRESS,reg);

// read data from data register

I2C_Rd(AD7710_I2C_ADDRESS,reg);

}

void main(void)

{

ad7710_init();

while (1)

{

// read calibration register

ad7710_read_reg(AD7710_REGISTER_1);

}

}
不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^