平台:stm32f103rct6,stm32cubemx,keil5
1.概述
AD5428/AD5440/AD54471分别是CMOS、8/10/12位、双通道、电流输出数模转换器(DAC),这些器件均采用2.5 V至5.5 V电源供电。带宽最高可达10M,且具有回读功能,即用户可以通过DB引脚读取DAC寄存器的内容。满量程输出电流由所施加的外部基准输入电压(VREF)决定,与外部电流至电压精密放大器(本例使用的是AD8065)配合使用时,集成的反馈电阻(RFB)可提供温度跟踪和满量程电压输出。
1.1 AD5440
供电电源:2.5—5.5V
参考电压:±10V (本例给的是10V)
AD5440是一个10位的ADC, R_FB B与R_FB A接反馈电阻,DACA/B端口则根据接入电平的高低来进行A/B两个通道的选择,CS是控制端口,低电平有效,R/W是写入和回读的控制线。
利用控制线CS和R/W,可以写入或读取DAC寄存器。拉低CS和R/W时,发生写事件,数据线上的数据填入移位寄存器,CS上升沿锁存数据,并将锁存的数据字传输到DAC寄存器。DAC锁存器不是透明的,因此写序列必须包含CS的下降沿和上升沿,确保数据载入DAC寄存器,且其模拟等效内容反映在DAC输出端。
R/W为高电平而CS为低电平时,发生回读事件。数据从DAC寄存器加载,返回输入寄存器,输出到数据线上,控制器可回读以用于验证或诊断目的。这些器件的输入和DAC寄存器不是透明的,因此,加载各数据字需要CS的下降沿和上升沿。
2 硬件电路
根据数据手册上的参考电路,本例选择的是单极性模式
其中,电流至电压放大器使用的是AD8065,C1和C2选择容值在1pF到2pF之间的电容,R1,R2,R3,R4用来调节增益的,本例中直接将电阻短接,即只进行电流—电压转换,不进行放大。
3 软件部分
3.1 计算
单极性模式输出电压的换算公式:
其中,Vout为10V,n为10,D则是输入的10位二进制数。
例如:DB输入:1111111111,则Vout即为-10V
3.2 时序
本例中只需要从stm32中向AD5440写入数据,无需回读,因此只使用了写模式,即R/W置低,CS置低。传输完成则将CS置高,时序图中,时间间隔为纳秒级别的,在stm32F1的环境中,基本忽略。
下面是关键代码:
void DataOutStage_2(uint16_t value)
{
value=value&0X03FF; //value is data of 10bit
if(value&0X0001)