我这个程序的目的:用STM32的ADC以最快速度采集(连续采集模式)3000个数据。同时通过DMA将数据传到存储器(内存地址递增模式,并开辟相应大小数据空间。)完成上述工作之后,通过串口将猜到的3000个数据传输到上位机。
出现的问题:主要是前两步,速度太慢。采集3000个点传到存储器一共需要20秒的样子(粗略估计)。
我的计算:我用内部时钟,9倍频,系统时钟72MHz。ADC时钟由系统时钟8分频得来,9MHz。采样时间1.5个时钟周期。这样来算采集一个数据时间1.56us。3000个点不到5个毫秒。算上DMA传输时间(DMA时钟为系统时钟)最多也不会超过1S钟啊。为什么我采样需要那么长的时间??
如果有用过这种方式采集数据的,最快速度能到多少??程序整体发不上来,我写的不够精简,有点大。我把ADC程序和主函数程序放上来,请大家指教。另:我的程序是根据野火ADC(DMA)程序更改而来。主函数只做采样和数据传输,不干别的活。
[/td][/tr][/table]
<div class="pattl">
部分程序.zip |