使用STM32 CUBE IDE配置STM32F7 用DMA传输多通道ADC数据

news2024/11/25 13:16:20

我的使用环境:

        硬件:STM32F767ZGT6、串口1、ADC1、16MHz晶振、216MHz主频

        软件:STM32 CUBE IDE

        优点:不用定时触发采样,ADC数据是不停的实时更新,ADC数据的更新频率根据采样时钟和采样周期决定,后期只需要定时取用数据即可。

        串口1用printf 的打印功能,需自行完成。或者用仿真查看数据变化也行。

一、基础知识

        ADC的时钟是APB2,与时钟树的配置有关,同时规格书中ADC的时钟最大频率又跟电源电压有关,3.3V下最大时钟频率为36MHz。所以预分频后的频率肯定是在这个规定最大时钟频率之内的。

二、STM32Cube IDE 具体配置

        串口配置:使能后更改合适波特率。

 

        ADC和DMA 配置

  1. 预分频之后的时钟应该是在ADC时钟范围之内的,用APB2频率除以分频数。
  2. DMA要开启扫描模式、连续转换模式、DMA连续请求
  3. 每个ADC通道的采样时间一定要高于分辨率要求的采样时钟周期,否则会导致初始化失败或者数据没有更新。

        4、配置详细解释:

        长的采样时间可以减少 ADC 读数的噪声,从而提高精度。在更长的采样时间内,模拟信号的值可以平稳地积累,使得读数更加准确。虽然长的采样时间可以提高 ADC 的精度,但是会影响采样频率。因此,在不同的应用场景中,需要选择合适的采样时间,以达到较高的精度和采样频率的平衡。

        5、ADC Injected Conversion Mode

        它允许在特定序列中执行多次ADC转换,每次转换有单独的触发。注入转换通常用于高级任务,例如过采样或偏移校正,并且在ADC的触发输入或软件命令触发的常规转换之外执行。
        在注入转换模式下,ADC执行一系列转换,每次转换由单独的触发输入触发。注入转换的ADC结果寄存器与常规转换的结果寄存器分开,结束转换中断可以为每种类型的转换单独生成。这允许CPU监视ADC的状态,并确定注入转换何时完成。
        是否使用注入转换模式取决于ADC应用程序的具体要求,在使用注入转换模式之前了解注入转换模式的功能和限制是非常重要的。

        6、DMA设置

三、验证程序

        生成程序后,main.c中开始,使用下面的函数打开DMA传输,每当ADC完成一次数据采样,DMA就会将ADC数据更新至 *pData指定的数组。

HAL_ADC_Start_DMA(ADC_HandleTypeDef* hadc, uint32_t* pData, uint32_t Length)

        在任意时刻取用数组中的数据。

四、测试结果

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

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

相关文章

负载均衡反向代理下的webshell上传+apache漏洞

目录一、负载均衡反向代理下的webshell上传1、nginx 负载均衡2、搭建环境3、负载均衡下的 WebShell连接的难点总结难点一、需要在每一台节点的相同位置都上传相同内容的 WebShell难点二、无法预测下次的请求交给哪台机器去执行。难点三、下载文件时,可能会出现飘逸&…

面试题:Redis的内存策略

1 Redis内存回收Redis之所以性能强,主要原因是基于内存存储,然而单节点的Redis内存不易过大,会影响主从同步和持久化性能我们可以通过修改配置文件设置Redis的最大内存:当内存存储到上限时,就无法存储更多的数据了。1.…

html控件Aspose.Html for .NET 授权须知

Aspose.Html for .NET是一种高级的HTML操作API,可让您直接在.NET应用程序中执行广泛的HTML操作任务,Aspose.Html for .NET允许创建,加载,编辑或转换(X)HTML文档,而无需额外的软件或工具。API还为…

Java开发学习(四十六)----MyBatisPlus新增语句之id生成策略控制及其简化配置

在前面有一篇博客:Java开发学习(四十一)----MyBatisPlus标准数据层(增删查改分页)开发,我们在新增的时候留了一个问题,就是新增成功后,主键ID是一个很长串的内容。 我们更想要的是按照数据库表字段进行自增…

CleanMyMac X4.12新版本下载及功能介绍

CleanMyMac X2023最新版终于迎来了又4.12,重新设计了 UI 元素,华丽的现代化风格显露无余。如今的CleanMyMac,早已不是单纯的系统清理工具。在逐渐融入系统优化、软件管理、文件管理等功能后,逐渐趋近于macOS的系统管家&#xff0c…

Python数据可视化(三)(pyecharts)

分享一些python-pyecharts作图小技巧,用于展示汇报。 一、特点 任何元素皆可配置pyecharts只支持python原生的数据类型,包括int,float,str,bool,dict,list动态展示,炫酷的效果,给人视觉冲击力 # 安装 pip install pyecharts fr…

算法训练营DAY51|300.最长递增子序列、674. 最长连续递增序列、718. 最长重复子数组

