打印
[STM32F1]

USB中断传输的问题

[复制链接]
1804|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Cjy_JDxy|  楼主 | 2018-5-10 15:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我做了一块USB板子,STM32F103C8T6自带的USB。
中断传输已经可以枚举成功,数据也能发出来。
现在设置的每次最大传输数据个数是64,就是每次传输64个数据,
不足64个后面补0.
我需要每次传输一个字节,我把描述符里相应字节改成1.
可是烧进去程序,数据发不出来了。
请问高手,该如何设置?谢谢!
沙发
香水城| | 2018-5-10 16:58 | 只看该作者
如果你最大包长为64,当数据多余64时,分次传输,如果整个传输数据为64的整数倍时就额外加发个零字节数据包;
如果要传输的数据小于64,是多少发多少,不用凑64,反而会引起主机误判。

使用特权

评论回复
板凳
Cjy_JDxy|  楼主 | 2018-5-10 17:15 | 只看该作者
本帖最后由 香水城 于 2018-5-10 17:24 编辑
香水城 发表于 2018-5-10 16:58
如果你最大包长为64,当数据多余64时,分次传输,如果整个传输数据为64的整数倍时就额外加发个零字节数据包 ...

谢谢!我不明白你说的如果整个传输数据为64的整数倍时就额外加发个零字节数据包是什么意思。
比如,是128个数据,第一次发64个,第二次再发64个数据,也不用加零字节数据包啊。

==> 根据协议当你发的数据少于一个完整包时,主机视为本次传输结束。
如果你发128个数据的话,2次64数据后,建议再补发0字节数据过去。

使用特权

评论回复
地板
Cjy_JDxy|  楼主 | 2018-5-10 17:20 | 只看该作者
香水城 发表于 2018-5-10 16:58
如果你最大包长为64,当数据多余64时,分次传输,如果整个传输数据为64的整数倍时就额外加发个零字节数据包 ...

那可能我理解错了,我以为不足64要补零的。

使用特权

评论回复
5
icecut| | 2018-5-10 17:30 | 只看该作者
Cjy_JDxy 发表于 2018-5-10 17:20
那可能我理解错了,我以为不足64要补零的。

的确你理解反了.是正好64的时候,补一个空包表示结束...

香主依旧简单精炼的回答...我都忘记了..曾经也是熟悉usb的..

使用特权

评论回复
6
Cjy_JDxy|  楼主 | 2018-5-10 17:37 | 只看该作者
Cjy_JDxy 发表于 2018-5-10 17:15
谢谢!我不明白你说的如果整个传输数据为64的整数倍时就额外加发个零字节数据包是什么意思。
比如,是128 ...

我明白了

使用特权

评论回复
7
Cjy_JDxy|  楼主 | 2018-5-10 17:37 | 只看该作者
icecut 发表于 2018-5-10 17:30
的确你理解反了.是正好64的时候,补一个空包表示结束...

香主依旧简单精炼的回答...我都忘记了..曾经也是 ...

这回理解对了。

使用特权

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

本版积分规则

个人签名:绿水本无忧因风皱面,青山原不老为雪白头。

553

主题

3530

帖子

19

粉丝