糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > 关于STM32的AD采样串口输出

关于STM32的AD采样串口输出

时间:2020-10-13 15:49:16

相关推荐

关于STM32的AD采样串口输出

AD的本身速率最大可以达到1M,去采样一个1KHZ的正弦信号,一个周期内按说可以采集1000个点,但是你去采集然后采集一个输出一个你就会发现一个周期内才采样了10个点,这是为什么呢?

是因为你的串口太慢了,我们知道串口本身是有一个波特率属性的,当你把波特率慢慢调大的时候,你会发现还是那个AD速率,但是一个周期内采样的点变多了,也就是说并不是AD采集的慢,而是我AD采集了你串口呢并不能及时发送,那就是木桶原理了,一个团队的工作速率不是看最快的那个人,而是看最慢的那个人!所以我们怎么样才能获得真实的采样值呢?

首先不能AD采样一次串口输出一次,那也即是说我要一下子采集很多很多个点然后一起通过串口输出出来,有三种方式可供选择:

1、开启AD中断,在中断中把本次采样值存到数组里,当采样次数达到所需要时,在通过串口一次性输出。

2、开启定时器中断,AD设置为连续转换,让AD以他自己的1MHZ去采样,然后我控制定时器的频率,每次定时器进入中断我就把目前正在进行的一次AD采样的值取出来放入数组,这样也能灵活的获取到所需要的值,当然这种方法的优点在于可以降低AD采样的最小速率(FFT变换时,我们要让AD速率尽可能的小)缺点就是不能把所有AD采样的值全部获取到。

3、开启DMA中断,把每次AD采样的值通过DMA存放到数组中,然后设置DMA的缓存大小,当存放的数据达到缓存大小时进入DMA中断,一次性输出所有AD采样数据。

欢迎各位大佬前来指正!

如果觉得《关于STM32的AD采样串口输出》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。