完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
关键是我想把采样得到的点上传到电脑端,现在关键地方就是我上传的速度能不能跟上我采样的速度,该采用哪种上传方式,有没有大神能给我详细讲解一下该怎么弄
我是用了dma传输,DMA内存空间是1000,那我adc采样1000个点之后,第1000个点以后的数据会不会依旧是存进DMA的内存空间,将最开始的点挤掉,我是想将每个adc的采样点都上传到PC端,该怎么做呢?或者不上传到PC端,将每个采样点都要经过我写的一些算法,我就怕前1000个点还没计算完成, 然后后面的采样点又挤进来了,这样数据就不连贯了 |
|
相关推荐
4个回答
|
|
连贯是相对,首先你要确认采样频率,就是每秒采多少次。如果按你说的每个周波采128个点,问题是如何确认周期的开始,假设是正弦波,即确认过零点。若有硬件电路支持采集过零点,采样时间T就是周期除以128,从过零点开始,每隔T时间采一个点。问题在于,采完一个周期之后,接着下一个周期就过来了,这时候要求处理器器能够将前面128个点处理掉,或缓冲到其他内存位置。dma直接采样,达到结束时,应该不会从头在来一遍,DMA没有这功能吧?我反正没用过。
使用STM可以这样搞:同一个timer作为采样间隔处理,设置到ADC通道上,当检测到过零点的时候,启动timer,这时候每隔T时间采一个点,采到的数据直接通过DMA存到缓冲区,缓冲区设置为128个采样点,采到128个时产生DMA中断,进入中断更换下一个缓冲区,退出之后处理刚才采样的数据。这样需要多个缓冲区,再将缓冲区按链表或队列的方式处理,形成循环。则处理数据的时间就跟缓冲区队列有关了,要计算好STM32处理能力和缓冲区溢出的关系。这样都是硬件采样,周期稳定,代码干预少,释放CPU资源。 还有一种思路,混沌处理,适合频率不高的采样,先按规格,例如50Hz信号采样,正负20%频率偏差,信号可能40~60Hz内波动,则设定timer的采样周期为至少大于2倍被采信号频率(香浓定理),保证无论如何都能猜到两个周期的数据,采完产生DMA中断,然后把所有数据摊开,搜索出其中一个完整的波形然后计算同时开始下一次采样,适合没有过零检测电路的系统。
最佳答案
|
|
|
|
这个很简单的,配置一些寄存器就好,看看rm手册的adc寄存器那块
|
|
|
|
|
|
|
|
就是你看看Datasheet的寄存器说明那部分,会有介绍怎样配置的
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1310 浏览 3 评论
963 浏览 0 评论
嵌入式开发 Win11安装ST-Link 提示 设备描述符请求失败 怎么处理?
1093 浏览 0 评论
1381 浏览 1 评论
求助:STM32F407串口控制外设无效,用电脑串口助手有效
2270 浏览 3 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-10 19:22 , Processed in 0.667928 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号