当前位置: 首页 > news >正文

具有精密内部基准的 DACx0502 简介及驱动应用示例

DACx0502 说明

16 位 DAC80502、14 位 DAC70502 和 12 位DAC60502 (DACx0502) 数模转换器 (DAC) 均为具有电压输出的高精度、低功耗器件。

DACx0502 线性度小于 1LSB。凭借高精度和微型封装特性,DACx0502 非常适合以下 应用: 增益和失调电压校准、电流或电压设置点设定和电源控制。这些器件包括一个 2.5V、5ppm/°C 内部基准,可提供 1.25V、2.5V 或 5V 的满量程输出电压范围。ACx0502 采用了上电复位电路,可确保 DAC 输出根据 RSTSEL 引脚的状态以零电平或中间电平上电,并在向器件写入有
效代码之前一直保持该电平。

DACx0502 的数字接口可通过 SPI2C 引脚配置为 SPI或 I2C 模式。在 SPI 模式下,DACx0502 使用一个在高达 50MHz 的时钟频率下运行的通用 3 线制串行接口。在 I2C 模式下,DACx0502 支持标准 (100kbps)、快速 (400kbps) 和快速+ (1.0Mbps) 工作模式。

DACx0502 功能方框图

在这里插入图片描述

DACx0502 引脚配置和功能

在这里插入图片描述

DACx0502 驱动模式

  • SPI 或 IIC

在这里插入图片描述

DACx0502 寄存器映射

在这里插入图片描述

测试平台

  • 测试平台:STM32F103ZET6

  • 测试芯片:DAC60502

驱动及应用示例

  • myiic.c
#include "myiic.h"
#include "delay.h"// 初始化IIC
void IIC_Init(void)
{					     RCC->APB2ENR|=1<<3;GPIOB->CRL&=0X00FFFFFF;GPIOB->CRL|=0X33000000;	   GPIOB->ODR|=3<<6;
}
// 产生IIC起始信号
void IIC_Start(void)
{SDA_OUT();IIC_SDA=1;	  	  IIC_SCL=1;delay_us(4);IIC_SDA=0;delay_us(4);IIC_SCL=0;
}	  
// 产生IIC停止信号
void IIC_Stop(void)
{SDA_OUT();IIC_SCL=0;IIC_SDA=0;delay_us(4);IIC_SCL=1; IIC_SDA=1;delay_us(4);
}
// 等待应答信号到来
// 返回值:1,接收应答失败
//        0,接收应答成功
uint8_t IIC_Wait_Ack(void)
{uint8_t ucErrTime=0;SDA_IN();IIC_SDA=1;delay_us(1);	   IIC_SCL=1;delay_us(1);	 while(READ_SDA){ucErrTime++;if(ucErrTime>250){IIC_Stop();return 1;}}IIC_SCL=0;return 0;  
} 
// 产生ACK应答
void IIC_Ack(void)
{IIC_SCL=0;SDA_OUT();IIC_SDA=0;delay_us(2);IIC_SCL=1;delay_us(2);IIC_SCL=0;
}
// 不产生ACK应答		    
void IIC_NAck(void)
{IIC_SCL=0;SDA_OUT();IIC_SDA=1;delay_us(2);IIC_SCL=1;delay_us(2);IIC_SCL=0;
}
// IIC写一个字节		  
void IIC_Write_Byte(uint8_t txd)
{                        uint8_t t;   SDA_OUT(); 	    IIC_SCL=0;for(t=0;t<8;t++){              IIC_SDA=(txd&0x80)>>7;txd<<=1; 	  delay_us(2);IIC_SCL=1;delay_us(2); IIC_SCL=0;	delay_us(2);}	 
} 	    
// IIC读一个字节
// ack=1,发送ACK,
// ack=0,发送nACK   
uint8_t IIC_Read_Byte(uint8_t ack)
{uint8_t i,receive=0;SDA_IN();for(i=0;i<8;i++ ){IIC_SCL=0; delay_us(2);IIC_SCL=1;receive<<=1;if(READ_SDA)receive++;delay_us(1); }if (!ack)IIC_NAck();elseIIC_Ack();return receive;
}void IIC_Write_UINT16(uint8_t dev_addr, uint8_t wr_addr, uint16_t data)
{IIC_Start();IIC_Write_Byte(dev_addr);IIC_Wait_Ack(); IIC_Write_Byte(wr_addr);IIC_Wait_Ack(); IIC_Write_Byte(data >> 8);IIC_Wait_Ack(); IIC_Write_Byte(data & 0xFF);IIC_Wait_Ack();  	IIC_Stop();delay_ms(2);
}uint16_t IIC_Read_UINT16(uint8_t dev_addr, uint8_t rd_addr)
{uint16_t data;IIC_Start();IIC_Write_Byte(dev_addr);IIC_Wait_Ack();IIC_Write_Byte(rd_addr);IIC_Wait_Ack(); IIC_Start();  	IIC_Write_Byte(dev_addr + 1);IIC_Wait_Ack();data = IIC_Read_Byte(1);data = (data <<8 ) + IIC_Read_Byte(0);IIC_Stop();return data;
}
  • myiic.h
