ad5676驱动详解及代码

AD5676为单片8通道DAC,一下驱动代码是用的模拟SPI去写的,芯片型号STM32F103C8xx,亲测是可以用的,输出比较稳定,废话不多说,直接上代码:

首先头文件:

#define GPIO_PORT_SPI1_SCK	GPIOB
#define GPIO_PIN_SPI1_SCK	GPIO_Pin_3#define GPIO_PORT_SPI1_MISO	GPIOB
#define GPIO_PIN_SPI1_MISO	GPIO_Pin_4#define GPIO_PORT_SPI1_MOSI	GPIOB
#define GPIO_PIN_SPI1_MOSI	GPIO_Pin_5#define GPIO_PORT_LDAC		GPIOA
#define GPIO_PIN_LDAC		GPIO_Pin_8#define SPI1_SCK_HIGH   GPIO_SetBits(GPIO_PORT_SPI1_SCK,GPIO_PIN_SPI1_SCK)
#define SPI1_SCK_LOW  GPIO_ResetBits(GPIO_PORT_SPI1_SCK,GPIO_PIN_SPI1_SCK)#define SPI1_MOSI_HIGH   GPIO_SetBits(GPIO_PORT_SPI1_MOSI,GPIO_PIN_SPI1_MOSI)
#define SPI1_MOSI_LOW  GPIO_ResetBits(GPIO_PORT_SPI1_MOSI,GPIO_PIN_SPI1_MOSI)#define SPI1_CS1_HIGH	GPIO_SetBits(GPIO_PORT_SPI1_CS1,GPIO_PIN_SPI1_CS1)
#define SPI1_CS1_LOW	GPIO_ResetBits(GPIO_PORT_SPI1_CS1,GPIO_PIN_SPI1_CS1)#define SPI1_CS2_HIGH	GPIO_SetBits(GPIO_PORT_SPI1_CS2,GPIO_PIN_SPI1_CS2)
#define SPI1_CS2_LOW	GPIO_ResetBits(GPIO_PORT_SPI1_CS2,GPIO_PIN_SPI1_CS2)#define SPI1_CS3_HIGH	GPIO_SetBits(GPIO_PORT_SPI1_CS3,GPIO_PIN_SPI1_CS3)
#define SPI1_CS3_LOW	GPIO_ResetBits(GPIO_PORT_SPI1_CS3,GPIO_PIN_SPI1_CS3)

以下为命令(实际用到的命令是3)
在这里插入图片描述
C文件代码:

void spiwrite(rt_uint8_t data)
{rt_uint8_t i;SPI1_SCK_LOW;delay_us(10);for(i=0;i<8;i++){SPI1_SCK_HIGH;if(0x80&data){SPI1_MOSI_HIGH;}else{SPI1_MOSI_LOW;}data<<=1;delay_us(10);SPI1_SCK_LOW;delay_us(10);}SPI1_SCK_LOW;delay_us(10);
}//说明:p1为通道选择  p2为输出的电压(ad值)
//我用的是spi驱动3片ad5676 setDacs(p1,1);这个函数是选择cs引脚使能的,三片公用mosi 和sck,ldac,我没有用到miso引脚,可以同时写24路然后再使能ldac可以同时输出24路,没有时间差
static int ad5676_handle(int p1,int p2,void *para)
{rt_uint8_t i;rt_uint8_t buf[3];buf[0] = 3<<4;buf[0] |= p1%8;buf[1] = (rt_uint8_t)(p2>>8);buf[2] = (rt_uint8_t)p2;setDacs(p1,1);delay_us(10);//GPIO_ResetBits(GPIOB,GPIO_Pin_6);//GPIO_ResetBits(GPIOA,GPIO_Pin_15);setDacs(p1,0);delay_us(10);for(i=0;i<3;i++){spiwrite(buf[i]);}setDacs(p1,1);return 0;
}

驱动相对来说比较简单,对于会看芯片时序的兄弟来讲小菜一碟,写这个驱动也是为小白提供一些参考,如果使用库函数spi相对来说简单点,配置好spi就行了,我还是习惯硬件spi,我认为硬件spi比较稳定,会少很多多余的操作,个人见解不喜勿喷,欢迎交流心得

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/224575.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浅谈基于EIoT能源物联网的工厂智能照明系统应用改造

【摘要】&#xff1a;随着物联网技术的发展&#xff0c;许多场所针对照明合理应用物联网照明系统&#xff0c;照明作为工厂的重要能耗之一&#xff0c;工厂的照明智能化控制&#xff0c;如何优化控制、提高能源的利用率&#xff0c;达到节约能源的目的。将互联网的技术应用到工…

