dacongtou
驱动中牛
驱动中牛
  • 注册日期2002-11-11
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1619回复:6

d12端点缓冲区太小,怎么送描述啊?

楼主#
更多 发布于:2003-02-27 10:05
我用d12的,端点0每个缓冲区只有16字节,因此有以下问题。

我收到主机传来的get descriptor命令,然后马上发送他所要求的描述符,如果是大于16字节的就直接发送16字节,等待产生control in中断,然后再将剩余的描述如此发送出去,如果此次刚好可以发送完毕则跟着送空包表示结束,如果刚才那次描述符不足16字节,则在发送完毕后跟一个空包。。。

这样对么?
flyfree
驱动牛犊
驱动牛犊
  • 注册日期2002-12-26
  • 最后登录2007-09-16
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望4点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-03-03 09:34
如果刚才那次描述符不足16字节,则在发送完毕后跟一个空包。。。

不需要!如果刚才那次描述符不足16字节,则USB协议确保HOST 能识别数据传输已完成.也就是说,不足16字节,只要发送实际数目就行了。
dacongtou
驱动中牛
驱动中牛
  • 注册日期2002-11-11
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-02-28 08:10
 :(你写的那个我知道啊,因为我就是按照那个编的啊。。可是我觉得会不会我少做了什么步骤,导致错误的出现啊?你看我数据,就会发现有点问题的啊。。
puppypyb
驱动牛犊
驱动牛犊
  • 注册日期2003-01-14
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分52分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-02-27 21:22

我还没有开始调试!所以对运行中出现的情况不是很清楚。
但是 确实是那样的。

d12固件手册上对这一过程有比较详细的描述的,在最后面几页,控制端点处理程序那部分
根据流程图和后面的那几段注释 : (原文) 由于d12的控制端点只有16字节的FIFO,如果传输的长度大于16字节,mcu在传输
阶段就必须控制数据的数量。如流程图所示。 mcu必须检查要发送到主机的当前和剩余的数据的大小。如果剩下的字节数大于
16,mcu将先发送16字节并减去参考长度(要求的长度)16。
当下一个control in标志包来到时,mcu将确定剩余的字节数是否为零,如果已经没有数据要发送,mcu需要发送一个空的包以
指示主机数据以发送完毕。

程序还设置了3种状态 IDLE 、TRANSMIT、 RECEIVE 。 表明了在下一个标志包到达时,d12将进行的相应的操作(是发数据还
是收数据)

只能说明该过程的确是这样的,  坚定思想!
ps: sys文件是二进制代码,不能看   :(
dacongtou
驱动中牛
驱动中牛
  • 注册日期2002-11-11
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-02-27 14:41
你注意看,control in的第一个字节是选择端点之后读出的一个字节,其中有一个03后面那个数不是00,是01了,也就是说那个端点缓冲区是满的,没有被主机取走啊。那是怎么回事啊。
dacongtou
驱动中牛
驱动中牛
  • 注册日期2002-11-11
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-02-27 14:37
对的 对的 ^_^


可是我觉得不对啊。

80
C0
01 21 01 34 --80 06 00 01 00 00 40 00 --12 01 00 01 DC 00 00 10
40
01 21 01 34 --00 05 02 00 00 00 00 00 --FA
02 00 41  
01 21 01 34 --80 06 00 01 00 00 12 00 --12 01 00 01 DC 00 00 10 71 04 66 06 00 01 00 00
02 00 41 00 08 00 01 FA
03 00 01  
01 A1 01 34 --80 06 00 02 00 00 09 00 --09 02 2E 00 01 01 00 60 01 FA
03 01 41  
01 41
01 21 01 34 --80 06 00 02 00 00 FF 00 -- 09 02 2E 00 01 01 00 60 01 09 04 00 00 04 DC A0
02 00 41 00 08 -------------B0 00 07 05 81 03 10 00 0A 07 05 01 03 10 00 0A
02 00 01 00 18 -------------07 05 82 02 40 00 0A 07 05 02 02 40 00 0A FA
03 00 81
01 41
puppypyb
驱动牛犊
驱动牛犊
  • 注册日期2003-01-14
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分52分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-02-27 12:10
对的 对的 ^_^
游客

返回顶部