2024年3月9日发(作者:)
什么事规则通道 什么是注入通道 注入可以打断规则
什么是单次转换模式 连续转换?
ADC就是模拟/数字转换,我们用的是12位逐次逼近行的模数转换器。共有18个通道,各
通道的A/D转换可以单次,连续,扫描,间断模式执行。这章用到的是单次模式,那什么
是单次模式呢?32中文参考手册117页有介绍说到,概括的总结出:
单次转换模式:ADC只执行一次转换,CONT=0。
连续转换模式:ADC转换一结束就启动另一次转换,CONT=1。
扫描模式:在每个组的每个通道上执行单次转换,在每个转换结束时,同一组的
下一个通道被自动转换。
如果设置了CONT位,转换不会在选择组的最后一个通道上停止,而是再次从选
择组的第一个通道继续转换。
间断模式:每一次外部触发信号可以执行一个短序列的n次转换(对于规则组
n<16,对于注入组n<4),直到此序列的所有转换完成为 止。
注:当以间断模式转换一个规则组时,转换序列结束后不自动从头开始。
当所有子组被转换完成,下一次触发启动第一个子组的转换(下面的第
四次触发)
例如: n=3,被转换的通道= 0、1、2、3、4、5、6、7
第一次触发: 转换的序列为 0、1、2
第二次触发: 转换的序列为 3、4、5
第三次触发: 转换的序列为 6、7 (此处不从头开始,此处产生EOC事件)
第四次触发: 转换的序列为 0、1、2
AD的结果可以是左对齐或者右对齐存储在16位数据寄存器。
AD转换分为2个通道组:规则通道和注入通道。 那什么是规则通道呢?规则
通道相当于你正在运行的程序,而注入呢,相当于中断。注入可以打断通道。规
则由16个转换组 通过ADC-SQRX寄存器选择 注入由4个组,通过ADC-JSQR 选
择
本章使用ADC1的通道1进行AD转换,其步骤如下:
1)开启PA口时钟,设置PA1为模拟输入。 因为ADC1通道1在PA1上
2)使能ADC1时钟,并设置分频因子。 第一步使能ADC1时钟,接着通过RCC_CFGR
设置分屏,这是为了保证ADCCLK不超过14Mhz 超出14Mhz导致结果准确度下降
3)设置工作模式 比如单次模式,数据对齐方式
4)设置规则序列的相关信息 比如通道数和采样周期
5)开启AD转换器,并校准 不校准结果不正确
6)读取ADC值
最后是一些相关寄存器的介绍:比如 ADC控制寄存器(ADC_CR1和ADC_CR2) 采
样寄存器 ADC_SMPR1 规则序列寄存器(ADC_SQR1~3) 状态寄存器(ADC_SR)
这里主要讲几个位
ADC_CR1 的SCAN位为设置扫描模式,置1位开启。
ADC_CR1[19:16]用于设置ADC的操作模式
是独立模式
这章用的
ADC_CR2的ADCON位用于开启AD转换器。CONT位设置是否进行连续转换,我们这章
是单次,SO该为位0.。CAL 和RSTCAL用于AD校准。ALIGN用于数据对齐,本章位右
对齐,所以置为0
.
EXTSEL[2:0]用于选择启动规则转换组转换的外部事件
我们用
的是软件触发(SWSTART)所以置为111.
ADC采样事件寄存器(ADC_SMPR1和ADC_SMPR2)用于设置通道0~17的采样时间,每
个通道占用3个位 ADC_SMPR1设置通道10~17 ADC_SMPR2设置0~9
采样时间长点得到准确度高点但会降低转换速率
ADC的转换时间公式 Tcovn=采样时间+12.5个周期 在ADCCLK=14M时 假设采样周
期为1.5个 则Tcovn=1.5+12.5=14个周期=1us
ADC规则序列寄存器(ADC_SQR1~3)五个位设置一个
L[3:0]用于存储规则序列的长度,这里只用了1个,所以设置这几个位的值为0。
ADC规则数据寄存器(ADC_DR) AD转化结果都将被存在这个寄存器里面;
ADC寄存器为ADC状态寄存器(ADC_SR


发布评论