AD7046 GD32 SPI驱动设计

news2024/9/21 9:53:18

硬件设计

AD7046简介:ADS7046 12 位, 3 MSPS, 单端输入, 小型低功耗 SAR ADC。ADS7046 是一款 12 位 3 MSPS SAR ADC, 支持0V到 AVDD 范围内的单端输入, AVDD 的范围为2.35V至 3.6V。内部失调电压校准功能在整个 AVDD 和工作温度范围内可保持优异的失调电压规格。该器件支持由 CS 和 SCLK 信号控制的兼容 SPI 的串行接口。 输入信号通过 CS 下降沿进行采样, 而 SCLK用于转换和串行数据输出。 该器件支持宽数字电源范围(1.65V 至 3.6V) , 可直接连接到各种主机控制器。ADS7046 的标称 DVDD 范围(1.65V 至 1.95V) 符合JESD8-7A 标准。

原理图设计如下

与MCU管脚连接如下表所示

Label

ADS7046

GD32F103RCT6

ADC_CSn

CS

PA4

ADC_SDO

SDO

PA6

ADC_SCLK

SCLK

PA5

本文使用工程代码,含使用手册,例程代码等资料,如下

ADS7046(含工程代码、使用手册、datasheet)实际工程中使用代码,正确读取电压值,长期稳定运行采样,可以直接使用资源-CSDN文库

软件设计

工程代码主要是模拟IO实现SPI读取数据,模拟过程参考如下时序图。

主函数代码

void tskmain( void *pvParameters )
{
	float voltage_ads7046;
	uint32_t time = 0;
	uint16_t value = 0;
	(void)pvParameters;


	//--任务运行-------------------------------------------
	while(1) 
	{	
		vTaskDelay(1000);
		time++;
		//printf("TIM: %d\r\n", time);
		//gd_eval_led_toggle(LED1);//ALARM_LED
		gd_eval_led_toggle(LED2);//RUN LED
		//ADC监测
		value = ads7046_read_value();
		printf("ads7046 value = 0x%x\r\n", value);
		voltage_ads7046 = (float) value/4096*3.3;
		printf("\nADS7046电压值为:%f\n",voltage_ads7046);
			

    }// end of while(1)
}// end of tskSysMan

 管脚初始化及宏定义

//输出信号
//ADC_CSN
//ADC_SCLK
//ADC_SDO
#define ADC_CSN_L     {GPIO_BC(GPIOA) =  GPIO_PIN_4;}
#define ADC_CSN_H     {GPIO_BOP(GPIOA) = GPIO_PIN_4;}


#define ADC_SCLK_L    {GPIO_BC(GPIOA) =  GPIO_PIN_5;}
#define ADC_SCLK_H    {GPIO_BOP(GPIOA) = GPIO_PIN_5;}



void ads7046_init(void)
{
	
	/* enable the led clock */
    rcu_periph_clock_enable(RCU_GPIOA);
    /* configure led GPIO port */ 
    gpio_init(GPIOA, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_4);
	gpio_init(GPIOA, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_5);
	//gpio_init(GPIOA, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_6);
	
	    /* enable the key clock */
    //rcu_periph_clock_enable(RCU_GPIOA);
    rcu_periph_clock_enable(RCU_AF);

    /* configure button pin as input */
    gpio_init(GPIOA, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_6);
}

测试记录

实际项目采用该代码,换算后电压值的测试结果,如下图

本文使用工程代码,含使用手册,例程代码等资料,如下

ADS7046(含工程代码、使用手册、datasheet)实际工程中使用代码,正确读取电压值,长期稳定运行采样,可以直接使用资源-CSDN文库

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深度解读SGM41511电源管理芯片I2C通讯协议REG05寄存器解释

REG05 是 SGM41511 的第六个寄存器,地址为 0x05。它是一个可读写的寄存器,上电复位值(PORV)为 10011111。这个寄存器控制多个重要的充电安全和管理功能: EN_TERM (D[7]): 控制充电终止功能 0 禁用 1 …

视频结构化从入门到精通——认识视频结构化

认识视频结构化 1. 视频结构化与非结构化 1. 非结构化数据 非结构化数据指的是未经处理、以原始形式存在的数据。这类数据是直接采集、记录的,包含了音频、视频等多维信息,且没有任何标签、注释或分类来表示其中的内容。非结构化数据需要进一步处理和…

scrapy--伪分布式redis操作

免责声明:本文仅做分享... 目录 scrapy分布式爬虫 伪分布式 redis 快速学习使用 字 符 串 类 型 列 表 类 型 hash 类型 set 类型 zset 类型 小结: scrapy-redis 安装第三方库: settings.py配置: spider文件修改: redis数据库添加 键 值 启动 scrapy总结 scrap…

IS-IS路由配置--路由聚合

目录 不熟悉和理解IS-IS动态协议的可以回顾IS-IS详解,IS-IS相关的实验都不再做过多的解释 一. 实验拓扑 二. 实验配置 不熟悉和理解IS-IS动态协议的可以回顾IS-IS详解,IS-IS相关的实验都不再做过多的解释 IS-IS路由原理详解https://blog.csdn.net/23…

js Object.keys--filter 遍历对象中的数组,排查为空字段

