[ BLE4.0 ] 伦茨ST17H66开发-ADC采集电压数据-ADC中断采集-ADC单端输入与差端输入

news2024/9/24 11:33:52

目录

一、前言

二、采集模式

三、详细步骤

        3.1 引脚选择

        3.2 代码实现

        3.2.1 导入库文件

        3.2.2 模式选择

        3.2.3 bypass模式

        3.2.4 attenuation模式

        3.2.5 代码配置

四、效果展示


一、前言

        使用单片机面对数据采集时,往往设计到模拟量的采集,因此,掌握ADC采集同样可以说是必备技能。那么本文将使用ST17H66进行ADC采集数据的任务,本文涉及的开发所使用的例程依然是基于[ BLE4.0 ] 伦茨ST17H66开发-OSAL系统中添加自己的Task任务文章的工程源码,实现的具体功能为将采集到的ADC数据打印到串口。

二、采集模式

        在ST17H66为我们提供的ADC采集手册中,该芯片支持单端采集和双端采集模式。同时还有采集声音信号的PGA。

        那么单端输入和差分输入的定义是什么?手册中也给出了解释。

        本文所实现任务采用单端输入模式,这基本上满足市面上大多出传感器的采集要求。

三、详细步骤

        3.1 引脚选择

        首先,选择一个引脚作为ADC采集引脚,连接传感器或需要测量的电压点。

        查阅ADC帮助手册,发现官方提供10个引脚可使能ADC。

        其中对单端输入模式、差分输入模式和PGA模式的引脚还有细分。

        此处,我们选择单端输入模式P11引脚。

        3.2 代码实现

        下面,我们打开之前创建的任务例程,开始添加代码。

        3.2.1 导入库文件

        在SimpleBlePeripheral工程中,是没有ADC采集的库的。我们需要导入adc.c和adc.h。导入方式可以参考:Keil5添加.c文件与.h文件的方法-导入支持库-添加导入文件

        导入完成后,准备初始化结构体adc_Cfg_t,配置相关参数。

        3.2.2 模式选择

        经过查阅手册,可以发现adc_Cfg_t有四个属性,分别是通道、工作方式、工作模式和分辨率。

        那么前三个属性比较好理解,那么什么是bypass模式和attenuation模式?

        3.2.3 bypass模式

        该模式适用于面对与高精度的采集,但其采集电压范围为0~0.8V,当采集电压为0.8V内,可以直接使用高精度模式,而如果电压较大,还需要使用高精度模式时,则需要外部分压。具体如下:

        3.2.4 attenuation模式

        该模式量程范围0~3.2V,如果被测电压大于3.2V,那么同样需要外接分压电阻。

        3.2.5 代码配置

        打开工程,在Mytask.c文件中,创建并初始化adc_Cfg_t结构体。注意需要在Mytask.h文件中引入adc.h。

通道定义参考adc.c文件内定义。

        随后我们如果使用ADC,需要在main.c中的hal_init函数中完成对ADC的初始化。

        创建ADC处理函数,对返回的数据进行计算,并打印出电压值。

static void adc_evt(adc_Evt_t* pev)
{
	LOG("\npev->ch%d\n",pev->ch);
	float val = hal_adc_value_cal(ADC_CH1N_P11,pev->data,pev->size,0,0);
	uint8 data[15]={'\0'};
	sprintf((char *)data,"Value=%.3f",val);
	LOG("\n%s\n",data);
	osal_start_timerEx(Mytask_id,MyTask_StartADC_EVT,1000);//再次采集
}

四、效果展示

        将程序烧写进去,可以看到打印的电压值。使用万用表测量真实值后与打印数值比较,误差不超过10mv(非高精度模式)。

        资源:simpleBlePeripheral-NewTask-ADC.zip资源-CSDN文库

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

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

相关文章

【进制转换】《进制大乱斗,谁才是真正的赢家!》

目录 进制转换详解1. 引言2. 进制简介2.1 十进制2.2 二进制2.3 八进制2.4 十六进制 3. 进制转换方法3.1 十进制转二进制3.2 二进制转十进制3.3 十进制转八进制3.4 八进制转十进制3.5 十进制转十六进制3.6 十六进制转十进制3.7 二进制转八进制3.8 八进制转二进制3.9 二进制转十六…

缓存穿透

目录 概念 业务逻辑改造 代码实现 概念 用户请求查询的数据在缓存和数据库中都没有,那么最终请求都会进入到数据库,缓存会失效 两种解决方法:缓存NULL对象,使用布隆过滤器 业务逻辑改造 代码实现 解决缓存穿透问题public Shop…

3.redis客户端

1.命令行客户端 在安装redis的时候就已经安装好了,就是redis-cli redis-cli -h 127.0.0.1 -p 6379 -a 123456 -a 表示密码 -h 表示ip,不配置默认为本机 127.0.0.1 -p 表示端口,不配置默认为 6379 进入后可以输入ping,返回pong代表…

【C++】实验十三

题目: 1、声明Point(点)类,由Point类派生出Circle(圆)类,再由Circle类派生出Cylinder(圆柱)类。将类的定义部分分别作为3个头文件。对它们的成员函数的声明部分分别作为…

【数据结构算法经典题目刨析(c语言)】链表的回文结构(图文详解)

💓 博客主页:C-SDN花园GGbond ⏩ 文章专栏:数据结构经典题目刨析(c语言) 目录 一、题目描述 二、解题思路 三、代码实现(C语言) 回文结构(Palindromic structure)是指一个序列或字符串从前往…

