STM32F0xx ADC的特点及应用
STM32F0xx ADC的特点及应用
STM32F0xx的ADC,属于逐次逼近型,12位,最快转换时间1uS。并且STM32F0xx的ADC有DMA支持,ADC及DMA均可以产生中断,更增添了使用的灵活性。
一、 ADC的启动与停止
置ADC_CR寄存器的ADEN位,允许ADC;置ADDIS位,禁止ADC。在置位ADEN后,最长需要1uS的时间,才使ADC启动。
二、ADC时钟
STM32F0xx有两个时钟源:PCLK时钟及ADC异步时钟。ADC异步时钟可以使ADC独立于CPU时钟工作,对于低功耗下特别有用。
选择ADC时钟,由ADC_CFGR2寄存器的CKMODE[1:0]位决定
ADC clock source | | Latency between the trigger event and the start of conversion |
| | Latency is not deterministic (jitter) |
| | Latency is deterministic (no jitter) and equal to 2.75 ADC clock cycles |
| | Latency is deterministic (no jitter) and equal to 2.625 ADC clock cycles |
三、ADC配置
主要是对ADC_CR、ADC_IER, ADC_CFGRi, ADC_SMPR,ADC_TR, ADC_CHSELR及ADC_CCR等寄存器的控制。
四、转换通道选择
STM32F0xx的ADC可以单个转换,也可以序列转换。
l 最多16个使用GPIO引脚的输入通道
l 两个内部输入通道(温度传感器和模拟参考源)
它可以轮换单个通道,也可以自动扫描转换通道序列。要转换的通道序列必须在ADC_CHSELR寄存器中指定。转换的次序要ADC_CFGR1中指定。
五、可编程的采样时间
ADC对输入信号的采样时间,设置ADC_SMPR 寄存器的SMP[2:0] 位:
000: 1.5 ADC clock cycles
001: 7.5 ADC clock cycles
010: 13.5 ADC clock cycles
011: 28.5 ADC clock cycles
100: 41.5 ADC clock cycles
101: 55.5 ADC clock cycles
110: 71.5 ADC clock cycles
111: 239.5 ADC clock cycles
六、单次模式
在单次转换模式,ADC将启动单序列的转换,即将所有设置转换的通道转换一次。这种模式需要使ADC_CFGR1寄存器的CONT=0。
它可以由两种方法启动转换:
l 置位ADC_CR的ADSTART位
l 硬件事件触发
单次转换结束后,将:
Ø 结果存入16-bit ADC_DR寄存器;
Ø 置位EOC
Ø 产生中断(如果EOCIE置位)
七、连续转换
在连续转换模式,转换序列启动后,对所要转换的序列进行转换,结束后自动地重新开始下一次转换。
连续转换需要设置ADC_CFGR1的CONT位为1,它可以由两种方法启动转换:
l 置位ADC_CR的ADSTART位
l 硬件事件触发
转换结束后,将:
Ø 结果存入16-bit ADC_DR寄存器;
Ø 置位EOC
Ø 产生中断(如果EOCIE置位)