STM32_ADC

STM32_ADC

一.ADC介绍

ADC,全称:Analog-to-Digital Converter,指模拟/数字转换器

常见类型:

ADC****电路类型

优点

缺点

并联比较型

转换速度最快

成本高、功耗高,分辨率低

逐次逼近型

结构简单,功耗低

转换速度较慢

1.1 并联比较型

分压部分 + 比较部分 + 编码部分

优点:转换速度快

缺点:成本高、功耗高、分辨率低

1.2逐次逼近型

优点:结构简单、低功耗

缺点:转换速度较慢

特点:分辨率和采样速度相互矛盾,分辨率越高,采样速率越低

1.3ADC特性参数

  1. 分辨率:表示ADC能辨别的最小模拟量,用二进制位数表示,比如:8、10、12、16位等

  1. 转换时间:表示完成一次A/D转换所需要的时间,转换时间越短,采样率就可以越高

  1. 精度:最小刻度基础上叠加各种误差的参数,精度受ADC性能、温度和气压等影响

  1. 量化误差:用数字量近似表示模拟量,采用四舍五入原则,此过程产生的误差为量化误差

主要特性

F1

F4

F7

H7

ADC类型

逐次逼近型

分辨率

12位

6/8/10/12位

6/8/10/12位

8/10/12/14/16位

ADC时钟频率

14MHz(max)

36MHz(max)

采样时间

采样时间越长, 转换结果相对越准确, 但是转换速度就越慢

转换时间

与ADC时钟频率、分辨率和采样时间等有关

供电电压

VSSA :0V,VDDA :2.4V~3.6V(全速运行)

参考电压

VREF– :0V,VREF+一般为3.3V

输入电压

VREF–≤VIN≤VREF+

二.ADC转换原理

2.1 ADC框图

F1:

①参考电压/模拟部分电压

②输入通道

③转换序列

④触发源

⑤转换时间

⑥数据寄存器

⑦中断

F4:

①参考电压/模拟部分电压

②输入通道

③转换序列

④触发源

⑤转换时间

⑥数据寄存器

⑦中断

2.2 ADC通道

ADC1

IO

ADC2

IO

ADC3

IO

通道0

PA0

通道0

PA0

通道0

PA0

通道1

PA1

通道1

PA1

通道1

PA1

通道2

PA2

通道2

PA2

通道2

PA2

通道3

PA3

通道3

PA3

通道3

PA3

通道4

PA4

通道4

PA4

通道4

PF6

通道5

PA5

通道5

PA5

通道5

PF7

通道6

PA6

通道6

PA6

通道6

PF8

通道7

PA7

通道7

PA7

通道7

PF9

通道8

PB0

通道8

PB0

通道8

PF10

通道9

PB1

通道9

PB1

通道9

连接内部VSS

通道10

PC0

通道10

PC0

通道10

PC0

通道11

PC1

通道11

PC1

通道11

PC1

通道12

PC2

通道12

PC2

通道12

PC2

通道13

PC3

通道13

PC3

通道13

PC3

通道14

PC4

通道14

PC4

通道14

连接内部VSS

通道15

PC5

通道15

PC5

通道15

连接内部VSS

通道16

连接内部温度传感器

通道16

连接内部VSS

通道16

连接内部VSS

通道17

连接内部Vrefint

通道17

连接内部VSS

通道17

连接内部VSS

2.3 转换序列

A/D转换被组织为两组:规则组(常规转换组)和注入组(注入转换组)规则组最多可以有16个转换,注入组最多有4个转换

注入组的级别高于规则组

2.4 触发源

(1)ADON位触发转换(仅限F1系列)

当ADC_CR2寄存器的ADON位为1时,再单独给ADON位写1,只能启动规则组转换

(2)外部事件触发转换

外部事件触发转换分为:规则组外部触发和注入组外部触发

F1:

F4/F7:

2.5 转换时间

2.6 中断

中断事件

事件标志

使能控制位

规则通道转换结束

EOC

EOCIE

注入通道转换结束

JEOC

JEOCIE

设置了模拟看门狗状态位

AWD

AWDIE

溢出(F1没有)

OVR

OVRIE

DMA请求(只适用于规则组)

规则组每个通道转换结束后,除了可以产生中断外,还可以产生DMA请求,我们利用DMA及时把转换好的数据传输到指定的内存里,防止数据被覆盖。

2.7 单次转换模式和连续转换模式

CONT位

0

1

转换模式

单次转换模式

连续转换模式

转换组/转换模式

单次转换模式(只触发一次转换)