#ifndef __MYIIC_H__
#define __MYIIC_H__
#include "sys.h"//IO方向设置
#define SDA_IN()  {GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=(u32)8<<28;}
#define SDA_OUT() {GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=(u32)3<<28;}//IO操作函数	 
#define IIC_SCL    PBout(6) 		//SCL
#define IIC_SDA    PBout(7) 		//SDA	 
#define READ_SDA   PBin(7) 	 		//输入SDA //IIC操作函数
void IIC_Init(void);                //初始化IIC的IO口				 
void IIC_Start(void);				//发送IIC开始信号
void IIC_Stop(void);	  			//发送IIC停止信号
void IIC_Write_Byte(uint8_t txd);	//IIC发送一个字节
uint8_t IIC_Read_Byte(uint8_t ack);	//IIC读取一个字节
uint8_t IIC_Wait_Ack(void);			//IIC等待ACK信号
void IIC_Ack(void);					//IIC发送ACK信号
void IIC_NAck(void);				//IIC不发送ACK信号void IIC_Write_UINT16(uint8_t dev_addr, uint8_t wr_addr, uint16_t data);
uint16_t IIC_Read_UINT16(uint8_t dev_addr, uint8_t rd_addr);#endif
  • dacx0502.c
#include "dac60502.h" 
#include "delay.h" 										 //初始化IIC接口
int DAC60502_Init(void)
{IIC_Init();return 0;
}void DAC60502_Write(uint16_t WrAddr, uint16_t Data)
{IIC_Write_UINT16(DEV_ADDR, WrAddr, Data);
}uint16_t DAC60502_Read(uint16_t RdAddr)
{return IIC_Read_UINT16(DEV_ADDR, RdAddr);
}
  • dac60502.h
#ifndef __DAC60502_H__
#define __DAC60502_H__
#include "myiic.h"   #define DEV_ADDR 		0x90#define NOOP   			0x00
#define DEVID  			0x01
#define SYNC   			0x02
#define CONFIG    		0x03
#define GAIN  			0x04
#define TRIGGER   		0x05
#define STATUS  		0x06
#define DAC_A  			0x08
#define DAC_B  			0x09int DAC60502_Init(void);
void DAC60502_Write(uint16_t WrAddr, uint16_t Data);
uint16_t DAC60502_Read(uint16_t RdAddr);#endif
  • main.c
#include "sys.h"
#include "delay.h"
#include "usart.h" 
#include "led.h" 		 	 
#include "dac60502.h" 
#include "usmart.h" int main(void)
{	uint16_t data = 0;Stm32_Clock_Init(9);	//系统时钟设置uart_init(72,115200);	//串口初始化为115200delay_init(72);	   	 	//延时初始化 usmart_dev.init(72);	//初始化USMART		LED_Init();		  		//初始化与LED连接的硬件接口DAC60502_Init();		//IIC初始化 while(1){data = data + 0x1;if(data > 0x0fff)data = 0;DAC60502_Write(DAC_A,data << 4);printf("Write: %d \r\n", data);delay_ms(100);printf("Read: %d \r\n", DAC60502_Read(DAC_A) >> 4);delay_ms(100);LED0=!LED0;}return 0;
}

相关文章:

具有精密内部基准的 DACx0502 简介及驱动应用示例

DACx0502 说明 16 位 DAC80502、14 位 DAC70502 和 12 位DAC60502 (DACx0502) 数模转换器 (DAC) 均为具有电压输出的高精度、低功耗器件。 DACx0502 线性度小于 1LSB。凭借高精度和微型封装特性&#xff0c;DACx0502 非常适合以下 应用&#xff1a; 增益和失调电压校准、电流…...

C语言函数:字符串函数及模拟实现strncpy()、strncat()、strncmp()

