ADI 技术
直播中

周志光

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

AD5686R的转换数据有误

使用官方给的例程,电源和逻辑电源接3.3V,GAIN接地。RESEL接地。LDAC和RESET初始化时分别接低电平和高电平。

以下是主函数中的程序:

AD568X_SYNC= 0;   //片选信号
AD568X_InternalVoltageReference(AD568X_INT_REF_OFF);    //使用外部参考电压
AD568X_SYNC= 1;
delay_us(50);
  
AD568X_SYNC= 0;
AD568X_PowerMode(AD568X_ADDR_DAC_C,AD568X_PD_NORMAL); //设置C电源模式
AD568X_SYNC= 1;
delay_us(50);

AD568X_SYNC= 0;
AD568X_SetVoltage(AD568X_ADDR_DAC_C,2.5,3.3); //设置输出电压为2V。参考电压是3.3V
AD568X_SYNC =1;
delay_us(50);

这样执行后,C通道输出电压是0,但是B通道却有2.5/2=1.25V电压输出,
类似的,如果使用DAC_B,设置输出为1.2V,那么,B通道输出电压是0,A通道却有0.6V的电压输出。

不知道是哪儿出现问题了呢?

希望有人可以知指导一下,谢谢

回帖(10)

袁飞

2018-9-13 11:21:19
尝试回读数据,是否与写入的相同
举报

周志光

2018-9-13 11:30:57
引用: 60user105 发表于 2018-9-13 09:23
尝试回读数据,是否与写入的相同

我在写入电压后读出,读出的是ffff,
举报

周志光

2018-9-13 11:43:32
引用: 60user105 发表于 2018-9-13 09:23
尝试回读数据,是否与写入的相同

回读时用的这个函数:AD568X_ReadBack(AD568X_ADDR_DAC_C);
 
这个函数中的部分程序是这样的:
AD568X_SetInputRegister(AD568X_CMD(AD568X_CMD_SET_READBACK) |   
                             AD568X_ADDR(dacChannelAddr));
 
  Read_Back |= SPI1_ReadWriteByte(0xff)<<16;
  Read_Back |= SPI1_ReadWriteByte(0xff)<<8;
  Read_Back |= SPI1_ReadWriteByte(0xff);
 
[size=13.3333px]Read_Back读出的全是F。
举报

袁飞

2018-9-13 11:58:25
引用: scmywkf 发表于 2018-9-13 09:45
回读时用的这个函数:AD568X_ReadBack(AD568X_ADDR_DAC_C);
 
这个函数中的部分程序是这样的:

从现象来看, 数据的写出、读出出现了问题,建议参考数据手册书序图检查自己的时序
同时使用示波器抓取SPI波形,便于检查
举报

更多回帖

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