【STM32 系列】ADC —— 模数转换器

引言

由于最近忘记了,自用。

转换模式

单次转换,非扫描模式

  • 在非扫描模式下,列表中就只有序列1的位置有效,此时可以在序列1的位置指定我们想要转换的通道,然后ADC就会对这个通道进行模数转换。
  • 等待一段时间,转换完成后,转换结果放在数据寄存器中,同时给EOC标志位置1,转换过程结束,可以在数据寄存器中读取结果,并且想要再启动一次转换,那么就需要手动再触发一次转换,如此往复。如果要换一个通道转换,那么就在转换之前,将序列1的通道改变即可。

 连续转换,非扫描模式

  • 非扫描模式下,列表中就只有序列1的位置有效,序列1中的通道进行转换。
  • 连续转换在一次转换结束后不会停止,而是立刻开始下一轮的转换,并且一直持续下去。转换之后不需要等待一段时间,因为一直都在转换,不需要手动开始转换,也不需要判断是否结束,随时可以从数据寄存器中读取AD值。

单次转换,扫描模式

  • 扫描模式,可以选择多个序列,指定通道数目, 每个序列中的通道可以重复,每次触发之后,就会依次对前几个数目的通道进行转换。转换的结果都放在数据寄存器里,为了防止被覆盖,就需要用DMA将数据及时挪走。几个通道转换完成之后,EOC标志位置1,转换结束,然后需要手动触发下一次,才能开始新一轮的转换。
  • 单次转换,每触发一次,等到转换结束后就会停止,下次转换就需要再次触发才能开始。

连续转换,扫描模式

  • 扫描模式,可以选择多个序列,指定通道数目, 每个序列中的通道可以重复,每次触发之后,就会依次对前几个数目的通道进行转换。
  • 连续转换,一次扫描完成后,立马开始下一次的转换,不需要手动触发。

间断模式

是在扫描模式下的,是在扫描的过程中,每隔几个转换,就暂停一次,需要再次触发才能继续。

触发控制

规则组的触发源

触发控制有来自定时器的信号,也有来自引脚或者定时器的信号(需要用AFIO重映射决定),还有一个就是软件触发。

数据对齐

右对齐

16/12/8...位的数据向右靠,高位多出来的补零。

左对齐

16/12/8...位的数据向左靠,低位多出来的补零。左对齐得到的数据会比实际上大,实际上就是把数据左移了几次,数据左移一次,就是将数据乘以2。一般不用。

转换时间

采样保持(打开采样开关,小电容存储电压) + 量化编码(ADC逐次逼近,位数越多花时间越长)

  • 采样保持的过程,需要闭合采样开关,等待电容充满后再断开采样开关,就会产生一个采样时间。采样保持花费的时间,可以在程序中进行配置为多少个时钟周期,采样保持的时间越长,那么精度就越高,越能避免毛刺信号的干扰,但是采样的频带就越小。
  • x位的ADC花费的量化编码的时间就是x+0.5个时钟周期。例如16位分辨率的ADC,处理一位的信号,就需要一个时钟周期,最后0.5的时钟周期是臃肿时间。
  • 可以使得ADC超频,转换时间可以更短,不过稳定性就没法保证了。
     

校准

博客导航

博客导航

posted @ 2024-11-20 22:01  膝盖中箭卫兵  阅读(89)  评论(0)    收藏  举报  来源
ORCID iD icon https://orcid.org/0000-0001-5102-772X