打印
[STM32F1]

STM32 USB BULK传输 2K数据如何发送

[复制链接]
3420|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
为爱一拼|  楼主 | 2015-1-22 21:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位大牛好,我现在在做STM32 USB的bulk传输,驱动是利用libusb,下位机要把2K数据通过USB传输到PC,利用下边这个函数,UserToPMABufferCopy(data, ENDP1_TXADDR, dataNum);那么发送2K数据时,是否可以直接令dataNum=2k,然后USB就可以自动分成多包发送呢?
沙发
s_f_tan| | 2015-1-23 11:16 | 只看该作者
USB的硬件缓冲区只有512B,还要考虑收发,只能自己讲数据包拆包分开发送

使用特权

评论回复
板凳
为爱一拼|  楼主 | 2015-1-24 11:30 | 只看该作者
s_f_tan 发表于 2015-1-23 11:16
USB的硬件缓冲区只有512B,还要考虑收发,只能自己讲数据包拆包分开发送

谢谢您的指导,我明白了,也就是说dataNum最大只能设定为64,我想发送2K数据的话,需要分成多个包(每包64)进行传送。
另外还想请教个问题:我用STM32通过SPI读取外接AD,单独AD程序运行正常,串口打印数据正确,单独的USB bulk传输我也实现了大量的数据从STM32发送到上位机,但是AD和USB联调时,在上位机收不到AD的数据,把AD中断这行程序注释之后,上位机就可以收到我自己设定发的数据了,看起来好像AD中断和USB发生了一些冲突,这点我还不明白,希望能得到您的帮助,谢谢了!

使用特权

评论回复
地板
huangqi412| | 2015-1-24 12:12 | 只看该作者
为爱一拼 发表于 2015-1-24 11:30
谢谢您的指导,我明白了,也就是说dataNum最大只能设定为64,我想发送2K数据的话,需要分成多个包(每包6 ...

LED+示波器。。。

使用特权

评论回复
5
为爱一拼|  楼主 | 2015-1-24 15:07 | 只看该作者
huangqi412 发表于 2015-1-24 12:12
LED+示波器。。。

LED和示波器?用来检验AD和USB的冲突?不太懂,能不能麻烦您说的再详细点,谢谢了

使用特权

评论回复
6
huangqi412| | 2015-1-24 21:31 | 只看该作者
为爱一拼 发表于 2015-1-24 15:07
LED和示波器?用来检验AD和USB的冲突?不太懂,能不能麻烦您说的再详细点,谢谢了 ...

LED+示波器屡试不爽。  找问题出在哪。。。

使用特权

评论回复
7
s_f_tan| | 2015-1-26 11:15 | 只看该作者
这个要看你程序设计了,2K的数据在分包传输时,又没有被AD禁止掉USB中断,或者被清除什么标记了,硬件上除非两个中断的太厉害了,基本都在中断调度了不能完整的发出数据。软件程序上的时序问题多些

使用特权

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

本版积分规则

2

主题

21

帖子

0

粉丝