STM32定时触发ADC 采样频率等问题总结

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_41913635/article/details/98230608
  • 定时器触发就是两次采集之间的时间间隔,比如定时器触发的时间我设置为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的,不然数据没有及时被取走的话,数据就会被覆盖。

  • 如果我们的输入信号是 20KHz (周期为 50us),若要将它恢复出来,一个周期最少采样20个点,所以两个点之间的间隔时间为50us/20 = 2.5us,此时采样率要达到1/2.5us*1000 000=400KHz(1s = 1000 000us),所以ADC的采样率必须在400KHz 以上。为了达到最好的精度,如果系统时钟为72MHZ,我们选取ADC时钟为12MHz,即6分频。在12MHz 以及保证采样率的情况下,采样时间越长,准确性就越好。可以计算 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个周期。
    在这里插入图片描述 如上图所示T就是定时器配置的定时时间,也就是上文说的2.5us那个时间,t1,t2,t3就是单次采样转换时间,这个时间越长转换越精确,但是这个时间不可以比T大,否则单个采样还在转换中,结果又来了新的转换,可能什么数据都没有或者是得到了不正确的采样数据,有图可知t1最大可以等于T,这个时候实际上精度是最高最好的。

    以上我是从很多人的理解中提炼出来的,我感觉是彻底说明白了定时器触发ADC采样中涉及到的一些问题,希望不懂的人可以理解,高手别笑话。

  • 8
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
STM32中,可以通过定时触发ADC采样,以实现定时采样的功能。以下是实现的步骤: 1. 初始化定时器 首先需要初始化定时器,设置定时器的时钟源、计数模式、计数方向、自动重载值等参数。在初始化时需要注意定时器的时钟源和计数频率,以确保定时器的精度和稳定性。 2. 初始化ADC 接下来需要初始化ADC,设置ADC的采样通道、采样时间、转换模式等参数。在初始化时需要注意采样通道的选择和采样时间的设置,以确保采样的准确性和稳定性。 3. 配置定时触发ADC采样 通过设置ADC触发源为定时触发,可以实现定时触发ADC采样。具体方法是在ADC初始化后,通过设置ADC的CR2寄存器的EXTSEL和EXTEN位来选择触发源和触发模式。 4. 启动定时器和ADC 最后需要启动定时器和ADC,使其开始工作。在启动后,定时器将按照设定的时间间隔触发ADC采样,采样结果将存储在ADC的数据寄存器中,可以通过读取寄存器的值来获取采样结果。 需要注意的是,在定时触发ADC采样时,可能会出现ADC采样时间过长导致定时器溢出的情况。为避免这种情况,可以采取以下措施: - 选择合适的采样通道和采样时间,以确保采样时间不会过长; - 调整定时器的计数频率和自动重载值,使得定时器的计数周期足够长,以避免溢出; - 在定时器溢出时及时处理,例如重新设置定时器和ADC的参数等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值