C++多线程常用的几种实现方式

1、std::thread C11标准之后便引入了线程库std::thread。无论是windows或是Linux开发者都可以非常简单的通过这种方式&#xff0c;在C程序中创建和管理线程。 示例代码&#xff1a; #include <unistd.h> #include <iostream> #include <thread>void thread…

App 自动化测试调研

App 自动化测试调研 App 自动化测试的价值 App 自动化测试在软件开发过程中扮演着重要的角色&#xff0c;具有以下几个方面的价值&#xff1a; 1.提高测试效率和覆盖率&#xff1a;自动化测试可以执行大量的测试用例&#xff0c;覆盖各种功能和场景&#xff0c;相比手动测试…

BootStrapBlazor中MultiSelect组件在表格中使用时存在的问题

仅作记录&#xff0c;备以后回忆 在Table中使用了双击弹出编辑框来修改数据&#xff0c;正好逆变器需要多选&#xff0c;就使用了MultiSelect组件&#xff0c;结果发现它选择后没有任何效果&#xff0c;不会显示&#xff0c;但是保存后发现它是有数据的&#xff0c;网上搜了下…

关于python问题 ,生成的excel文件内无爬取的数据存在,请问应如何解决?

&#x1f3c6;本文收录于《CSDN问答解惑-专业版》专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收…

深度分析 !中国 AI 产业商业化实践案例 ! 2024 !

提供客户全渠道全生命周期的营服销一体化智能服务 京东云言犀依托于全栈自研的人工智能技术&#xff0c;基于京东集团广泛实体业务、庞大而又复杂的产业生态&#xff0c;从内部真实、复杂的海量业务场景实践中推出千亿级参数的言犀大模型&#xff0c;打造全新的智能交互与生成…

中国人民解放军建军97周年

缅怀先烈&#xff0c;砥砺前行 付吾辈之韶华&#xff0c;耀吾辈之中华! 万里河山&#xff0c;有您心安!

单链表习题(3)(超详细)

前言&#xff1a; 这篇文章将会是小编最近做过的习题总结的最后一篇&#xff0c;这一篇有些习题颇有一些难度&#xff0c;不过小编将会带领读者朋友们一起克服难关&#xff0c;下面废话不多说&#xff0c;开启今天的习题之旅&#xff01; 目录&#xff1a; 1.链表分割 2.相交链…

复习Nginx

1.关于Nginx Nginx的关键特性 1.支持高并发 2.内存资源消耗低 3.高扩展性&#xff08;模块化设计&#xff09; 4.高可用性&#xff08;master-worker&#xff09; Nginx运行架构 注意 默认情况下&#xff0c;Nginx会创建和服务器cpu核心数量相等的worker进程 worker进程之间…

自从用了这些监控工具,我连续几天没睡好觉!

大家好&#xff0c;我是程序员鱼皮&#xff0c;今天分享一些很实用的系统监控告警工具。 为什么要用监控告警&#xff1f; 说到监控告警&#xff0c;没有企业开发经验的同学非常容易忽视它&#xff0c;甚至会有同学觉得没有必要&#xff0c;大不了出了 Bug 再修就是了。 这种…

MySQL:初识数据库初识SQL创建数据库

目录 1、初识数据库 1.1 什么是数据库 1.2 什么是MySQL 2、数据库 2.1 数据库服务&数据库 2.2 C/S架构 3、 初识SQL 3.1 什么是SQL 3.2 SQL分类 4、使用SQL 4.1 查看所有数据库 4.1.2 语句解析 4.2 创建数据库 4.2.1 if not exists校验 4.2.2 手动明确字符集…

第33篇 计算数据中最长的连续1的个数<三>

Q&#xff1a;如何将计算出的结果&#xff08;最长的连续1的个数&#xff09;显示在DE2-115开发板的HEX上&#xff1f; A&#xff1a;基本原理&#xff1a;DE2-115_Computer_System中的HEX并行端口作为内存映射设备连接到DE2-115开发板的七段数码管&#xff0c;每个端口都对应…

uniapp微信小程序按钮分享定制动态传参

打印 onShareAppMessage 中的传参&#xff08;注意&#xff1a;上方我定义了一个open-type为share的按钮&#xff09; 打印之后如下&#xff1a; 给按钮绑定 data-id 可以在这里的 dataset 中取到 然后根据 from 的值来动态返回分享的参数 示例代码&#xff1a; <…

通过材质节点Panner实现球体自转

纹理坐标的移动&#xff0c;可以达到球体自转的功能&#xff0c;从而减少代码的复杂度。由于是绕着一个轴转动&#xff0c;所以在u方向移动即可。 材质&#xff1a; 材质实例 运行如下&#xff1a;

怎么把视频转换成mp4格式?分享几款视频转换软件

在数字化时代&#xff0c;视频已经成为我们日常生活和工作中的重要组成部分。然而&#xff0c;不同的设备和软件可能支持不同的视频格式&#xff0c;这常常导致兼容性问题。MP4作为一种广泛支持且高质量的视频格式&#xff0c;经常被用作解决这类问题的首选方案。那么&#xff…

医疗器械维修培训哪里好

医疗器械维修培训哪里好 医学技术的应用离不开医疗设备的支持,近几年医疗行业发展迅速&#xff0c;城镇、县级、市级医院设备也都越来越多&#xff0c;医疗机构拥有大量的医疗设备&#xff0c;需要专业的维修团队来保障设备的正常运行。医疗设备的论证、验收、使用、维护、维修…