C语言函数&#xff1a;字符串函数及模拟实现strncpy()、strncat()、strncmp() 在了解strncpy、strncat()、前&#xff0c;需要先了解strcpy()、strncat()&#xff1a; C语言函数&#xff1a;字符串函数及模拟实现strlen() 、strcpy()、 strcat()_srhqwe的博客-CSDN博客 strncp…...

学术论文插图要求简介

1. 类型 位图和矢量图是两种不同的图像类型&#xff0c;它们在存储和处理图像时使用不同的方法。以下是它们之间的详细区别&#xff1a; 图像构成方式&#xff1a;位图使用像素&#xff08;或图像的最小单元&#xff09;来构建图像&#xff0c;每个像素都有自己的颜色和亮度值。…...

【独家】华为OD机试 - 斗地主 2(C 语言解题)

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧文章目录 最近更新的博客使用说明本期…...

力扣-计算特殊奖金

大家好&#xff0c;我是空空star&#xff0c;本篇带大家了解一道简单的力扣sql练习题。 文章目录前言一、题目&#xff1a;1873. 计算特殊奖金二、解题1.正确示范①提交SQL运行结果2.正确示范②提交SQL运行结果3.正确示范③提交SQL运行结果4.正确示范④提交SQL运行结果5.其他总…...

华为校招机试真题目录

专栏介绍 本专栏将逐步收集历年华为校招算法真题 专栏权益 每篇博客都包含: 算法考点解析(文字+画图)算法源码(支持 Java / JS / Python)每晚9:00 ~ 11:00 在线答疑 真题目录 时间题目考点 or 实现2022.11.27...

EdgeYOLO学习笔记

EdgeYOLO学习笔记 EdgeYOLO: An Edge-Real-Time Object Detector Abstract 本文基于最先进的YOLO框架&#xff0c;提出了一种高效、低复杂度、无锚的目标检测器&#xff0c;该检测器可以在边缘计算平台上实时实现。为了有效抑制训练过程中的过拟合&#xff0c;我们开发了一种…...

【分布式】什么是分布式锁?正文揭晓

分布式锁的概念 分布式锁其实可以理解为&#xff1a;控制分布式系统有序的去对共享资源进行操作&#xff0c;通过互斥来保持一致性。 举个例子&#xff1a;假设共享的资源就是一个房子&#xff0c;里面有各种书&#xff0c;分布式系统就是要进屋看书的人&#xff0c; 分布式锁…...

超详细JDK1.8所有版本下载地址

JDK1.8即为JDK8&#xff0c;JDK8是目前是最成熟最稳定的版本&#xff0c;本文将详细介绍JDK1.8历史版本的下载方式。 在此附上JDK1.8安装与配置教程 超详细JDK1.8安装与配置 一、JDK官网 首先打开oracle官网&#xff0c;官网首页地址为 JDK官网首页地址 点击Products 点击…...

论文解析[11] CAT: Cross Attention in Vision Transformer

发表时间&#xff1a;2021 论文地址&#xff1a;https://arxiv.org/abs/2106.05786v1 文章目录摘要3 方法3.1 总体结构3.1.1 Inner-Patch Self-Attention Block3.1.2 Cross-Patch Self-Attention Block3.1.3 Cross Attention based Transformer结论摘要 使用图像patch来替换tr…...

嵌入式和Python(一):python环境搭建的详细步骤

目录 ● 安装python ① 更新软件列表 ② 安装编译python需要用到的环境 ③ 下载python源码 ④ 解压源码包 ⑤ 配置 ⑥ 编译 ⑦ 安装 ● 建立软连接 说明 ① 删除原来的软连接 ② 在/usr/bin/目录创建软连接python&#xff0c;定向/usr/local/bin/python3.9 ③ 检查…...

嵌入式学习笔记——STM32硬件基础知识

STM32开发硬件知识前言单片机参数主频位数STM32最小系统电源电路晶振电路复位电路BOOT选择电路调试接口电路其他电路本文重点本文参考博客链接前言 上一篇中我们重点是讲了一下怎么搭建开发环境以及怎么下载烧录的过程&#xff0c;这都是解决的电脑端的开发环境问题&#xff0…...

Mybatis插件开发及执行原理

mybatis源码下载 https://github.com/mybatis/mybatis-3&#xff0c;本文分析源码版本3.4.5 mybatis启动大致流程 在看这篇文章前&#xff0c;建议查看我另一篇文章&#xff0c;以了解框架启动的流程和框架中一些重要对象&#xff1a;https://blog.csdn.net/Aqu415/article/…...

vue父子组件通信,兄弟组件通信

