
定时器触发就是两次采集之间的时间间隔,比如定时器触发的时间我设置为2s,即间隔2s的时间采集一次。那么采集一次需要的时间是多少呢,这个是可以设置的,也被叫做转换时间,一般都是us级别。这个就是通过这个函数可以进行配置的 ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 1, ADC_SampleTime_55Cycles5);,ADC_SampleTime_55Cycles5就是下文说到的采样时间设置,转换时间(单次采样花费的时间)计算如下 公式:TCONV = 采样时间+ 12.5 个周期 例如:当ADCCLK=14MHz 和1.5 周期的采样时间,TCONV = 1.5 + 12.5 = 14 周期 = 1μs,所以定时器的触发的间隔时间应该大于ADC的最小转换时间1us的,不然数据没有及时被取走的话,数据就会被覆盖3 w" l; n: r7 c3 b1 d! Z - X$ z2 p5 E7 A# q& x! P 如果我们的输入信号是 20KHz (周期为 50us),若要将它恢复出来,一个周期最少采样20个点,所以两个点之间的间隔时间为50us/20 = 2.5us,此时采样率要达到1/2.5us*1000 000=400KHz(1s = 1000 000us),所以ADC的采样率必须在400KHz 以上。为了达到最好的精度,如果系统时钟为72MHZ,我们选取ADC时钟为12MHz,即6分频。在12MHz 以及保证采样率的情况下,采样时间越长,准确性就越好。/ ?& A2 k+ }" y* x 可以计算 2.5us = (12.5 + 采样时间)/ 12MHz (定时触发的间隔时间为2.5us,ADC最大的转换时间为2.5us,所以我们设置 采样时间时候不能使得(12.5+采样时间)/12MHZ>2.5us,最多相等),根据等式可以求得采样时间为17.5;所以采样时间的选择必须小于等于17.5个周期,才能保证采样率在400KHz 以上。所以我们可以选择1.5、7.5、13.5,为获得更高的精准度,我们可以选择13.5个周期。 ![]() 0 q7 a2 V7 N* ^* }7 @ 以上我是从很多人的理解中提炼出来的,我感觉是彻底说明白了定时器触发ADC采样中涉及到的一些问题,希望不懂的人可以理解,高手别笑话。$ `+ X! Q1 M8 o: H; n2 y1 ]) K4 n |
点评