stm32入门教程--ADC模数转换器2

目录

简介

输入通道

转换模式

        1、单次转换,非扫描模式

        2、连续转换,非扫描模式

        3、单次转换,扫描模式

        4、连续转换,扫描模式

触发控制

 数据对齐

转换时间

校准


简介

输入通道

 这里ADC1有0-17,共18个通道;通道16对应ADC1的温度传感器,通道17对应ADC1的内部参考电压;这里只有ADC1由通道16和通道17,ADC2和ADC3是没有的。

ADC1和ADC2的引脚是完全相同的,分别是PA0-PA7,PB0-PB1,PC0-PC5;ADC3会略微有差别

转换模式

        1、单次转换,非扫描模式

 该模式中,序列1-序列16可以当成饭店的菜单,我们可以在旁边的通道对我们想要的菜品进行‘点菜’,就是写入想要转换的通道,在非扫描的模式下,这个菜单只有第一个序列1的位置有效;比如我们想要转换的是通道2,我们写入序列1就可以触发转换,ADC就会对这个通道2进行模数转换;过一小段时间后,转换完成,转换结果放在数据寄存器里,同时给EOC标志位置1,整个转换过程就结束了。

我们判断EOC标志位,如果判断结果转换完了,就可以在数据寄存器里读取结果了,如果想再启动转换一次,那就需要再触发一次,转换结束,置EOC标志位,读结果;如果想换一个通道转换,那就再转换之前,把第一个位置的通道2改成其他通道,然后再启动转换就可以了。

        2、连续转换,非扫描模式

 首先,它还是非扫描模式,所以菜单列表就只用第一个,它与单次转换不同的是,它在一次转换结束后不会停止,而是立刻开始下一轮的转换,然后一直持续下去。

这样就只需要最开始触发一次,之后就可以一直转换了,这个模式的好处就是,开始转换之后不需要等待一段时间,因为它一直都在转换,所以就不需要手动开始转换了,也不用判断是否结束的。

想要读AD值的时候,直接从数据寄存器读取就可以了

        3、单次转换,扫描模式

这个模式也是单次转换,所以每次转换结束就会停下来,下次转换就得再触发才能开始,然后它是扫描模式,这就会用到这个菜单列表了。

我们可以在这个菜单里点菜,比如第一个菜是通道2,第二个菜是通道5等等,菜单里的每个位置是通道几都是可以任意指定的,并且也是可以重复的。

初始化结构体中还会有个参数,就是通道数目,因为这16个位置可以不用全部用完,只用前几个,那就需要给一个通道数目的参数,告诉他,我有几个通道,比如上图中指定通道数目7,那它就只看前7个位置,然后每次触发后,他就依次对这前7个位置进行AD转换,转换结果都放在数据寄存器里(这里为了防止数据被覆盖,就需要用DMA及时将数据挪走),七个通道转换完成之后,产生EOC信号,转换结束,然后再触发下一次,就又开始新一轮的转换。

        4、连续转换,扫描模式

连续转换扫描模式和单次转换扫描模式类似,连续转换是在单次转换完成后,立刻开始下一次的转换,和前面非扫描的单次和连续转换一个套路。

触发控制

 数据对齐

 我们的ADC是12位的,它的转换结果就是一个12位的数据,但数据寄存器是16位的,就存在一个数据对齐的问题。

1、数据右对齐

就是12位数据向右靠,高位多出来的几位就补0

2、数据左对齐

就向左靠,低位多出来的几位就补0

我们通常采用的都是第一种右对齐

这样读取这个16位的寄存器,直接就能转换结果

如果选择左对齐,实际数值就会比我们读取到的更大,这里左移4次相当于把结果×16了,所以直接读的话,会比实际结果大16倍。

那左对齐有什么用呢?

如果你不想要这么高的分辨率,觉得0-4095太大了,做个简单的判断,数据左对齐,读取高八位,这样就舍弃了后4位的精度,这个12位的ADC就退化成了8位的ADC了。

转换时间

转换时间这个参数,我们一般不太敏感,因为一般AD转换都很快,如果不需要非常高速的转换频率,那转换时间就可以忽略了

AD转换是需要一小段时间的,就像厨子做菜一样,点完菜之后也是需要等一会才能上菜的。

那AD转换有哪些步骤是需要花时间呢

如图,AD转换步骤有采样,保持,量化,编码,我们可以把采样和保持放在一起,量化和编码放在一起,总共是两大步。

量化编码好理解,就是ADC逐次比较的过程,这个是要花一段时间的,一般位数越多,花的时间就越长。

为什么需要采样保持呢? 因为我们的AD转换,就是后面的量化编码,是需要一小段时间的,如果在这一小段时间里,输入的电压还在不断变化,那就没法定位输入的电压到底是在哪了,所以在量化编码之前,需要设置一个采样开关,先打开采样开关,收集一下电压,存储好了之后,断开采样开关在进行后面的AD转换,这样在量化编码期间,电压始终保持不变,这样才能精确的定位未知电压的位置,这就是采样保持电路。

那采样保持的过程需要闭合采样开关,过一段时间再断开,这里就会产生一个采样时间,就得到了图中第二条,STM32ADC总转换时间。

校准

 校准的过程是固定的,我们只需要在ADC初始化的最后,加几条代码就可以了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是lamune

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值