stm32.cube(四)——HAL.ADC

本文详细介绍了STM32的ADC特性,包括ADC的初始化、通道选择、触发方式、模式设置、采样频率、模拟看门狗、DMA传输等。在初始化ADC时,需要设置多种结构体和调用相关函数,例如使用HAL_ADC_Init()进行初始化,并通过HAL_ADC_Start()、HAL_ADC_ConfigChannel()等函数进行操作。此外,文章提供了单通道采集的初始化示例。
摘要由CSDN通过智能技术生成

一、Adc特性

1.1 Adc概述

Stm32的Adc具有12位的精度,共有16个外部通道和2个内部通道。不同通道的 A/D 转换可以在单一、连续、扫描或者间断模式下进行。它的其他特性还包括支持模拟看门狗和DMA。

1.2 Adc初始化

和大多数外设一样,Adc在使用前必须初始化时钟源,并从掉电模式唤醒该设备。建议在初始化Adc后立即运行一次校准,以减少准确性错误。

1.3 通道的选择

对于16个可复用的通道,可以将通道分成两种类型的组。常规组和注入组,组序列保存在寄存器ADC_SQRx和ADC_JSQR中。常规组可以包含最多16个通道,注入组最多包含4个通道。

注入组可以理解为常规组的一种中断,当注入组的采集被触发时,常规组的采集会被中断。直到注入组采集完之后,常规组才开始继续采集。

如果只想采集一个通道的数值,只将一个通道写入组里。想采集多个通道的数值,就将多个通道写入组里。当一个组包含多个通道时,要开启扫描模式, adc对组中的每一个通道根据寄存器里的序列进行一次转换。

1.4 触发方式

要触发一次ad转换,可以由内部软件触发,或者外部触发。要不要使用外部触发由控制寄存器里的EXTTRIG位来指定。

内部触发自然是通过写控制寄存器里的相应位来触发。而外部触发则可以有八种触发源可供选择,所以常规组和注入组在控制寄存器里各有3个位来指定哪个外部事件可触ad转换。外部触发源一般是定时器或者是外部中断线事件。

1.5 单一和连续

一次采集被由内部或者外部触发后,可以只采集一次,也可以一直连续采集。如果是一组通道,采集完最后一个通道时,会回到序列中的第一个通道继续采集。

每次采集完成后都会将转换后的数据存在一个寄存器里,并置位采集完成位,根据设定产生中断。

1.6 间断模式

间断模式是将常规和注入组里的序列再切割成更小的组。

比如一个常规组含有9个频道,利用间断模式并设置控制寄存器的位,可以将9个频道分成3组。这样一次触发只会采集3个通道,而不是采集9个通道,连续触发3次才能采集完9个通道。

1.7 采样频率

Adc模块允许对采样频率进行修改,以满足对采样速率的不同需求。考虑到Adc时序里需要一个稳定期,实际使用时还要面临各种DMA请求和中断嵌套,建议不要使用过高的采样频率,并考虑系统运行时负载的临界值。

可以通过修改ADC_SMPR1 和 ADC_SMPR2 寄存器中的 SMP[2:0]来设置采样频率。

1.8 模拟看门狗

设置相应的寄存器可以为Adc指定上下阀值,当采集到电压值超过阀值时,系统会产生中断。

1.9 DMA

当在扫描模式和连续模式下,显然每次都将保存采集值的寄存器数据读出来处理是来不及的。设置Adc的DMA使能,可以让每次转换过的数值都经DMA传到指定的内存空间里。

1.10 字节序

对于转换后的数据,可以设置左对齐或是右对齐,以支持不同的处理和传输的需要。

1.11 双adc模式

具有两个adc的设备可以使用的模式。在这种模式下,通常adc1做主设备,adc2做从设备。从设备的触发有主设备来发起。

主设备的常规组/注入组的触发成为从设备触发的条件,而主设备可以被设置为等待从设备采集一段时间后才开始采集,双adc模式下有许多种方式可以支持不同的主从同步。

二、Adc的库函数

HAL里的Adc函数相较stmlib里的结构更加简单,它的私有成员就不做叙述了,因为如何实现HAL的结构性代码并不是我们关心的问题。这里只描述一下Adc的输出函数。

2.1 初始化函数

同GPIO的初始化一样,Adc的初始化使用几个结构体来进行。不同的是由于Adc较之GPIO更加复杂,所以对Adc属性的描述分成了几个不同的结构体。

ADC_Ini

  • 6
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值