连续转换模式(自动触发下一次转换)注意:只有规则组才能触发该模式

规则组

转换结果被储存在ADC_DR EOC(转换结束)标志位被置1如果设置了EOCIE位,则产生中断然后ADC停止

转换结果被储存在ADC_DR EOC(转换结束)标志位被置1如果设置了EOCIE位,则产生中断

注入组

转换结果被储存在ADC_DRJxJEOC(转换结束)标志位被置1如果设置了JEOCIE位,则产生中断然后ADC停止

转换结果被储存在ADC_DRJxJEOC(转换结束)标志位被置1如果设置了JEOCIE位,则产生中断自动注入:将JAUTO位置1

2.8 扫描模式

SCAN位

0

1

扫描模式

关闭扫描模式

使用扫描模式

关闭扫描模式

使用扫描模式

ADC只转换ADC_SQRx或ADC_JSQR选中的第一个通道进行转换

ADC会扫描所有被ADC_SQRx或ADC_JSQR选中的所有通道

单次转换模式(不扫描)

只转换一个通道,而且是一次,需等待下一次触发

单次转换模式(扫描)

ADC_SQRx 和ADC_JSQR 选中的所有通道都转换一次

连续转换模式(不扫描)

只会转换一个通道,转换完后会自动执行下一次转换

连续转换模式(扫描)

ADC_SQRx 和ADC_JSQR 选中的所有通道都转换一次,并自动进入下一轮转换

单次转换模式(不扫描)

使用ADC单通道,并要求进行一次转换

单次转换模式(扫描)

使用ADC多通道,并要求所有通道都转换一次就停止

连续转换模式(不扫描)

使用ADC单通道,并要求对该通道连续转换

连续转换模式(扫描)

使用ADC多通道,并要求所有通道都转换一次后,自动启动下一轮转换

三.ADC配置

步骤

操作

函数

1

配置ADC工作参数、ADC校准

HAL_ADC_Init()、HAL_ADCEx_Calibration_Start()

2

ADC MSP初始化

HAL_ADC_MspInit() 配置NVIC、CLOCK、GPIO等

3

配置ADC相应通道相关参数

HAL_ADC_ConfigChannel()

4

启动A/D转换

HAL_ADC_Start()

5

等待规则通道转换完成

HAL_ADC_PollForConversion()

6

获取规则通道A/D转换结果

HAL_ADC_GetValue()

函数

主要寄存器

主要功能

HAL_ADC_Init()

CR1、CR2

配置ADC工作参数

HAL_ADCEx_Calibration_Start()

CR2

ADC校准

HAL_ADC_MspInit()

存放NVIC、CLOCK、GPIO初始化代码

HAL_RCCEx_PeriphCLKConfig()

RCC_CFGR

设置扩展外设时钟,如:ADC、RTC等

HAL_ADC_ConfigChannel()

SQRx、SMPRx

配置ADC相应通道的相关参数

HAL_ADC_Start()

CR2

启动A/D转换

HAL_ADC_PollForConversion()

SR

等待规则通道转换完成

HAL_ADC_GetValue()

DR

获取规则通道A/D转换结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
stm32_adc多通道源码指的是使用STM32单片机ADC模块,对多个通道进行模拟信号的采集和转换的程序代码。以下是STM32_ADC多通道源码的主要实现步骤: 1.初始化ADC模块 在MCU初始化时应该先打开ADC模块的时钟,并配置ADC模块的各个参数,如采样时间、分辨率、模式等。这些参数设置都需要根据具体的硬件环境和应用场景来进行调整。 2.配置ADC的多通道转换 在ADC多通道转换中,需要先明确要采集哪些通道的模拟信号。通过设置SQRx寄存器的值来指定转换的顺序和通道数。具体的触发方式(如软件触发或外部触发)也需要根据需要来设置。 3.开始转换和获取数据 当ADC模块开始转换时,会按照SQRx寄存器中的通道顺序依次完成转换,并将转换后的数字量存储到DR寄存器中。在转换完成后,可以根据需要将DR中的数据读出,并进行相应的处理操作。 4.处理和输出数据 在获取到采样数据后,可以进行相应的处理操作,如滤波、平均等。处理后的数据可以输出到其他模块或设备中,实现相应的功能。同时,在需要进行连续采样时,可以通过DMA传输的方式,将采集到的数据快速传输到内存中,提高数据采集效率。 总的来说,STM32_ADC多通道源码的实现需要根据实际的硬件环境和应用场景,综合考虑各种因素,进行相应的调整和优化,才能达到更好的采集精度和效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值