端点地址能是一样的吗?

[复制链接]
3655|8
 楼主| 至尊宝 发表于 2011-3-25 15:14 | 显示全部楼层 |阅读模式
现在在做一个打印的东东,CPU为HOST,打印机为DEVICE,现在从打印机返回的接口描述符里返回的bnumendpoint 为2,读取两个端点的描述符为
第一个依次为: 07,05,01(输出,地址为1),02(批量),64,00
第二个依次为: 07,05,81(输入,地址为1),02(批量),64,00

请教一下,这两个端点地址怎么会一样?
打印机型号HP1020
computer00 发表于 2011-3-25 17:23 | 显示全部楼层
不一样,一个是输出端点,一个是输入端点。
 楼主| 至尊宝 发表于 2011-3-28 09:50 | 显示全部楼层
地址都为01的话怎么访问,输入端点丢掉输出格式的包?我觉得地址应该是01,82或者是81,02才合理,刚开始弄usb,圈圈再给解释一下,谢谢了
computer00 发表于 2011-3-28 10:01 | 显示全部楼层
一个是输入端点1,一个是输出端点1。
你要返回数据给主机时,往输入端点1的缓冲区写数据;
主机发送数据给你时,会写到输出端点1,你从输出端点1的缓冲区取数据就可以了。

输出端点1和输入端点1不是同一个地址,一个是用做输入的,一个是用做输出的。
 楼主| 至尊宝 发表于 2011-3-28 16:33 | 显示全部楼层
现在输入和输出的端点地址从bEndpointAddress看都是01啊?端点域不是支持16个端点么,第二个端点怎么不设成02,难道是个人爱好?:o
dqyubsh 发表于 2011-3-29 06:34 | 显示全部楼层
该补补USB协议的课了。

USB的控制端点1原本规定就是IN,OUT一起用的。分别叫BP1INBUF,BP1OUTBUF。这和2/4/6/8等端点只能定义成IN或者OUT不同。

端点0还就一个缓冲区呢,叫BP0BUF,你读它就是输入,写它就是输出。

0和1都是小端点,长度才64字节,不是用来传送大量数据的。0一般用来做控制,1呢,少量数据就可以交互传输了。

可能打印机的接口本身就是USB1.1的,那用端点1就足够了。

评分

参与人数 1威望 +1 收起 理由
至尊宝 + 1

查看全部评分

hotpower 发表于 2011-3-29 07:48 | 显示全部楼层
圈圈变质了~~~
computer00 发表于 2011-3-29 08:56 | 显示全部楼层
除了端点0不需要描述,是默认的控制端点,其它任意的端点1~15都可以描述成输入和输出两个方向。至于是否实现端点n的输入/输出功能,由芯片厂商决定。
例如D12芯片,端点1、2都可以作为输入/输出使用,因此有5个端点,控制端点0,输入端点1,输出端点1,输入端点2,输出端点2。
而有些芯片则没有实现这样的功能,例如只有端点0,输入端点1,输出端点2,输入端点3,输出端点4。

USB协议允许同一个端点号同时具备输入/输出功能。

评分

参与人数 1威望 +1 收起 理由
至尊宝 + 1

查看全部评分

 楼主| 至尊宝 发表于 2011-3-29 09:48 | 显示全部楼层
谢谢六楼dqyubsh和圈圈,结贴。好久没来21IC,试试给分,不成功就。。。。不成功吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

52

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部