目录 一、父子组件通信 1、子组件通过 props 获取父组件变量和父组件调用子组件中的方法(这两个都是父传子的思想) a:子组件通过 props 获取父组件变量 b:父组件调用子组件中的方法 2、父组件通过ref获取子组件变量和子组件调用父组件的方法&#xff08;这两个都是子传父的…...

大数据技术之Hadoop集群配置

作者简介&#xff1a;大家好我是小唐同学(๑>؂<๑&#xff09;&#xff0c;好久不见&#xff0c;为梦想而努力的小唐又回来了&#xff0c;让我们一起加油&#xff01;&#xff01;&#xff01; 个人主页&#xff1a;小唐同学(๑>؂<๑&#xff09;的博客主页 目前…...

MicroBlaze系列教程(7):AXI_SPI的使用(M25P16)

文章目录 AXI_SPI简介MicroBlaze硬件配置常用函数使用示例波形实测参考资料工程下载本文是Xilinx MicroBlaze系列教程的第7篇文章。 AXI_SPI简介 Xilinx AXI-SPI IP共有两个:一个是标准的AXI_SPI,即4线制SPI,CS、SCLK、MOSI和MISO,另一个是AXI_Quad SPI,支持配置成标准SP…...

使用Python通过拉马努金公式快速求π

使用Python通过拉马努金公式快速求π 一、前言 π是一个数学常数&#xff0c;定义为&#xff1a;圆的周长与直径的比值。 π是一个无理数&#xff0c;也是一个超越数&#xff0c;它的小数部分无限不循环。 π可以用来精确计算圆周长、圆面积、球体积等几何形状的关键值。 有关…...

第六章 使用系统类提供国家语言支持 - 创建自定义语言环境

文章目录第六章 使用系统类提供国家语言支持 - 创建自定义语言环境创建自定义语言环境第六章 使用系统类提供国家语言支持 - 创建自定义语言环境 创建自定义语言环境 此示例将提供一个模板&#xff0c;用于使用自定义表创建自定义语言环境。自定义表将在 EBCDIC&#xff08;美…...

「题解」解决二进制数中1的个数

&#x1f436;博主主页&#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️‍&#x1f525;专栏系列&#xff1a;线性代数&#xff0c;C初学者入门训练 &#x1f525;座右铭&#xff1a;“不要等到什么都没有了&#xff0c;才下定决心去做” &#x1f680;&#x1f680;&#x1f680;大家觉不错…...

泛型详解.

1 泛型的引入 问题&#xff1a;我们之前实现过的顺序表&#xff0c;只能保存 int 类型的元素&#xff0c;如果现在需要保存 指向 Person 类型对象的引用的顺序表&#xff0c;请问应该如何解决&#xff1f;如果又需要保存指向 Book 对象类型的引用呢&#xff1f; 之前写的顺序表…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来&#xff0c;Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

visual studio 2022更改主题为深色

visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中&#xff0c;选择 环境 -> 常规 &#xff0c;将其中的颜色主题改成深色 点击确定&#xff0c;更改完成...

FastAPI 教程:从入门到实践

FastAPI 是一个现代、快速&#xff08;高性能&#xff09;的 Web 框架&#xff0c;用于构建 API&#xff0c;支持 Python 3.6。它基于标准 Python 类型提示&#xff0c;易于学习且功能强大。以下是一个完整的 FastAPI 入门教程&#xff0c;涵盖从环境搭建到创建并运行一个简单的…...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接&#xff1a;A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串&#xff0c;只有在同时为 o 时输出 Yes 并结束程序&#xff0c;否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

LeetCode - 394. 字符串解码

题目 394. 字符串解码 - 力扣&#xff08;LeetCode&#xff09; 思路 使用两个栈&#xff1a;一个存储重复次数&#xff0c;一个存储字符串 遍历输入字符串&#xff1a; 数字处理&#xff1a;遇到数字时&#xff0c;累积计算重复次数左括号处理&#xff1a;保存当前状态&a…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下&#xff0c;虚拟教学实训宛如一颗璀璨的新星&#xff0c;正发挥着不可或缺且日益凸显的关键作用&#xff0c;源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例&#xff0c;汽车生产线上各类…...

【AI学习】三、AI算法中的向量

在人工智能&#xff08;AI&#xff09;算法中&#xff0c;向量&#xff08;Vector&#xff09;是一种将现实世界中的数据&#xff08;如图像、文本、音频等&#xff09;转化为计算机可处理的数值型特征表示的工具。它是连接人类认知&#xff08;如语义、视觉特征&#xff09;与…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析&#xff1a;CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展&#xff0c;AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者&#xff0c;分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...