文章目录

  • 前言
  • 一、配置
    • 1. 时钟配置
    • 2. ADC配置
    • 3. DMA配置
  • 二、工程
    • 1 . ADC测试
  • 三、FFT
    • 1. 添加DSP库
    • 2. 数据采集
  • 总结

前言

使用STM32H750VB作为主控,使用stm32cubemx配置工程,在单通道对ADC通道进行采集,预计对通道采集1024次,然后对1024个数据进行fft。

一、配置

1. 时钟配置

在cubemx中配置,RCC中采用外部时钟,外部晶振分别为25MHz和32.768KHz。时钟树配置如下图所示:


ADC时钟频率为150MHz。

2. ADC配置

选用ADC3中的IN0,其他的不选,具体配置如下,根据下图计算采样率首先,ADC的时钟为150MHz,时钟分频8分频,然后采样时间为32.5个时钟周期,采样率约577KHz,实测采用8.5个时钟周期也可也,但是时采样率再高就不太行了。

3. DMA配置

DMA配置如下图所示,由于是连续采样DMA配置为循环模式,同样,在ADC的配置中的转换数据管理模式也要配置为DMA Circular Mode。数据宽度选择half byte,在Debug中选上串行线就行。至此在cubemx中的配置完成。

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

二、工程

1 . ADC测试

cubemx建立的工程已经包含了对各个部分的初始化,查看与ADC相关的函数。然后选择调用函数。首先进行对ADC的校准,如下所示。校准函数后面的两个参数可以在函数定义上面的注解中找到。

volatile HAL_StatusTypeDef status;
status=HAL_ADCEx_Calibration_Start(&hadc3,ADC_CALIB_OFFSET_LINEARITY, ADC_SINGLE_ENDED);


然后开启ADC采样,由于是使用DMA方式,所以调用HAL_ADC_Start_DMA函数。处理方式也一并写在下面所示的程序中。

volatile uint32_t result;
volatile float value;
status=HAL_ADC_Start_DMA(&hadc3, &result, 1);
value=(float)(result&0xffff)/65536*3.3;

调试时可以发现ADC的值可以连续被转换。

三、FFT

1. 添加DSP库

CMSIS包含了数字信号处理的一系列库,在Keil中添加比较方便,如下图所示。

DSP库的资料可以在keil安装目录中找到,如下图所示。

2. 数据采集

采集1024组数据,声明长度为1024的float数组后,当给数组赋值,程序会进入hardfault,发现是H750VB的flash或者ram不够。后面准备研究外部flash存储数据,如果是ram的问题那就没办法了。后面就只有研究FPGA进行数据处理了。

总结

在整个过程中,发现使用6.0及以上版本的编译器编译的速度比5.0版本的块很多诶。

