请教:2410 USB device中的setup_end和data_end之间的关系?

[复制链接]
2561|1
 楼主| 电子小骑兵 发表于 2008-11-7 14:34 | 显示全部楼层 |阅读模式
看了多遍的DATASHEET,也在网上查了它们的中文翻译,但始终是云里雾里,不能想通,不直到这两个中断位具体的作用和它们之间的关系是怎样的?<br /><br />DATA_END是CPU设置的,那我设置了这个中断位有什么用呢?是不是我设置了这个位,在CPU就会自动响应控制传输的握手阶段?那么SETUP_END又是什么用的呢?很难理解这句话“set&nbsp;by&nbsp;the&nbsp;usb&nbsp;when&nbsp;a&nbsp;control&nbsp;transfer&nbsp;ends&nbsp;before&nbsp;DATA_END&nbsp;is&nbsp;set”?
 楼主| 电子小骑兵 发表于 2008-11-11 11:53 | 显示全部楼层

自问自答

可能问题比较简单,看的人不多,呵呵。我自己想了想,有了一些理解,不知对不对,把他贴出来,希望给今后象我这样的菜鸟一点参考:<br /><br />以下都是针对控制传输而言的:<br /><br />1.&nbsp;setup_end中断是出现在数据阶段结束,而握手阶段尚未开始的时候。开始我一直以为这个中断应该是USB&nbsp;HOST给CPU的,但仔细想了想,觉得还是应该是2410的USB&nbsp;DEVICE给CPU的,因为在USB的传输协议里,我找不到这个中断的具体信号。所以在2410的USB&nbsp;DEVICE里,应该有一些内置的FIRMWARE或逻辑电路来自动生成这个中断信号。<br /><br />2.data_end中断和setup_end中断是不能共存的,因为“setup_end&nbsp;is&nbsp;set&nbsp;by&nbsp;the&nbsp;usb&nbsp;when&nbsp;a&nbsp;control&nbsp;transfer&nbsp;ends&nbsp;before&nbsp;data_end&nbsp;is&nbsp;set”.<br /><br />3.控制传输的握手阶段,作为OUT型的握手是自动完成的,而且不会产生任何中断,因为0字节数据包is&nbsp;not&nbsp;a&nbsp;valid&nbsp;token&nbsp;and&nbsp;will&nbsp;be&nbsp;not&nbsp;written&nbsp;to&nbsp;the&nbsp;FIFO.<br /><br />4.data_end中断,是由CPU置位,USB清空相应位完成的,这个清空工作,同样是由USB&nbsp;DEVICE的逻辑电路来完成的。置位data_end主要有以下两个作用:<br />&nbsp;&nbsp;a.&nbsp;如果数据长度小于wLength值,但最后一次剩下的数据长度恰好等于一次传输最大数据包长度,则CPU会再向主机发送一个长度为0的数据包,以作为该数据阶段的结束。<br />&nbsp;&nbsp;b.&nbsp;&nbsp;自动应答IN型的握手阶段数据包。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

32

帖子

0

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