你要知道为什么需要时钟。单片机必须要有时钟才能正常运行,STM32有外部时钟和内部时钟的区别。但无论是外部还是内部时钟,都会经过分频或倍频最后得到外设的时钟,这样外设才能正常运行。而打开时钟就是允许接收分频后的频率。比如外部时钟晶振你是8M,经过倍频后得到72M,然后可分频2、4、6、8……给ADC是使用,但是ADC最大运行频率为14M,所以分频数至少得设为6。这时你也要像你问的那样,打开ADC的时钟。
可以检测16处电压。。但是。。但是……不能同时检测。。。
比如如果只是采用adc1的话,要一个一个按顺序来,用库写程序的话有一句
ADC_RegularChannelConfig(ADC1,ADC_Channel_2, 1,ADC_SampleTime_1Cycles5);
里面那个1表示在这一次周期的采样顺序,采样3个点就是
ADC_RegularChannelConfig(ADC1,ADC_Channel_3, 1,ADC_SampleTime_1Cycles5);
ADC_RegularChannelConfig(ADC1,ADC_Channel_2, 2,ADC_SampleTime_1Cycles5);
ADC_RegularChannelConfig(ADC1,ADC_Channel_5, 3,ADC_SampleTime_1Cycles5);
其中的那个1,2,3就是顺序
如果用adc1和adc2的话是可以同时采样的……
但是只用1个adc的话16处采样的返回值只写在对应的ADC_DR里面,需要分时读取;
同样,adc1和adc2是有各自不同的adc_dr;
读取,可以通过dma传出来读取。在dma的设置里有关于adc的……
或者在库函数里也有直接读取的。。
或者。。直接去读寄存器也可以……
ADC转换时间:
具有以下公式:TCONV=采样时间+12.5个周期
对于12位AD采集,固定为12.5个周期。其他采样时间可以由SMPx[2:0]寄存器控制。每个通道可以单独配置。
000:1.5周期
100:41.5周期
001:7.5周期
101:55.5周期
010:13.5周期
110:71.5周期
011:28.5周期
111:239.5周期
当我们选择1.5个周期。转换时间=1.5+12.5=14个周期。
当时钟配置为12MHz时,转换时间=14/12=1.167us。
扩展资料:
STM32ADC通道序列设置:
1、使用STM32ADC多通道采样时,需要为所使用的每个通道配置相应的转换顺序和采样时间。详细信息如下图所示。
2、参数Rank是通道的采样顺序。关于通道10,将Rank设置为1,以指示ADC操作中第一个采样的通道为ADC10。
3、如果ADC10,ADC11,ADC12和ADC13的通道号设置相同,则DMA输出到存储器的四个通道的值将不确定。
4、分别设置通道的采样顺序后,DMA终端可以准确输出每个通道的采样值。
本文标签:stm32的AD3个转换