当前位置: 首页 > article >正文

ADC及DMA的使用原理和使用过程

ADC(Analog-Digital Converter) 模拟-数字转换器

可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁

ADC主要用于传感器,传感器一般是利用电阻电容等测量外界信息的物理量,导致测量电路电压发生变化,产生模拟信号,二单片机只能读取数字信号,所以就需要我们把模拟信号转变为数字信号

ADC的类型

  • 积分型:工作原理是将输入电压转换成时间(脉冲宽度信号)或频率(脉冲频率),然后由定时器、计数器获得数值。优点是用简单电路就能获得高分辨率,缺点是慢。已逐渐淘汰。
  • 逐次逼近型:由一个比较器和DA转换器通过逐次比较逻辑构成,从MSB(Most Significant Bit)开始,将输入电压的每一位与内置DA转换器输出进行顺序比较,经n次比较后输出数字值;为中等电路规模。优点是速度快,功耗低,低分辨率(<12bit)时价格较低,反之价格很高。
  • 并行比较型/串行比较型:采用多个比较器,仅做一次比较就实行转换,也叫Flash型。n位的转换需要n-1个比较器,因此电路规模极大,价格很高,一般只适用于视频AD转换器等高速领域。

ADC的通道

ADC的转换模式

  • 单通道单次转换模式:ADC只执行一次转换,只能用于单通道
  • 单通道连续转换模式:转换结束后马上开始新的转换,只能用于单通道
  • 多通道单次转换模式:ADC扫描选中的所有通道,在每个组的每个通道上执行单次转换。每个转换结束时,这一组的下一个通道会被自动转换。若设置了连续转换模式,转换会在选择组的最后一个通道停止。
  • 多通道多次转换模式:ADC扫描选中的所有通道,在每个组的每个通道上执行单次转换。每个转换结束时,这一组的下一个通道会被自动转换。若设置了连续转换模式,转换不会在选择组的最后一个通道停止,而是再次从选择组的第一个通道继续转换。
  • 间断模式:触发一次只转换一个通道。在所选转换通道循环,由触发信号启动新一轮EOC(End of Conversion)表示单个通道是否转换完毕,EOS(End of Sequence)表示所有通道是否转换完毕

ADC采样时间计算

STM32 ADC总转换时间为:TCONV = 采样时间 + 12.5个ADC周期

ADC有一个内置校准模式,校准可大幅减小因内部电容器组的变化而造成的误差。校准期间,每个电容器上都会计算出一个误差修正码,用于消除随后的转换中每个电容器上产生的误差,建议在每次上电后执行一次校准,启动校准前ADC必须处于关电状态超过至少两个ADC时钟周期。在HAL库中,ADC启动后添加四个函数。

ADC采样配置的步骤

  1. 开启RCC时钟,包括ADC,GPIO内包括ADC预分频ADCCLK也要配置(RCC库函数中);
  2. GPIO配置,为ADC采样输入;
  3. 配置多路选择开关;
  4. 配置ADC结构体;
    1. ADC采样模式
    2. ADC时钟分频
    3. ADC采样时间
    4. 连续采样或单次采样
  5. 配置校准(复位校准和开始校准)
  6. 软件触发开启ADC采样
  7. 设置一个合适的采样时间
  8. 进行采样数据读取
  9. 进行采样数据转换:采样值/2^ADC位数*参考电压

DMA(Direct Memory Access) 直接内存访问

可以将数据从一个地址空间复制到另一个地址空间;只要DMA通信通道已经建立,这个过程无需CPU参与。

DMA的主要特性

  • 双向的AHB主端口,GPDMA:两个端口
  • 内存映射数据从源到目标的传输:
    • 外设到内存
    • 内存到外设
    • 内存到内存
    • 外设到外设
  • 在睡眠和停止模式下自主数据传输
  • 并发DMA通道
  • GPDMA有16个通道

GPDMA的通道分配

  • 用户需要分配一个通道用于GPDMA传输,为了实现全双工通信,GPDMA对给定的GPDMA通道试用装用的FIFO;FIFO单元的单位是一字节。(First In First Out,也就是队列)
  • FIFO的大小决定了通道能够有效处理的最大DMA突发大小(突发长度与数据宽度的乘积)。通常突发长度越大,系统总体性能越好,有更高的吞吐率/带宽传输,更低的系统总线占用率
  • 由于系统总线为32位字宽,建议将DMA源、目标数据宽度设定为32位(GPDMA_CxTR1中的S/DDW_LOG2[1:0]),以便最大限度的减少总线使用量

GPDMA的端口选择

GPDMA的两个主端口:端口0应分配给与外设之间的传输,因为在此端口和apb外设之间有一条直接的硬件数据途径,位于apb矩阵之外;端口1应分配给内存之间的数据传输。

DMA的数据传输模式

普通模式:随后DMA会停止工作,不再接收数据。需关断DMA使能后再次重新配置后才能再次使用。

循环模式:DMA传输了固定长度的数据后,会产生中断标志,但不会停止工作,新的数据会循环保存到内存中,覆盖之前的数据。


http://www.kler.cn/a/530570.html

相关文章:

  • 笔灵ai写作技术浅析(四):知识图谱
  • 网络基础知识
  • M|哪吒之魔童闹海
  • GWO优化LSBooST回归预测matlab
  • PHP 常用函数2025.02
  • 2025最新源支付V7全套开源版+Mac云端+五合一云端
  • 详细介绍:使用 Axios 上传图片文件
  • ESP32 Wroom (无串口芯片的简版C3) 烧录
  • 攻防世界 fileclude
  • 基于springboot+vue的哈利波特书影音互动科普网站
  • AMD架构简单读书笔记1
  • WSL2中安装的ubuntu搭建tftp服务器uboot通过tftp下载
  • 位运算算法题
  • 【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】2.13 零拷贝技巧:as_strided的魔法与风险
  • 【Linux系统】信号:信号保存 / 信号处理、内核态 / 用户态、操作系统运行原理(中断)
  • 进程控制-下篇
  • cpp的STL与java的Collections Framework使用
  • 汇编知识点汇总
  • MVC、MVP和MVVM模式
  • 刷题记录 动态规划-3: 70. 爬楼梯
  • SpringMVC拦截器详解:原理、使用与配置
  • 【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】2.4 索引优化:避免意外复制的高效技巧
  • deepseek使用教程
  • 力扣 347. 前 K 个高频元素
  • Baklib赋能企业提升内容中台构建效率的全新路径解析
  • 基于人脸识别的课堂考勤系统