schlei
驱动牛犊
驱动牛犊
  • 注册日期2003-02-20
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1198回复:2

usb的bulk传输问题!

楼主#
更多 发布于:2003-09-12 22:35
   我想问一下各位侠:用户应用程序发出读数据命令,使用IOCTL_EZUSB_BULK_READ命令从IN2BUF读数据时,是不是产生ISR_Ep2in中断,我的数据是由PA口和PB口输入的,那么我是不是要在ISR_Ep2in中断服务程序中将由PA口和PB口传入IN2BUF?可为什么我每次去读IN2BUF的时候,都会死机,原因应该是数据还没有写入IN2BUF,为什么?难道不应该在ISR_Ep2in中断服务程序中将由PA口和PB口传入IN2BUF?请高手指点一二!
schlei
驱动牛犊
驱动牛犊
  • 注册日期2003-02-20
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-09-17 10:30
衷心感谢jinghuiren前辈的指点,我想可能是我的应用程序的问题,看来还需要好好查查资料,才能解决,不过我相信只要努力,问题一定会解决的,再次对jinghuiren前辈表示感谢!
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-09-13 11:46
你打开该中断了吗?固件里的下面这一行是打开中断用的。
USBIE |= bmSUDAV | bmSUTOK | bmSUSP | bmURES | bmHSGRANT;   // Enable selected interrupts

都会死机好像比较严重,会不会是你应用程序或驱动出了问题,及时你读不到数据也不应该死机的,最多pending而已,也就是打不开设备了,断一次电就可以重新使用了

你可以在你说的isr函数里把数据写入buf,也可以在td_poll()函数里用查询状态标志的方式进行,例如:  if(!(EP2468STAT & bmEP2EMPTY))//查询端点2是否有数据

只是这种情况你有可能会丢失部分数据,还有你从pa和pb口送数据要判断端点状况,否则数据会丢失的
游客

返回顶部