学习Opencv(蝴蝶书/C++)相关——3. OpenCV的数据类型

文章目录 1. 堆栈和动态分配内存2. 模版类语法2.1 OpenCV中的模板结构2.2 C++ template基本语法3. 优化3.1 OpenCV的cv::Mat类计算优化3.1.1 cv::Mat VS numpy array3.1.2 结论3.2 Eigen库3.2.1 简介3.2.2 Eigen vs OpenCV::mat vs GLM3.3 关于优化4. STL,Boost和std4.1 名词解…

基于单片机设计的超声波测距仪(采用HC-SR04模块)

一、前言 本项目是基于单片机设计的超声波测距仪&#xff0c;主要采用了STC89C52单片机和HC-SR04超声波测距模块。通过LCD1602液晶显示屏来展示测量的距离信息。 超声波测距技术是一种常见的非接触式测距方法&#xff0c;利用超声波的传播速度测量物体与测距器之间的距离。它…

npm-工具包

npm-工具包 npm 介绍 npm&#xff08;Node Package Manager&#xff09;是用于管理和共享Node.js包&#xff08;包括代码、工具和资源&#xff09;的包管理工具 常用命令 局部安装包 npm install <package-name>: 安装指定的包 npm install <package-name> --save…

吉利展厅 | 透明OLED拼接2x2:科技与艺术的完美融合

产品&#xff1a;4块55寸OLED透明拼接屏 项目地点&#xff1a;南宁 项目时间&#xff1a;2023年11月 应用场景&#xff1a;吉利展厅 在2023年11月的南宁&#xff0c;吉利展厅以其独特的展示设计吸引了众多参观者的目光。其中最引人注目的亮点是展厅中央一个由四块55寸OLED透…

4.Spring源码解析-loadBeanDefinitions(XmlBeanDefinitionReader)

第一个点进去 发现是空 肯定走的第二个逻辑了 这里在这里已经给属性设置了值&#xff0c;所以肯定不是空能拿到。 1.ClassPathXmlApplicationContext 总结&#xff1a;该loadBeanDefinitions是XmlBeanDefinitionReader设置xml文件在哪。

win11系列:避坑宝典|win11升级最新预览体验版bug梳理

win11系列&#xff1a;避坑宝典|win11升级最新预览体验版bug梳理 一、亲测win11升级的前世今生。&#xff08;一&#xff09;问题描述梳理。&#xff08;二&#xff09;故障原因分析。&#xff08;三&#xff09;具体解决方案。2.【已解决】①尝试关Hyper-v重启&#xff1b;②从…

数据库基础入门 — 关联查询

我是南城余&#xff01;阿里云开发者平台专家博士证书获得者&#xff01; 欢迎关注我的博客&#xff01;一同成长&#xff01; 一名从事运维开发的worker&#xff0c;记录分享学习。 专注于AI&#xff0c;运维开发&#xff0c;windows Linux 系统领域的分享&#xff01; 本…

【刷题笔记】匹配字符串||KMP||动图解析||符合思维方式

找出字符串中第一个匹配项的下标 1 题目描述 https://leetcode.cn/problems/find-the-index-of-the-first-occurrence-in-a-string/ 给你两个字符串 haystack 和 needle &#xff0c;请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标&#xff08;下标从 0 开…

IP-Adapter:文本兼容图像提示适配器,用于文本到图像扩散模型

IP-Adapter这是一种有效且轻量级的适配器&#xff0c;用于实现预训练文本到图像扩散模型的图像提示功能。只有 22M 参数的 IP 适配器可以实现与微调图像提示模型相当甚至更好的性能。IP-Adapter 不仅可以推广到从同一基本模型微调的其他自定义模型&#xff0c;还可以推广到使用…

光伏、半导体等行业废水除氟解决方案:

在太阳能电池板或者半导体硅片生产过程中需要大量使用一种无机酸⸺氢氟酸&#xff0c;从而产生大量的含氟 废水&#xff0c;对环境和人体健康产生很大危害。氟化物长期积累在人体中会深入骨髂生成CaF2 &#xff0c;造成骨质疏松&#xff0c; 牙齿斑釉&#xff0c;韧带钙化&…

Linux常见指令基础知识

目录 初始Linux操作系统 Linux背景&#xff1a; 开源 &#xff1a; 发行版本&#xff1a; ​编辑 OS概念&#xff0c;定位&#xff1a; 使用 XShell 远程登录 Linux Linux相关知识 文件是什么&#xff1f; 路径分隔符 &#xff08;.&#xff09; 和 &#xff08;. .&…