ADI 技术
直播中

余小娟

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

AD7765 SDO口数据一直不正常

不知为啥SDO口数据一直不正常,是不是我程序写的有问题,请帮看一下,我用的Keil4编程软件,控制器是STM32单片机
端口定义:
#define SCO PBin(4)   //在单片机看来是输入,AD是输出
#define SDI PCout(12) //在单片机看来是输出,AD是输入
#define FSI PCout(11)
#define FSO PBin(3)
#define RSET PCout(10)
#define PA0 PAout(0)
#define SYNC PAout(15)
#define SDO GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_2)
#define OVE GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_5)
//初始化
RSET = 0;
          delay_us(1);
          RSET = 1;
          delay_us(1);
          FSI =1;
delay_us(1);
//写函数
void ADC_Write_oneword(uint16_t address,uint16_t wrdata)
{
          u8 i,j;
          FSI = 1;
          FSI = 0;
          for(i=0;i<16;i++)
          {
                    if(address&0x8000)
                              SDI = 1;
                    else
                              SDI = 0;
                    address<<=1;
          }
          for(j=0;j<16;j++)
          {
                    if(wrdata&0x8000)
                              SDI = 1;
                    else
                              SDI = 0;
                    wrdata<<=1;
          }
          FSI = 1;
}
7765控制寄存器的D13是ReadGain,是不是把这一位置一以后,SDO就有数据输出了?
不知怎的,FSO一直没有拉低过,显然是没有数据输出吧,不知究竟是怎么读数据的,求指点,另外,我板子上这些与单片机相连的AD口都忘了加0r的电阻(其他地方有),会不会有影响呢。如不吝赐教,十分感谢!

回帖(2)

周伟

2018-10-22 09:29:14
您好!
建议您回读寄存器试一下。回读寄存器值,需要置低FSI,然后通过SDI写入地址和回读操作,拉高FSI后经过8×tscoFSO输出会变低电平,随后SDO输出寄存器值。首先应确定FSISDI操作是否按照数据手册中表3时序要求进行操作。还有要注意的是电源,地,参考输入,MCLKRESET等基本输入信号是否正常。此外,您也可以换一片芯片试一下。
举报

李昕一

2018-10-22 09:49:04
AD7765是主机,STM32要设置成从机。
举报

更多回帖

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