急,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-12 08:49
先估算速度容量匹配。。。   AD采样1S产生多少字节数据?这个有DMA不占CPU.   F3速度挺快,USB虽然没DMA还是挺快能接近1M,要快必须每次发送很大数据块。  要是采样一秒钟上M,还持续不停,明显速度不匹配就别折腾了,USB跟不上。
yfzamnt
2楼-- · 2019-12-12 10:19
 精彩回答 2  元偷偷看……
huangqi412
3楼-- · 2019-12-12 10:29
yfzamnt 发表于 2017-4-26 10:53
恩恩,谢谢您的回答!
        您说的对,我查了手册,373的SDADC1单通道采,软件自动转换,能达到50kbps; 我这 ...

..10K采样率,CPU速度几十个M, 连DMA都别上了,先中断硬上测试正确了再说。
yfzamnt
4楼-- · 2019-12-12 16:17
huangqi412 发表于 2017-4-26 15:00
..10K采样率,CPU速度几十个M, 连DMA都别上了,先中断硬上测试正确了再说。

我的是1k的采样率啊,你说的10k的怎么来的? 即使是10k的采样率,也没问题吧,337的时钟为72M
zack_cf
5楼-- · 2019-12-12 19:17
yfzamnt 发表于 2017-4-19 15:07
谢谢您!现在我的程序就是按您说的这种思路编写的,但是我半满中断拷贝前512,满中断拷贝后512,我DMA的 ...

DMA最大数据量是65535,可不是65536.
至于单位,就看你是按字节传输、半字传输还是字传输了,并不一定表示字节。官方的说法是number of items to be transfer.
doubtfisher
6楼-- · 2019-12-12 22:34
近期会用到adc,然后DMA搬运。高速采集时数据从RAM转移到别处是个大问题,容量、速度等等要匹配。

一周热门 更多>