Post Go back to editing

关于AD5627R 按照手册编写了I2C驱动写入数据输出无反应,求大神指教?

我的基本配置大概如下(大神帮我看看哪里出问题了啊):

或者有没有驱动例程参考一下啊!!!感谢!!!


//AD5627
//DAC 
#define AD5627_VOUTA 0x00 //A A2 A1 A0(000)
#define AD5627_VOUTB 0x01 //B A2 A1 A0(001)
#define AD5627_BOTH 0x07 //AÇÒB A2 A1 A0(111)

//配置指令
#define RESET_COM 0x28 //复位
#define POWER_UP_DOWN_COM 0x20 //模式配置

#define LDAC_SET_COM 0x30 //设置LEACpin功能
#define REF_VOLT 0x38 //参考电压配置指令

//入学问题指令
#define WRITE_AND_UPDATE 0x58 //Write to and update DAC channel n DB22 为1 : 2字节写
#define READ_DATA 0x11


//AD5627R 读写地址
#define AD5627_ADDR_WRITE 0x1C //写指令
#define AD5627_ADDR_READ 0x1D //读指令

//初始化AD5627
void AD5627_Init(void)
{
AD5627_Write_Byte(AD5627_ADDR_WRITE,RESET_COM,0x0001);//复位
AD5627_Write_Byte(AD5627_ADDR_WRITE,POWER_UP_DOWN_COM,0x0003);//上电正常模式
AD5627_Write_Byte(AD5627_ADDR_WRITE,LDAC_SET_COM,0x0003);//设置忽略LDAC
//AD5627_Write_Byte(AD5627_ADDR_WRITE,REF_VOLT,0x0000);//关闭内部参考电压
}

void AD5627_Write_Byte(unsigned char REG_ADD, u8 com_And_Clannel, u16 InputCode)
{

IIC_Start(); //启动

IIC_Send_Byte(REG_ADD ); //写指令
IIC_Wait_Ack();

IIC_Send_Byte(com_And_Clannel ); //更新指令
IIC_Wait_Ack();

IIC_Send_Byte(InputCode>>8);//数据高字节
IIC_Wait_Ack();

IIC_Send_Byte(InputCode);//数据低字节
IIC_Wait_Ack();

IIC_Stop(); //停止

}

void IIC_Send_Byte(u8 txd)
{
u8 t;
SDA_OUT();
IIC_SCL=0;//
for(t=0;t<8;t++)
{
IIC_SDA=(txd&0x80)>>7;
txd<<=1;
delay_us(5); //
IIC_SCL=1;
delay_us(4); //2-4
IIC_SCL=0;
delay_us(2); //
}
}

Parents Reply Children
No Data