Object.keys(filter).forEach(function(key) { if(key filters){ filter[key] filter[key].filter((item) > item.tagName ! "") } });

CTF—杂项学习

1 文件操作隐写 1.1 文件类型识别 1.1.1 File命令 当文件没有后缀名或有后缀名而无法打开时,根据识别出的文件类型来修改后缀名即可正常打开文件,file是Linux下的文件识别命令。 file 文件名 使用场景:不知道后缀名,无法打开文件…

低代码技术在业务流程自动化中的应用与挑战

在数字化转型的浪潮中,低代码平台和业务流程自动化(BPA)成为了企业提升效率和灵活性的关键工具。今天,我们将探讨低代码技术如何推动BPA的实施,及其带来的挑战和解决方案。 低代码技术概述 低代码平台是现代软件开发的…

HR告诉你:PMP证书到底是职场神话还是锦上添花?真相大解析!

HR在评价PMP证书时,需要根据招聘要求来考量。目前大多数项目管理岗位都要求应聘者“持有PMP等相关证书优先考虑”,简而言之:PMP证书就像是敲门砖。 对于大多数人而言,拥有PMP证书意味着有机会获得面试机会。毕竟在项目管理领域&a…

ASO优化之如何准确定位目标用户

如今应用商店中APP层出不穷,市场那么大,用户的需求也是各种各样,那么怎么才能用ASO优化来准确的定位目标用户呢,以下是一些关键策略和方法,用于实现这一目标: 1. 深入市场与用户研究 市场趋势分析&#x…

企业级数据库 DevOps 最佳实践,通过 NineData 实现高效安全的数据库开发

第15届中国数据库技术大会(DTCC2024)于8月22日-24日在北京隆重召开,本次大会由 IT168 联合旗下 ITPUB、ChinaUnix 两大技术社区主办。玖章算术 NineData 受邀首次参展,并由 NineData 联合创始人周振兴发表了《企业级数据库 DevOps…

乾元通渠道商中标湖南省煤业集团公司安全生产预防和应急救援能力建设装备配备采购项目

近日,乾元通渠道商中标湖南省煤业集团安全生产预防和应急救援能力建设装备配备采购项目,乾元通作为聚合通讯保障技术厂家,为项目一标段卫星通讯指挥车提供车载聚合路由器终端及系统。 乾元通经过多年发展,逐步建起车载系列多链路聚…

minio创建用户并访问指定的bucket

目录 bucket的命名规则一、创建权限1、参数含义2、示例,实现读写test, 读test2目录但无下载权限3、自己新建的权限 二、创建用户并关联权限三、用新用户登录四、mc命令1、mc安装用docker容器运行直接安装在操作系统 2、mc配置mc配置文件查看mc配置mc alias list查看…

力扣题/回溯/电话号码的字母组合

电话号码的字母组合 力扣原题 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例 1: 输入:digi…

iOS/iPadOS18.1Beta3发布,新增通知摘要和AI消除功能

除了iOS/iPadOS18 Beta8,苹果今天一同推送的还有iOS/iPadOS 18.1开发者预览版Beta 3!iOS/iPadOS18.1Beta3的内部版本号为22B5034e,距离上次发布Beta/RC间隔8天。 依旧是仅针对支持Apple Intelligence的iPhone 15 Pro和iPhone 15 Pro Max两款…

Can‘t set custom OpenAI model with langchain on nodejs

题意:"无法在 Node.js 中使用 LangChain 设置自定义 OpenAI 模型" 问题背景: I am trying to set "gpt-3.5-turbo" model in my OpenAI instance using langchain in node.js, but below way sends my requests defaultly as text-…

个人信息保护专业人员(CCRC-PIPP)助力企业数据要素合规有序流通

在当今数字化时代,个人信息作为企业不可或缺的数据资产,其合规管理与高效流通变得尤为重要。 组织须采纳必要措施保护用户信息,同时确保遵循相关法规要求。 为此,中国网络安全审查认证和市场监管大数据中心推出了个人信息保护专…

Java:简述类的加载机制-初始化

Java:普通代码块,构造代码块,静态代码块区别及其执行顺序 类加载的机制过程分为以下:加载、验证、准备、解析、初始化等。 本文主要分析类的初始化过程。 类的初始化阶段,是真正开始执行类中定义的java程序代码(.cla…

成都电工培训优惠报名在哪里?

如何获取优惠抵扣? 一、关注特殊群体优惠 农民工优惠:部分地区或培训机构会针对农民工群体提供培训费用的减免或优惠,具体政策需咨询当地培训机构或相关部门。 退伍军人优惠:退伍军人作为特殊群体,在参加职业技能培训…

考研系列-408真题数据结构篇(10-17)

写在前面 此文章是本人在备考过程中408真题数据结构部分(2010年-2017年)的易错题及相应的知识点整理,后期复习也尝尝用到,对于知识提炼归纳理解起到了很大的作用,分享出来希望帮助到大家~ # 2010年 1.散列表处理冲突…

CAN Intel格式与Motorola格式的区别

在CAN(Controller Area Network)通信中,CAN报文的编码格式对于数据的有效传输和准确解析至关重要。CAN报文的编码格式主要包括Intel格式和Motorola格式。尽管这两种格式在单个字节内部的数据表示上是一致的,但在处理跨字节数据时&…