wanggang508
驱动小牛
驱动小牛
  • 注册日期2003-08-24
  • 最后登录2005-03-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1427回复:1

固件程序向上位机传输数据的问题!

楼主#
更多 发布于:2004-10-22 16:12
为什么在固件程序中:向上位机发送数据的命令的处理函数中第一次数据传输都不是在端点Tx中断处理函数中进行?为啥要先向端点写入数据然后等主机来读而不是等主机发送读取命令后再向端点写入数据?这部分说明在usb1.1协议的那一章能找到详细说明?
请各位大侠不吝赐教!!
多多交流,少走弯路!!!
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-10-22 16:44
这部分在协议中没有
原因是通常usb1.1芯片只会对ack产生中断(不管这个ack是主机还是设备产生的),但是第一次读数据时由于主机之前并没有收到数据,因此不能产生ack,所以就进不了中断!如果你的端点中没有数据,设备只会给主机返回nak,这个nak是不会产生中断的,至少d12不行,我想你用的应该是d12吧

解决的方法是你首先在tx端点中填一个包的数据,主机读取了这个包的数据后会产生ack给设备,这个ack就可以产生中断了!!!

usb2.0中不存在这种现象,因为2.0中对ack,nak都可以产生中断。
游客

返回顶部