DAC8563数模转换模块的使用介绍

news/2024/7/7 22:38:31

前言

DAC8563为16位低功耗、电压输出、双通道的数模转换器,其包括一个2.5V4ppm/°C 内部基准,从而提供了一个 2.5V 或 5V 的满量程输出电压范围。 此内部基准有一精度,并且能够在 VREFIN/VREFOUT引脚上提供或吸收高个 ±5mV 的初始达 20mA 的电流。这些设备是单调的,提供优良的线性,并最小化不需要的代码到代码的瞬态电压。他们使用一个多功能的三线串行交错面是补偿在时钟速率高达50MHz。该接口兼容标准的SPI、QSPI、微线和数字信号处理器(DSP)接口。DAC8562设备包含了一个电源复位电路,确保DAC输出通电,并在写入有效代码之前保持输出电平在0V,而DAC8563设备同样在输出电平1/2输出量程。这些设备包含一个降电功能,在5V时将电流消耗降低到550 nA。低功耗、内部参考和小占用使这些设备成为便携式电池操作设备的理想选择。DAC8562设备相互兼容,DAC8563设备也相互兼容。

一、DAC8563

1.1 参数特性
1. 相对精度:16 位时为 4 最低有效位
2. 双向基准引脚:输入或 2.5V 输出
– 4ppm/°C 温度漂移(典型值)
3. 上电复位至零量程或量程中点
4. 低功耗:5V AVDD 时为 4mW
5. 宽电源范围:2.7V 至 5.5V
6. 带有施密特触发输入的 50MHz 串行外设接口 (SPI)

1.2 DAC8563时序图

二、锯齿波例程代码

1.DAC8563.c .h参考代码

代码如下(示例):

#ifndef __DAC8562_H
#define __DAC8562_H

void RCC_Configuration(void); 
void GPIO_Configuration(void);
void NVIC_Configuration(void); 
void Delay(vu32 nCount);
void ADC1_Configuration(void);
void DAC8562_WRITE(uint8_t cmd,uint16_t data);

#endif

#include"stm32f10x_conf.h"

#define DIN_H GPIO_SetBits(GPIOA,GPIO_Pin_0)
#define DIN_L GPIO_ResetBits(GPIOA,GPIO_Pin_0)
#define SCLK_H GPIO_SetBits(GPIOA,GPIO_Pin_1)
#define SCLK_L GPIO_ResetBits(GPIOA,GPIO_Pin_1)
#define CLR_H GPIO_SetBits(GPIOA,GPIO_Pin_2)
#define CLR_L GPIO_ResetBits(GPIOA,GPIO_Pin_2)
#define SYNC_H GPIO_SetBits(GPIOA,GPIO_Pin_3)
#define SYNC_L GPIO_ResetBits(GPIOA,GPIO_Pin_3)
#define LDAC_H GPIO_SetBits(GPIOA,GPIO_Pin_4)
#define LDAC_L GPIO_ResetBits(GPIOA,GPIO_Pin_4)

void Delay(vu32 nCount) 
{ 
  for(; nCount != 0; nCount--); 
} 

void RCC_Configuration(void) 
{    
  ErrorStatus HSEStartUpStatus;
  RCC_DeInit(); 
  RCC_HSEConfig(RCC_HSE_ON); 
  HSEStartUpStatus = RCC_WaitForHSEStartUp(); 
  if(HSEStartUpStatus == SUCCESS) 
  { 
    FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); 
    FLASH_SetLatency(FLASH_Latency_2); 
    RCC_HCLKConfig(RCC_SYSCLK_Div1);  
    RCC_PCLK2Config(RCC_HCLK_Div1);  
    RCC_PCLK1Config(RCC_HCLK_Div2); 
    RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); 
    RCC_PLLCmd(ENABLE); 
    while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) { } 
    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); 
    while(RCC_GetSYSCLKSource() != 0x08) { } 
  } 
  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA2, ENABLE); 
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOA, ENABLE); 
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE); 
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6, ENABLE); 
} 

void GPIO_Configuration(void) 
{ 
  GPIO_InitTypeDef GPIO_InitStructure; 
  GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4; 
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 
  GPIO_Init(GPIOA, &GPIO_InitStructure); 
} 

void DAC8562_WRITE(uint8_t cmd,uint16_t data)
{
  SYNC_H;
  Delay(0x01);
  SYNC_L;
  SCLK_L;
  for(uint8_t s=0;s<8;s++)
  {
    if((cmd&0x80)==0x80){DIN_H;}
    else{DIN_L;}
    Delay(0x01);
    SCLK_H;
    Delay(0x01);
    cmd<<=1;
    SCLK_L;
    Delay(0x01);
  }
  for(uint8_t s=0;s<16;s++)
  {
    if((data&0x8000)==0x8000){DIN_H;}
    else{DIN_L;}
    Delay(0x01);
    SCLK_H;
    Delay(0x01);
    data<<=1;
    SCLK_L;
    Delay(0x01);
  }
}

void NVIC_Configuration(void) 
{ 
#ifdef  VECT_TAB_RAM   
  NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);  
#else
  NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);    
#endif 
} 

#ifdef  DEBUG 
void assert_failed(u8* file, u32 line) 
{  
  while (1) { } 
} 
#endif 

