打印

重新问个问题,stm32 usb采集

[复制链接]
1480|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
采用外部16位adc对信号进行100Khz的采样,然后用usb把数据(数据大小是100K*2字节)传输到电脑上
采用定时中断来对信号采样,
现在遇到问题是,如果发送的信号是直流,是没问题,但交流,问题就大了
30HZ
10HZ
这里为保证采样的时间准确,定时中断使用最高优先级
抓包数据显示
沙发
IJK| | 2013-6-25 17:18 | 只看该作者
看上去丢数据了?
但是按理用BULK传输不应该丢数据的。

使用特权

评论回复
板凳
Eric2013| | 2013-6-25 18:46 | 只看该作者




使用特权

评论回复
地板
gurong60|  楼主 | 2013-6-25 18:57 | 只看该作者
我在定时中断里面经行数据处理大概在5us处理时间,而中断是10us一次,
这样在usb等到有64字节时进行传输,会不会和定时中断冲突?

使用特权

评论回复
5
gurong60|  楼主 | 2013-6-27 20:13 | 只看该作者
顶起

使用特权

评论回复
6
gurong60|  楼主 | 2013-6-27 20:14 | 只看该作者
IJK 发表于 2013-6-25 17:18
看上去丢数据了?
但是按理用BULK传输不应该丢数据的。

100k的采样率,stm32够用吗?

使用特权

评论回复
7
lxyppc| | 2013-6-27 22:00 | 只看该作者
100k,完全无压力啊
用dma来收集外部ad数据。

使用特权

评论回复
8
王紫豪| | 2013-6-28 01:46 | 只看该作者
对,要么dma,要么外部 fifo

使用特权

评论回复
9
IJK| | 2013-6-28 09:32 | 只看该作者
gurong60 发表于 2013-6-25 18:57
我在定时中断里面经行数据处理大概在5us处理时间,而中断是10us一次,
这样在usb等到有64字节时进行传输, ...

“定时中断里面经行数据处理大概在5us处理时间,而中断是10us一次”

这种做法是有问题的,中断函数应该尽量短、小 才行。
如上面所说 ADC取数应该用DMA。

使用特权

评论回复
10
gurong60|  楼主 | 2013-6-30 22:46 | 只看该作者
lxyppc 发表于 2013-6-27 22:00
100k,完全无压力啊
用dma来收集外部ad数据。

采用spi传输方式,接收20位数据,还要在中断里面对数据处理,移位成16位,不知道dma方式如何进行

使用特权

评论回复
11
gurong60|  楼主 | 2013-6-30 22:50 | 只看该作者
IJK 发表于 2013-6-28 09:32
“定时中断里面经行数据处理大概在5us处理时间,而中断是10us一次”

这种做法是有问题的,中断函数应该 ...

好吧,我慢慢来啃dma,再问下 USB_SIL_Write(EP1_IN, data35, 64);这个函数执行一次需要多少时间,标准48M USB?
还有为什么 USB_SIL_Write(EP1_IN, data35, 64);和 USB_SIL_Write(EP1_IN, data35,1024);循环执行的时候 抓包软件显示的速度不一样?

使用特权

评论回复
12
IJK| | 2013-7-1 09:52 | 只看该作者
gurong60 发表于 2013-6-30 22:46
采用spi传输方式,接收20位数据,还要在中断里面对数据处理,移位成16位,不知道dma方式如何进行 ...

spi传输方式可以考虑用DMA,接收到16次(或者32次之类的)数据后,在主程序里进行移位处理,然后再通过USB发出去

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:对手,队友

179

主题

1307

帖子

4

粉丝