发新帖我要提问
12
返回列表
打印
[STM32F1]

USB通讯速度的问题

[复制链接]
楼主: JY-DX-JY
手机看帖
扫描二维码
随时随地手机跟帖
21
cool_coder| | 2015-11-2 17:08 | 只看该作者 回帖奖励 |倒序浏览
这个地方我设成0x0100就是256了。请问还可以设更大吗?要改那?我试的再大就出错了。

这个和“packet buffer”的设置有关,手册里是这么讲的:
PC主机和微控制器之间的数据传输是通过共享一专用的数据缓冲区来完成的,该数据缓冲区能被USB外设直接访问。这块专用数据缓冲区的大小由所使用的端点数目和每个端点最大的数据分组大小所决定,每个端点最大可使用512字节缓冲区,最多可用于16个单向或8个双向端点。
...
每个端点对应于两个分组缓冲区(一般一个用于发送,另一个用于接收)。这些缓冲区可以位于整个分组存储区的任意位置,因为它们的地址和长度都定义在缓冲区描述表中,而缓冲区描述表也同样位于分组缓冲区中,其地址由USB_BTABLE寄存器确定。

使用特权

评论回复
22
JY-DX-JY|  楼主 | 2015-11-2 17:36 | 只看该作者
谢谢!我再看看。USB传输方式还有批量传输。如果要改成批量传输,应该改哪儿呢?

使用特权

评论回复
23
gxs64| | 2015-11-2 17:45 | 只看该作者
你用的是什么usb芯片?最好一包为64byte,或倍数,一般不要小于64

使用特权

评论回复
24
JY-DX-JY|  楼主 | 2015-11-2 18:25 | 只看该作者
没有USB芯片。

使用特权

评论回复
25
leonliu_1128| | 2015-11-2 20:06 | 只看该作者
用的是host还是device,host的话需要发送in packet,device收到后才会发数据。如果是device的话,device发出数据后host需要ack, 然后host再发送in packet, device再发数据。你有beagle可以看一下

使用特权

评论回复
26
JY-DX-JY|  楼主 | 2015-11-3 08:21 | 只看该作者
设备。

使用特权

评论回复
27
acguy| | 2015-11-3 09:50 | 只看该作者
用f072,48MHZ,usb2.0 full speed, packet size = 64 bytes
用double buffer, bulk传输,
可以跑到500KB ~ 600KB/s, 还有时间干串口的话。

这点数据量对f1来说,任何一点都不是瓶径。

使用特权

评论回复
28
JY-DX-JY|  楼主 | 2015-11-3 10:14 | 只看该作者
都是大神。我现在就停留在256个字节这地方了。

使用特权

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

本版积分规则