本期是求子序列的新的一期,题目前两道有一些相似之处,思路差不多,第三道有一点难度,但并不意味着第一道没有难度,没有做过该类型题的选手,并不容易解出题解。 300. 最长递增子序列 - 力扣(Leet…

22级浙江大学MBA笔试备考的若干经验分享

我是浙江大学2022级的一名新生,虽然没有参加提前批面试,但是通过笔试的有序备考最终也有幸上岸浙大,对于部分提前批面试没拿到优秀资格的考友,今天我想把自己的笔试上岸经验做个总结,给大家提供一个参考模版。 先…

TC358774XBG/TC358775XBG替代方案|CS5518替代TC358774XBG/TC358775XBG设计DSI转LVSD设计资料

TC358774XBG/TC358775XBG替代方案|CS5518替代TC358774XBG/TC358775XBG设计DSI转LVSD设计资料 TC358774XBG/TC358775XBG 芯片的主要功能是作为 DSI - LVDS 通信协议桥接,主芯片的视频数据可通过 DSI 链路流 出,以驱动兼容 LVDS 的显示板。换句话说&#x…

百度官宣在前,阿里、京东在后,互联网大厂向ChatGPT而生?

ChatGPT蹿红后,互联网科技公司都坐不住了。 最早,百度正式对外官宣类ChatGPT项目“文心一言”(ERNIE Bot)。据笔者了解,该产品将于三月份完成内测,面向公众开放。 紧随其后,阿里巴巴公布阿里版…

流浪地球 | 建筑人是如何看待小破球里的黑科技的?

大家好,这里是建模助手。 想问问大家今年贺岁档,都跟上没有,今天请允许我蹭一下热点表达一下作为一个科幻迷的爱国之情。 抛开大刘的想象力、各种硬核科技&以及大国情怀不提,破球2中的传承还是让小编很受感动,无…

【2023】Prometheus-Prometheus与Alertmanager配置详解

记录一下Prometheus与Alertmanager的配置参数等内容 目录1.Prometheus1.1.prometheus.yml1.2.告警规则定义2.alertmanager2.1.alertmanager.yml2.1.1.global:全局配置2.1.1.1.以email方式作为告警发送方2.1.1.2.以wechat方式作为告警发送方2.1.1.3.以webhook方式作为…

c++基础入门二

一、数组的引用int main() {int a 10, b 20;int ar[10] { 1,2,3,4,6,7 };int& x ar[0];int& p[5] ar;//errorint(&p)[10] ar;//引用整个数组的大小sizeof(ar)int(*p)[10] &ar;//typesize表示整个数组//只有在这三种情况下代表整个数组,其他情…

C++ 浅谈之 STL Vector

C 浅谈之 STL Vector HELLO,各位博友好,我是阿呆 🙈🙈🙈 这里是 C 浅谈系列,收录在专栏 C 语言中 😜😜😜 本系列阿呆将记录一些 C 语言重要的语法特性 🏃&…

18-考虑柔性负荷的综合能源系统低碳经济优化调度MATLAB程序

参考文献:考虑柔性负荷的综合能源系统低碳经济优化调度_薛开阳考虑用户侧柔性负荷的社区综合能源系统日前优化调度_刘蓉晖主要内容:基础模型参考刘蓉晖的论文,主要做了场景1、2、3;碳交易模型采用薛开阳论文中的。采用CPIEX求解某…

ArcGIS API for JavaScript 4.15系列(2)——Dojo中的dom操作

1、前言 ArcGIS API for JavaScript是基于Dojo框架编写的开发包,因此了解并掌握Dojo的相关基础知识是极为必要的。很多开发者都反馈过一个问题,那就是一看见ArcGIS API for JavaScript里那些奇形怪状的代码就觉得无从下手。有一点必须得承认&#xff1a…

Xshell 安装及使用方法

公网地址:47.XXX.XXX.229 私网地址:172.XXX.128.XXX 用户:root 密码:1234561,百度xshell,下载,安装Xshell 2,填写配置及使用方式 主机:47.XXX.XXX.229 用户:root 密码&a…

SpringCloud学习笔记 - 系统自适应限流 - Sentinel

1. Sentinel 系统自适应限流 Sentinel 系统自适应限流从整体维度对应用入口流量进行控制,结合应用的 Load、CPU 使用率、总体平均 RT、入口 QPS 和并发线程数等几个维度的监控指标,通过自适应的流控策略,让系统的入口流量和系统的负载达到一…

第五十一章 BFS进阶(一)——双端队列广搜

第五十一章 BFS进阶(一)——双端队列广搜一、原理二、例题1、问题2、分析三、代码一、原理 在介绍双端队列广搜之前,我们先回顾一下堆优化版本的dijkstradijkstradijkstra算法。 在这个算法中,我们使用的是小根堆来找到距离起点…

java基础—Volatile关键字详解

java基础—Volatile关键字详解 文章目录java基础—Volatile关键字详解并发编程的三大特性:volatile的作用是什么volatile如何保证有可见性volatile保证可见性在JMM层面原理volatile保证可见性在CPU层面原理可见性问题的例子volatile如何保证有序性单例模式使用volat…