STM32H7 ADC hal库相关推荐

  1. stm32 ADC hal库实现

    stm32 ADC hal库实现 1.ADC的作用 (1)简介: ADC(Analog-to-Digital Converter),即模拟-数字转换器,可以将连续变化的模拟信号转换为离散的数字信号,进 ...

  2. 【BSP视频教程】STM32H7视频教程第3期:整体捋顺STM32H7的HAL库和LL库的框架,再配合寄存器造轮子找到更适合自己的玩法(2022-01-21)

    视频教程汇总帖:[学以致用,授人以渔]2022视频教程汇总贴,持续更新中,DSP更新到第1期,ThreadX更新到第2期,BSP驱动更新到第3期(2022-01-21) - STM32F429 - 硬 ...

  3. STM32【H7】理论——综述、HAL库简述

    文章目录 1. STM32H7芯片简介 1.1 STM32H7与STM32F1.F4系列芯片的区别 1.2 硬件框图 1.3 STM32H7各型号对比 1.4 总线框图和时钟 1.5 AXI总线 1. ...

  4. 学习笔记(1)stm32h743和ADXL355的SPI通信,基于cubeMX和keil5MDK平台,采用HAL库编程,代码已模块化处理

    今天是一个特别的日子,为什么呢?哈哈,因为从大四做毕业设计的时候,接触CSDN,到现在一整年了,终于创作了我的第一篇博客,内心难念有些激动! 首先声明,我不是嵌入式领域的技术大牛,只是普通的研一新生, ...

  5. 【STM32H7教程】第63章 STM32H7的高分辨率定时器HRTIM基础知识和HAL库API

    完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第63章       STM32H7的高分辨率定时器HRTIM ...

  6. STM32H7时钟树RCC分析--- HAL库配置(二)

    上一讲我们说了H7时钟树的一些基本概念,现在的话我们来用HAL库和CubeMx配置一下 再次说明,本文耗时较久,如果您想搞懂RCC初始化流程,请认真阅读,刚开始可能看不懂,但是仔细阅读之后绝对会有收获 ...

  7. 【STM32】HAL库 STM32CubeMX教程九---ADC

    前言: 本系列教程将 对应外设原理,HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 所用工具: 1.芯片: STM32F407ZET6/ STM32F103ZET6 ...

  8. 【STM32笔记】HAL库低功耗模式配置(ADC唤醒无法使用、低功耗模式无法烧录解决方案)

    [STM32笔记]HAL库低功耗模式配置(ADC唤醒无法使用.低功耗模式无法烧录解决方案) [STM32笔记]低功耗模式配置及避坑汇总 一.低功耗模式简介 系统提供了多个低功耗模式,可在 CPU 不需 ...

  9. 【STM32H7教程】第70章 STM32H7的内部Flash基础知识和HAL库API

    完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第70章       STM32H7的内部Flash基础知识和 ...

最新文章

  1. labview曲线上两点画延长线_教你用直尺画各种几何图形
  2. mysql监控nginx_mysql和nginx服务是否正常监控脚本
  3. python进阶之多进程
  4. 高校里的“内卷”能有多少种操作?
  5. 中国天然饮料市场趋势报告、技术动态创新及市场预测
  6. 使用PXE+DHCP+Apache+Kickstart批量安装CentOS5.4 x86_64
  7. python和java哪个好找工作-你觉得学python还是java好找工作?
  8. python 计算流形上两点之间的测地距离
  9. Silverlight实现文件的下载[很简单]
  10. word2016添加题注|图注文献标号的交叉引用及引用的更新|添加不同类型的页码|文献自动编号|文献编号的自动引用|删除空白页
  11. 初探三维计算机视觉(三维重建) —— 相机模型 + 双目系统 + 点云模型
  12. matlab鼠标截取图像并显示_matlab图像剪裁命令imcrop()
  13. 手把手教您:iOS 6.1~6.12 完美越狱教程
  14. Qt - 跨平台程序打包发布
  15. ESP8266闪存文件系统基本操作-删除文件
  16. “数据分析师”招聘信息的数据分析
  17. Dominating Patterns UVALive - 4670 (ac自动机)
  18. 【Hackintosh】完善篇之添加节能5项与添加SMBU/SBUS
  19. 【Android Jetpack】Room——基本使用篇
  20. Cent OS 7.4 1708 下载安装

热门文章

  1. pythonif嵌套语句题目_python中if嵌套的练习题有哪些?
  2. CYY网页提取助手2.0绿色版正式发布
  3. Android Studio:Type mismatch: inferred type is Int but Unit was expected
  4. shell 分割文本_shell教程(2):积木游戏之认识积木--重要的系统命令
  5. Win系统 - 该扩展程序并未列在Chrome应用商店中怎么样办?
  6. Android微信分享之微信项目注册与申请
  7. 智慧树知到等各大网课搜题接口及搜题公众号搭建教程
  8. 【翻译】HCP: A Flexible CNN Framework for Multi-Label Image Classification
  9. oracle学习笔记(四)-- 数学函数
  10. html idv垂直居中,2011最新整理idv+css标准.doc