ADI 技术
直播中

王蓓

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

ad7928读出来的结果value每次都一样?

读写操作如下:
#define WAIT 100
void Read_AD7928(u16 *data_out,u16 Send_data)
{
u8 i;
    DIN=1;
Delay(10);
    DOUT=1;
Delay(10);
    SCLK=1;
Delay(10);
    CS=1;
    Delay(10);
    CS=0;
Delay(20);
*data_out = 0;
//Send_data = Send_data<<5;
    for(i=0;i<16;i++)
    {
  
  if(Send_data&(1<   {
  DIN=1;
  }
  else
  {
  DIN=0;
  }
  Delay(WAIT);
  SCLK=0;
        Delay(WAIT);
  if(DOUT)
  {
   *data_out |=1<   }
        SCLK=1;
        Delay(WAIT);
    }
*data_out=(*data_out&0x1fff)/2;
    CS=1;
}

定时1ms:
Read_AD7928(&value,0x9330);
读出来的结果value每次都一样?或者说是不准确的数据,请问是什么问题呢?

回帖(3)

周伟

2018-11-9 09:49:55
您好!
不能正常读到数据请先检查硬件设计,看硬件设计是否正确,硬件设计请参考附件内AD7928评估板原理图。确保硬件设计正确后,请检查焊接是否正常,通常虚焊或短路会导致芯片状态不正常。
对于软件部分的检查,首先应保证初始化流程与数据手册中流程要求一致。在数字读写时,则应保证读写时序遵守数据手册中时序图。
附件

举报

王蓓

2018-11-9 10:03:20
引用: 213123d 发表于 2018-11-9 20:04
您好!
不能正常读到数据请先检查硬件设计,看硬件设计是否正确,硬件设计请参考附件内AD7928评估板原理图。确保硬件设计正确后,请检查焊接是否正常,通常虚焊或短路会导致芯片状态不正常。
对于软件部分的检查,首先应保证初始化流程与数据手册中流程要求一致。在数字读写时,则应保证读写时序遵守数据手册中时序图。

问题已经解决,实际上读和写程序要分开写,参考网上提供的AD7949读写例程,在读的时候数据信号要为低,才可以正常读。
举报

李婷婷

2018-11-9 10:15:02
引用: yzrui 发表于 2018-11-9 20:17
问题已经解决,实际上读和写程序要分开写,参考网上提供的AD7949读写例程,在读的时候数据信号要为低,才可以正常读。

你好!我在读取AD7490的时候遇到了同样的问题。请问下您所说的“在读的时候数据信号要为低,才可以正常读”这句话是啥意思?是不是一开始的idle的状态要为低
举报

更多回帖

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