IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> AD5686R(16位高精度DAC)硬件和程序设计 -> 正文阅读

[嵌入式]AD5686R(16位高精度DAC)硬件和程序设计

AD5686R(16位高精度DAC)硬件和程序设计

前言

??由于不太喜欢使用STM32内部的DAC和想要学习外部DAC的原因,做了这个DAC的硬件和程序,作为自己的技术积累,和大家分享

简介

AD5686R:
??16位精度、自带2.5V基准电压源.
在2.5V基准电压下,通过内部2倍增益,最大可以输出5V电压
接口:SPI,最大速度:25M(官方),我跑到过32M

硬件设计

在这里插入图片描述
在这里插入图片描述
??首先是电源部分,AD5686R最大可以输入5.5V电压,数字IO电压独立,所以可以兼容STM32和arduino两大最常用的阵营。在VDD方面,通过排针可以选择输入的电压,分别是3.3V,直接输入的5V,和LDO稳压后的5V。
??数字引脚方面,除了SPI的上下拉之外,对复位、LDAC、RSTSEL、GAIN等功能引脚均有上下拉,做了硬件调试的冗余。
??四个模拟输出都有滤波电容和泄放电阻。
??整体设计参照了官方给出的DEMO。并且已经实验,完全可用,PCB和原理图全部开源,和代码一起放在Github上了,链接在文末,自行取用。

硬件设计

??AD5686R的寄存器不多,驱动部分也比较简单。由于驱动的代码太过长(约500行)。所以在这里只介绍移植相关和API代码。

代码移植部分

??代码文件由AD5684_5_6R.c和AD5684_5_6R.h,两个文件构成。需要与HAL库配合使用,需要硬件部分一个完整的四线SPI和两个GPIO输出的资源,SPI时钟小于25M。
??将代码文件复制和添加到开发环境后。以下是需要按照硬件不同而修改的部分:

int AD5686x_Init(void)
{
    /*用户定义参数*/
    DAC1_AD5686.Name = AD5686;
	DAC1_AD5686.SPI_Aisle=hspi1;
    DAC1_AD5686.EN_Pin=GPIO_PIN_4;
    DAC1_AD5686.EN_Prot=AD5686R_EN_GPIO_Port;
    DAC1_AD5686.LDAC_Pin=GPIO_PIN_3;
    DAC1_AD5686.LDAC_Prot=AD5686R_LDAC_GPIO_Port;
    DAC1_AD5686.RESET_Pin=AD5686R_RESET_Pin;
    DAC1_AD5686.RESET_Prot=AD5686R_RESET_GPIO_Port;
    DAC1_AD5686.Vref = 2.5;
    DAC1_AD5686.GAIN = Double_GAIN;
    DAC1_AD5686.Renew_Mode = asynchronous;
}

解释一下,这是创建了一个关于AD5686的结构体,各个参数有一些规范
??Name:由于此代码兼容三种芯片规格,所以需要在Name中表明芯片型号:AD5684、AD5685、AD5686
??SPI_Auske:所使用的SPI的结构体名称,可以在SPI.c的文件中复制过来。
??脚位设置:NSS(EN)、LDAC、RESET,的脚位,可以在Main.h中复制(需要在STM32 CUBEMX设置引脚的名称)
??Vref:参考电压,一般使用片内自带的2.5V电压,也可以从外部输入。
??GAIN:是否使用片内的增益,Single_GAIN(不使用增益)、Double_GAIN(2倍增益)
??Renew_Mode:更新方式,可以选择同步更新(Synchronize)和异步更新(asynchronous)。在使用写入寄存器n的API时,如果模式为同步更新,则会自动使能LDAC引脚同步数据。
??到此,代码部分已经移植完毕,十分的简单。

API部分

??先呈上一个最常用的API,如果对输出时许没有太多要求的场合,学习这一个API就可以操作这个芯片了

/**
  * @brief 使用V为单位直接写入DAC
  * @param AD568x:写目标设备
  * @param Aisle:选择的通道
  * @param Mode:选择的模式
  * @retval 写操作反馈
  */
int AD568x_write_V(AD5686_5_4R *AD568x, uint8_t Aisle, double DATA_D)
例如
AD568x_write_V(&DAC1_AD5686,Aisle_A,1.75);

Aisle:选择的通道,可以为Aisle_A、Aisle_B、Aisle_C、Aisle_D。
DATA_D:可以是0-(参考电压*增益倍数)的任意小数

??其他的API

/**
  * @brief 设置LDAC屏蔽
  * @param AD568x:写目标设备
  * @param Aisle:选择的通道
  * @param Mode:选择的模式
  * @retval 写操作反馈
  */
int AD568x_ldac_mask(AD5686_5_4R *AD568x, uint8_t Aisle, int Mode)
/**
  * @brief 设置掉电模式
  * @param AD568x:写目标设备
  * @param Aisle:选择的通道
  * @param Mode:选择的模式
  * @retval 写操作反馈
  */
int AD568x_power_mode(AD5686_5_4R *AD568x, uint8_t Aisle, int Mode)
/**
  * @brief 写入并更新n
  * @param AD568x:写目标设备
  * @param Aisle:选择的通道
  * @retval 写操作反馈
  */
int AD568x_write_update_register(AD5686_5_4R *AD568x, uint8_t Aisle, int DATA)
/**
  * @brief 通过写入寄存器n更新DAC
  * @param AD568x:写目标设备
  * @param Aisle:选择的通道
  * @retval 写操作反馈
  */
int AD568x_update_register(AD5686_5_4R *AD568x, uint8_t Aisle)
/**
  * @brief 写入输入寄存器n
  * @param AD568x:写目标设备
  * @param Aisle:选择的通道
  * @param DATA:数值
  * @retval 写操作反馈
  */
int AD568x_set_shift_reg(AD5686_5_4R *AD568x, uint8_t Aisle, int DATA)
/**
  * @brief 通过LDAC引脚对AD568x的寄存器数据更新
  * @param AD568x:写目标设备
  * @retval 无
  */
int AD568x_Renew_LDAC(AD5686_5_4R *AD568x)

其一些模式和参数在.h文件夹中有解释。

芯片性能

??使用这些程序简单的测试了一下这个DAC,基本可以满足我对DAC的需求,从0-5V的跳跃是需要4ns,输出频率由于SPI的限制,只能跑到15k左右。但作为高精度的DAC也是足够了。

开源地址

可以去白嫖了~下载的时候求求点一下星星,抱拳了!
github :https://github.com/lijinlong21549/AD5686R-Module
关于硬件有什么问题欢迎私信。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-08-18 12:52:01  更:2021-08-18 12:52:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 20:46:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码