STM32 ADC

  • 格式:docx
  • 大小:760.02 KB
  • 文档页数:5

STM32 ADC介绍
有三个独立的ADC
12位分辨率
每个ADC有18个通道、外部通道16个(由于芯片引脚数量有区别、部分芯片不能全
部拥有16个外部引脚)

STM32 ADC框图

1、电压输入范围 2、输入通道 3、转换顺序 4、触发源
5、转换时间 6、数据寄存器 7、中断
2、电压输入范围
VREF+:电源参考正极 一般3.3V
VREF-:电源参考负极 一般与电源地相连
VDDA:ADC电源
VSSA:ADC电源地

##STM32测量高于参考电压的方法

根据基尔霍夫定律(KCL),节点流入的电流等于流出的电流
(Vint – Vout)/R2 + (3V3-Vout)/R1 = Vout / R3
电阻选配方法:
先假设R1电阻值,然后分别选取Vint & Vout 进行输入试验,选取两组结果列方程,
求出R2 & R3
Vout = (Vint + 10) /6
2、输入通道
3、转换顺序
规则通道:平时使用的通道
注入通道:在规则通道转换时,可强行进行注入通道转换,类似中断
(可设置16通道中4个为注入通道)

在SQRn寄存器中可以设置通道的转换优先顺序、转换通道数量
在JSQR寄存器中可以设置注入通道转换优先顺序、转换注入通道数量
##根据转换注入数量,依次由固定的寄存器位开始转换
4、触发源
软件触发:设置寄存器位,转换规则通道。或者注入通道
外部触发:定时器触发
外部I/O中断触发
5、转换时间
转换时间:Tconv = 采样时间 + 12.5 个周期
ADC_CLK:最大时钟为14MHz
##一般为PCLK=72MHz、分频之后ADC_CLK为12Mhz
采样时间:可软件选择,最短为1.5个时钟周期
Tconv min = 1.5 + 12.5 =14 周期 = 14/12 us = 1.17us
6、数据寄存器
规则组:数据存放在ADC_DR寄存器
注入组:数据存放在JDRx寄存器(x = 1-4)
##所有的规则组数据都存放在ADC_DR
##每次转换结束后,会产生DMA请求
7、中断
规则组转换结束中断
注入组转换结束中断
模拟看门狗中断

STM32 ADC结构体&函数
ADC_InitTypeDef—初始化结构体
ADC_Mode:独立模式(单个ADC转换)等。(其余为双ADC的模式、注入模式等)
ADC_ScanConvMode:ADC扫描使能
ADC_ContinuousConvMode:ADC持续转换使能
ADC_ExternalTrigConv:ADC触发模式
ADC_DataAlign:ADC数据对齐模式(左对齐、右对齐)
ADC_NbrOfChannel:ADC需要转换的通道数量

ADC_Init():ADC初始化
RCC_ADCCLKConfig():ADC的时钟&分频
ADC_RegularChannelConfig():配置规则组的转换的顺序,转换周期
ADC_Cmd():ADC使能
ADC_SoftwareStartConvCmd():ADC软件触发使能
ADC_ExternalTrigConvCmd():ADC外部触发使能
ADC_DMACmd():ADC_DMA转换

ADC编程步骤
1-初始化ADC用到的GPIO
2-初始化ADC初始化结构体
3-配置ADC时钟,配置通道的转换顺序和采样时间
4-使能ADC转换完成中断,配置中断优先级
5-使能ADC,准备开始转换
6-校准ADC
7-软件触发ADC,真正开始转换
8-编写中断服务函数,读取ADC转换数据
9-编写main函数,把转换的数据打印出来
当使用DMA时,取地址操作 (uint32_t)&(ADC1->DR)