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传输了固定长度的数据后,会产生中断标志,但不会停止工作,新的数据会循环保存到内存中,覆盖之前的数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值