STM32 ADC — 知识点总结
文章目录
- STM32 ADC --- 知识点总结
- cubeMX中配置注解
- 单次转换模式、连续转换模式、扫描模式
- 单通道采样的情况
- 单次转换模式:
- 连续转换模式:
- 多通道采样的情况
- 禁止扫描模式(单次转换模式或连续转换模式)
- 单次转换模式+扫描模式
- 连续转换模式+扫描模式
cubeMX中配置注解
- cubeMX配置时,如果配置了多个转换通道,会自动将扫描模式配置为Enabled。
单次转换模式、连续转换模式、扫描模式
单通道采样的情况
例如:我们只配置了一个采样通道CH0
在只配置一个通道的情况下,扫描模式是不起作用的,因而对于单通道采样情形,只有下面两种情况:
单次转换模式:
每启动一次转换一次通道CH0
连续转换模式:
启动ADC后,便会一直转换通道CH0,在每次转换结束后如果没有及时将数据寄存器中的值读出来,会触发溢出(OVR)错误。(触发OVR错误后可以通过清除OVR标志位,并重新启动ADC采样的方式恢复)
多通道采样的情况
例如:我们配置了采样通道CH0和CH1
在使用多通道采样的情况下一般都会使能扫描模式,下面的讨论中我们也会分析下禁止扫描模式的情况。
这里我们首先要区分清楚连续转换模式和扫描模式的作用:
- 扫描模式:将配置的序列寄存器中所有的通道依次采样一遍。
- 连续转换模式:在所有的通道采样结束后再次重新开始采样。
禁止扫描模式(单次转换模式或连续转换模式)
注:这种情况其实和上面单通道采样情况是一样的,虽然配置了多个通道,但实际转换时只会转换第一个通道。
单次转换模式+扫描模式
这种模式是将序列寄存器中配置的所有通道扫描一次
hadc1.Init.ScanConvMode = ENABLE; //扫描模式
hadc1.Init.ContinuousConvMode = DISABLE; //单次转换模式
实例可参考:STM32 ADC — 多通道序列采样
连续转换模式+扫描模式
这种模式是将序列寄存器中配置的所有通道扫描一次,然后再重新扫描,一直重复。
这种情况最好使用DMA,否则容易触发数据溢出错误。
实例参考:STM32 ADC — DMA采样