#include "stm32f10x.h"                  // Device header
#include "Delay.h"
#include "dac8563.h"

2.main.c

代码如下(示例):

int main(void) 
{ 

  RCC_Configuration();    
  GPIO_Configuration(); 
  NVIC_Configuration(); 
  GPIO_ResetBits(GPIOA,GPIO_Pin_2);
  GPIO_SetBits(GPIOA,GPIO_Pin_4);
  DAC8562_WRITE(0x28,0x0001);
  DAC8562_WRITE(0x20,0x0003);
  DAC8562_WRITE(0x38,0x0001);
  
  uint16_t test;

  while (1) 
  { 
    DAC8562_WRITE(0x18,test);
    DAC8562_WRITE(0x19,test);
    GPIO_ResetBits(GPIOA,GPIO_Pin_4);
    Delay(0x01);
    GPIO_SetBits(GPIOA,GPIO_Pin_4);
    test+=200;
  } 
} 

总结

双通道DAC,轨到轨输出,16bit分辨率,支持50MHz的SPI时钟速度。自带2.5V的内部参考基准,典型的温飘是4ppm/℃,使用内部2.5V参考基准的情况下,根据增益设置不同,DAC的输出量可以为0到2.5V或者0到5V。DAC8562和DAC8563完全兼容,区别仅仅在于CLR引脚有效时,DAC8562数据设置为0, DAC8563数据设置为32767,注意这是DAC的内部数据,不表示输出电压。 对于-10 ~ +10V输出的模块,DAC8562输出-10V, DAC8563输出0V。无论是用DAC8562还是DAC8563芯片,只要软件不启动,本模块输出电压缺省状态都是0V。CLR脚悬浮时,电压在1.9V左右,容易受到干扰导致输出被清零。因此即使不用CLR控制功能,这个CLR脚也需要接固定电平(推荐接GND)。CLR是边沿触发,仅在下降沿信号出现执行清零。


http://lihuaxi.xjx100.cn/news/1693121.html

相关文章

Go 存储系列:LSM存储引擎 LevelDB

概念介绍 LSM-Tree 被是一种面向写多读少应用场景的数据结构 &#xff0c;被 Hbase、RocksDB 等强力 NoSQL 数据库采用作为底层文件组织方式。 简单的LSM-Tree 包含 2 层树状数据结构&#xff1a; Memtable 并完全驻留在内存中&#xff08;假设 T0&#xff09; SStables 存储…

2、Flowable基础表结构

Flowable基础表结构 1.表结构讲解 工作流程的相关操作都是操作存储在对应的表结构中&#xff0c;为了能更好的弄清楚Flowable的实现原理和细节&#xff0c;我们有必要先弄清楚Flowable的相关表结构及其作用。在Flowable中的表结构在初始化的时候会创建五类表结构&#xff0c;具…

typescript实现一个简单的区块链

TypeScript 是一种由 Microsoft 推出的开源编程语言&#xff0c;它是 JavaScript 的超集&#xff0c;允许程序员使用面向对象的方式编写代码&#xff0c;并提供类型检查和语法提示等优秀的开发体验。区块链技术是一种分布式的、可靠的、不可篡改的数据库技术&#xff0c;用于记…

蓝桥杯每日一题2023.10.19

题目描述 完全二叉树的权值 - 蓝桥云课 (lanqiao.cn) 题目分析 我们以每一个节点的坐标来将这一深度的权值之和相加从而算出权值和 要清楚每一个深度的其实节点和末尾节点&#xff0c;使用双指针将这个深度节点的权值和计算出来&#xff0c;记录所 需要的深度即可 #includ…

GO 工程下载依赖操作流程(go mod)

1. 写一个main.go文件 package main import ("fmt""net/http""github.com/ClickHouse/clickhouse-go" ) func main() {fmt.Println("服务启动......")http.HandleFunc("/hello", func(w http.ResponseWriter, r *http.Requ…

乙酰基四肽-3/Acetyl Tetrapeptide-3——刺激毛囊,长出新头发,有效防止秃头

社会对头发很着迷。从圣经人物参孙&#xff08;他从头发中获得力量&#xff0c;并说如果剃光头他就会失去力量&#xff09;&#xff0c;到社交媒体上无休无止地谈论名人的标志性风格&#xff0c;头发是一个永恒的话题。 为什么痴迷&#xff1f;好吧&#xff0c;我们的头发是外…

滚动视图ScrollView

滚动视图分为两类&#xff1a;ScrollView(水平滚动视图) HorizontalScrollView(垂直滚动视图) 注意&#xff1a; &#xff08;1&#xff09;垂直滚动&#xff0c;layout_width要设为match_parent&#xff0c;layout_height要设为wrap_content。 &#xff08;2&#xff09;…

利用QT通过http协议,来实现上传文件功能

#假如你有一台服务器&#xff0c;你最想做哪些事&#xff1f;# 大体上的软件界面如下&#xff1a; 主要阐述一哈写的这个软件实现的功能&#xff1a; 通过名称找到指定的文件&#xff0c;并且将文件按照后缀名的格式进行分开&#xff0c;最后再将所有找到的文件&#xff0c;进…