其软件实现如下:
void Ad5663SoftwareReset(AD5663ResetTyperesetMode,void (*WriteByteToAD5663)(uint8_t))
{
uint32_tinputShiftData=0;
if(resetMode==ResetSoftware)
{
inputShiftData=RESET|Register_Reset_Software;
}
if(resetMode==ResetPoweron)
{
inputShiftData=RESET|Register_Reset_Poweron;
}
uint8_ttxData[3];
txData[0]=inputShiftData>>16;
txData[1]=inputShiftData>>8;
txData[2]=inputShiftData;
WriteByteToAD5663(txData[0]);
WriteByteToAD5663(txData[1]);
WriteByteToAD5663(txData[2]);
}
(3)上电复位
上电复位也是通过操作输入移位寄存器来实现的。命令位的定义没有变化,数据段的DB5和DB4定义掉电的模式,而DB1和DB0定义操作的通道。输入移位寄存器的数据格式如下:
其软件实现如下:
/*设置AD5663上电/掉电工作模式*/
void Ad5663PowerUpDownMode(DACHANNELchannel,AD5663PowerdownType powerdownType,void (*WriteByteToAD5663)(uint8_t))
{
uint32_tinputShiftData=0;
if(channel==DAChannelA)
{
inputShiftData=DAC_A;
}
if(channel==DAChannelB)
{
inputShiftData=DAC_B;
}
if(channel==ChannelAll)
{
inputShiftData=DAC_A|DAC_B;
}
switch(powerdownType)
{
caseNormalOperation:
{
inputShiftData=inputShiftData|Normal_Operation|Power_Down;
break;
}
caseR1K2GND:
{
inputShiftData=inputShiftData|_1K_GND|Power_Down;
break;
}
caseR100K2GND:
{
inputShiftData=inputShiftData|_100K_GND|Power_Down;
break;
}
caseThreeState:
{
inputShiftData=inputShiftData|Three_State|Power_Down;
break;
}
}
(4)输出操作
对各输出通道值的操作也是同过输入移位寄存器来完成。其数据格式如前面输入移位寄存器的介绍。后16位是数据(0-65535),然后是3位地址和3位命令。通讯的时序图如下所示:
设置DA通道的值具体代码如下:
void SetAD5663ChannelValue(DACHANNELchannel,uint16_t data,void (*WriteByteToAD5663)(uint8_t))
{
uint32_tinputShiftData=0;
if(channel==DAChannelA)
{
inputShiftData=WriteTo_Update_DAC_Channel|DAC_Channel_A|data;
}
if(channel==DAChannelB)
{
inputShiftData=WriteTo_Update_DAC_Channel|DAC_Channel_B|data;
}
uint8_ttxData[3];
txData[0]=inputShiftData>>16;
txData[1]=inputShiftData>>8;
txData[2]=inputShiftData;
WriteByteToAD5663(txData[0]);
WriteByteToAD5663(txData[1]);
WriteByteToAD5663(txData[2]);
}
欢迎关注:
`