stm32学习笔记:实验五ADC采集(DMA)电压串口屏显示

一:实验目的
1.掌握ADC的基本原理和工作方式:了解如何使用ADC将模拟信号转换为数字信号,以及如何设置ADC的参数。
2.学习串口通信的基本知识:了解串口通信的原理、波特率、数据格式等相关概念,并能够通过串口与外部设备进行通信。
3.理解电压检测与显示的过程:了解如何通过ADC进行电压采集,将采集到的电压值转换为合适的数据格式,并通过串口发送到串口屏上进行显示。
4. 了解DMA概念和使用方法,实现无需CPU干预地高效传输数据。
二:实验原理
1.模拟电压:设置滑动变阻器调整模拟电压,范围为0-3.3V。
2.ADC采集: ADC(模数转换器)是一种将模拟信号转换为数字信号的电子设备如图1所示。整个工作流程分为四步采样、量化、编码、输出。

594c109001214214b439b0134cc2267a.png

图1 简易ADC装置示意图

本次实验使用多通道ADC采样分别采样PA0、PA1、PA2、PA3。数据右排序,使用外部触发。另外,Stm32的ADC采样有两个参数决定采样模式,单次或连续采样以及扫描或非扫描模式。由于需要连续读取模拟电压值使用连续采样,并且考虑到每次输入
电压值后续需要使用
DMA进行数据搬运,使用扫描模式。模拟信号转数字信号范围为0-4095。
3.串口通信:在程序仿真中,需要加载模拟串口代替实际串口,这里用到了Configure Virtual Serial Port Driver和 ATK_XCOM分别构建虚拟串口和模拟发送。通讯协议选择UART,波特率为115200。
4.DMA:DMA(Direct Memory Access,直接内存访问)方式是一种数据传输方式,可以在不依赖中央处理器(CPU)的情况下,实现设备之间直接数据传输。如图2所示,它通过在外设和内存之间建立一个专门的DMA控制器,使得数据可以直接从外设读取或写入到内存,或者从内存传输到外设,而无需CPU的干预。在本实验中需要设置DMA搬运地址为ADC1地址,搬运数据类型为半字节型,开启外设触发,使用循环工作模式与ADC连续扫描模式配合实现高度自动化工作。

a8dcbc970ede4c7d9f1a0c1faa3ea082.png

图2 DMA原理示意图

5.OLED显示屏:用于对照验证串口通信的数据是否正常传输。检查ADC模拟型号转为数字信号的过程是否正常。
三:实验内容
1.程序逻辑:
(1)硬件驱动程序: ADC采集,DMA按照实验原理定义对应结构体参数。定义
OLED
接口为PB8与PB9,编写命令发送、数据传输、初始化等驱动。
(2)系统程序: 调用stdio.h,编译usart通信协议,包括定义波特率,奇偶验证,数据位等。
(3)主函数: 分别在OLED和串口屏显示结果。
2.电路仿真

dce669086e4b4647a5dc0326a6c5e76b.png

图3 电路原理图

四:实验小结
理解ADC、DMA工作原理:通过本次实验,深入了解了ADC、DMA的工作原理和使用方法。
了解ADC的连续扫描模式与DMA循环传输相结合的优势:(1)高效率数据采集:DMA循环传输允许在ADC转换期间,将已采样的数据直接传输到内存中,无需CPU的干预。这可以使得数据采集过程更为高效和稳定,减少了对CPU的占用时间;(2)大容量数据处理:在需要处理大容量数据的场景中,DMA循环传输可以有效降低CPU负载。连续扫描的ADC转换结果通过DMA被传输到内存,接着可以由CPU进行相关运算和处理,而无需频繁地进行数据拷贝操作。
串口通信应用:通过串口传输采集到的数据至串口屏,掌握了串口通信的基本概念和操作方法。学习了如何设置串口的波特率、数据位数等参数,并使用串口通信函数将数据发送给外设,实现实时的数据显示。

 

  • 9
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值