STM32
直播中

王银喜

7年用户 2419经验值
私信 关注
[问答]

请问如何通过AD7193控制片选AD5201数字电位器?

想做个测温模块。这是AD官网上的一个参考电路
AD7193是个AD采集芯片,AD5201是个数字电位器。

AD7193和AD5201有SPI接口。
AD7193的片选是单片机控制的。
AD5201的片选是AD7193的P3口控制的。

我的理解是要向AD5201发数,需要先向AD7193发命令,使其P3口拉低,再发AD5201需要的数据(阻值相关),然后再像AD7193发命令,拉高P3口。

但在P3口拉高的过程中,是像AD7193发命令,此时AD5201也能接受到数据,且P3口还没被拉高。
这样,最后写入到AD5201里的数,就不是我希望写入的数了。

回帖(1)

秋风宜人

2024-5-11 17:28:08
您的问题是如何通过AD7193控制AD5201数字电位器,以实现一个测温模块。首先,我们需要了解AD7193和AD5201的工作原理和接口。

AD7193是一个模数转换器(ADC),具有SPI接口。它可以通过单片机控制,实现对模拟信号的采集和转换。AD5201是一个数字电位器,也具有SPI接口,可以通过数字信号调整其阻值。

根据您的描述,AD7193的片选(CS)由单片机控制,而AD5201的片选(CS)由AD7193的P3口控制。要实现对AD5201的控制,我们需要按照以下步骤操作:

1. 首先,通过单片机控制AD7193的CS,使其处于激活状态。

2. 发送SPI命令给AD7193,设置P3口为输出模式。

3. 通过AD7193的P3口,将AD5201的CS拉低,使其处于激活状态。

4. 向AD5201发送SPI数据,设置所需的阻值。

5. 通过AD7193的P3口,将AD5201的CS拉高,使其处于非激活状态。

6. 通过单片机控制AD7193的CS,使其处于非激活状态。

关于您提到的在P3口拉高的过程中,AD5201可能接收到错误数据的问题,这确实是一个需要考虑的因素。为了避免这种情况,我们可以在步骤5之后,立即执行步骤6,确保在AD5201的CS被拉高之前,AD7193的CS已经被拉高,从而避免AD5201接收到错误的数据。

此外,为了确保数据的准确性,您还可以在发送数据给AD5201之前,先通过AD7193读取AD5201的当前阻值,以确保发送的数据是正确的。

总之,通过上述步骤,您应该可以实现通过AD7193控制AD5201数字电位器,从而构建一个测温模块。在实际操作过程中,可能还需要根据具体的硬件环境和单片机编程进行一些调整。
举报

更多回帖

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