急,STMF337能否实现的SDADC1+DMA1+USB实时采样传输功能

2019-12-10 18:21发布

各位大牛:

        小弟,刚接手用stm337的SDADC实现三路实时采样USB传输的项目,先已经基本实现一路,但问题时,采出的波形部分丢失。

        我的思路如下: 用SDADC1的通道注入模式,循环采集,DMA搬数,循环模式,DMA的深度为512,当DMA全部传输产生中断,然后我
                        就去搬移,然后USB发送。

        我测试如下: 我用信号源给500HZ正玄信号输入,USB接收来的数用上位机绘出。

        遇到好几个问题如下:

        1.DMA每次产生全部传输完中断后,我就从buf1搬到buf2,但是bug下单步发现,搬到同时,buf1的数据含在变化,即就是SDADC1还在采集,       

        那么这样,我就会覆盖数据,buf2中也不是实时数据,我改怎么弄?

        2.我试图加大DMA的深度,buf1大小到4k short型,但仍然还是覆盖?为什么


        2.我试图用定时器控制注入速率,即采样率,降低采样率。但还是丢,为什么?

        3.还是一种想法,当进入DMA中断后,切换下次搬移目的地址,搬移另一个buf,但是怎么实现?这种思路是否正确?

        4.各位大牛,有什么高招?


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
20条回答
huangqi412
1楼-- · 2019-12-11 12:24
别搬来搬去  开半满中断
yfzamnt
2楼-- · 2019-12-11 13:55
huarana 发表于 2017-4-18 14:32
双缓存吧 ,  buf1存满了 就开始存buf2  ,同时从buf1取数。 要保证取数的时间小于 buf存满的时间。

2满了 ...

谢谢!我曾经一条也是这样,但不不知道DMA全部传输完产生中断后,如何把DMA的目的地址切换到其他buf的地址处。您清楚怎么DMA满后,如何切换到其buf的地址?
yfzamnt
3楼-- · 2019-12-11 17:31
 精彩回答 2  元偷偷看……
yfzamnt
4楼-- · 2019-12-11 18:58
xiaomu 发表于 2017-4-18 17:05
3楼正确, dma一直在运行,你搬的过程中一直在采集数据,采用半满,全满中断处理最合适 ...

恩恩,谢谢!
yfzamnt
5楼-- · 2019-12-12 00:20
acmilannast 发表于 2017-4-18 14:39
1. 开DMA半满中断,满中断。半满中断拷贝前256    满中断拷贝后256  就不会产生数据重叠 ...


您好!谢谢您回答,我这边项目急,能加我QQ吗,:2195636160  请教您几个问题,有偿服务!谢谢
yfzamnt
6楼-- · 2019-12-12 02:54
wdluo 发表于 2017-4-18 17:58
加上高速USB,我采集并口的数据,基本上30M速度不会丢数据

您好!我这边项目急,能加我QQ吗 2195636160 有偿服务,万分感谢!

一周热门 更多>