AD5761R菊花链结构DA输出

AD5761R菊花链结构DA输出

AD5761R特性介绍

 AD5761R/AD5721R分别是单通道、16/12位串行输入、电压输出数模转换器(DAC),采用单电源(4.75V至30V)或双电源(-16.5V至0VV。和4.75V至16.5VV,n)供电,集成输出放大器、基准电压源缓冲器和基准电压源,是使用极为方便的通用解决方案。

 这些器件可保证单调性,选定范围内的积分非线性(INL)为土2LSB(最大值),噪声为35nV/vHz,建立时间为7.5us。
 AD5761R/AD5721R采用串行接口,能够以最高50MHz的时钟速率工作,并且与DSP和微控制器接口标准兼容。利用双缓冲,DAC输出可实现异步更新。输入编码为用户可选的二进制补码或偏移二进制。异步复位功能可将所有寄存器复位至默认状态。用户可通过控制寄存器中的RA[2:0]位选择输出范围。

在这里插入图片描述

菊花链结构链接示意图

 SCLK以及SYNC并联结构,上一个的SDO接下一个的SDI,LDAC引脚在菊花链结构中十分重要需要注意使用,LDAC引脚可实现通过引脚更新DA寄存器数据,在采用菊花链结构时,如果不使用LDAC,假设群位里面有一个数据为0,则每个DA在经过位移时都会将数据值先设置为0在回到设置值
在这里插入图片描述

通讯方式

 采用SPI通讯方式,16位DA 24字节命令发送,SPI CPOL以及CPHA均配置为0即可

菊花链时序图

命令格式

发送实例以及注意要点

单数据传送到某一个DA上

在这里插入图片描述

发送不同数据到达指定DA

在这里插入图片描述

实验实例

/*************************************************
 * 函数名:AD5761R_SetVoltage
 * 函数作用:设置通道电压
 * 入口参数:ch1_val: 通道1电压 ch2_val: 通道2电压 ch3_val: 通道3电压 ch1_val: 通道4电压
 * 出口参数:无
 *************************************************/
void AD5761R_SetVoltage(float ch1_val,float ch2_val,float ch3_val,float ch4_val)
{	
	int buff[4] = {0};
	//通道4
	if(ch1_val < -30)	{ch1_val = -30;}
	if(ch2_val < -30)	{ch2_val = -30;}
	if(ch3_val < -30)	{ch3_val = -30;}
	if(ch4_val < -30)	{ch4_val = -30;}
	
	
	if(ch1_val > 150)	{ch1_val = 150;}
	if(ch2_val > 150)	{ch2_val = 150;}
	if(ch3_val > 150)	{ch3_val = 150;}
	if(ch4_val > 150)	{ch4_val = 150;}
	
	if(ch4_val >= 0 && ch4_val<= 150)
	{
		buff[3] = 32767.5+(32767.5*(ch4_val/150.0f));
		ad5761r_write_update_dac_register(0,buff[3]);
	}
	else if(ch4_val < 0 && ch4_val >= -30)
	{
		ch4_val = -ch4_val;
		buff[3] = 32767.5-(32767.5*(ch4_val/150.0f));
		ad5761r_write_update_dac_register(0,buff[3]);
	}
	//通道3
	if(ch3_val >= 0 && ch3_val<= 150)
	{
		buff[2] = 32767.5+(32767.5*(ch3_val/150.0f));
		ad5761r_write_update_dac_register(0,buff[2]);
	}
	else if(ch3_val < 0 && ch3_val >= -30)
	{
		ch3_val = -ch3_val;
		buff[2] = 32767.5-(32767.5*(ch3_val/150.0f));
		ad5761r_write_update_dac_register(0,buff[2]);
	}
	
	//通道2
	if(ch2_val >= 0 && ch2_val<= 150)
	{
		buff[1] = 32767.5+(32767.5*(ch2_val/150.0f));
		ad5761r_write_update_dac_register(0,buff[1]);
	}
	else if(ch2_val < 0 && ch2_val >= -30)
	{
		ch2_val = -ch2_val;
		buff[1] = 32767.5-(32767.5*(ch2_val/150.0f));
		ad5761r_write_update_dac_register(0,buff[1]);
	}
	
	//通道1
	if(ch1_val >= 0 && ch1_val<= 150)
	{
		buff[0] = 32767.5+(32767.5*(ch1_val/150.0f));
		ad5761r_write_update_dac_register(0,buff[0]);
	}
	else if(ch1_val < 0 && ch1_val >= -30)
	{
		ch1_val = -ch1_val;
		buff[0] = 32767.5-(32767.5*(ch1_val/150.0f));
		ad5761r_write_update_dac_register(0,buff[0]);
	}
}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值