zyz1974
驱动小牛
驱动小牛
  • 注册日期2002-11-06
  • 最后登录2005-06-20
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:793回复:2

数据打包请教斑竹

楼主#
更多 发布于:2003-09-16 10:08
请教斑竹,通过usb接口传输的数据是如何打包的?在那里实现?是应用程序里吗?我现在遇到了问题;当在主机与设备进行数据传输的时候,每次应用程序发一个字节的时候可以实现,但要发多字节的数据时,就死机了,我理解应该是数据打包是出现了问题,该如何解决呢?谢谢
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-09-16 10:39
应该不是数据打包的问题,数据打包实在底层驱动力进行的,这层驱动是操作系统自带的,所以不会出错的,你发多少数据就会死机?
如果用的1.1,发送超过128出现死机,那就是你设备方没有把端点里的数据读走,驱动在一直等待发送剩余的数据而不返回,就好像死机了一样,如果是2.0,一般是1024,也就是两个最大包
zyz1974
驱动小牛
驱动小牛
  • 注册日期2002-11-06
  • 最后登录2005-06-20
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-09-16 15:45
可是在固件里,只要端点2里有数据就会被读走的啊,
if ( ! ( EP24FIFOFLGS & 0x02 ) )  
// if there\'s a packet in the peripheral domain for EP2
  {if(enum_high_speed)
{
     SYNCDELAY;    
          GPIFTCB1 = 0x10;  
            SYNCDELAY;
          GPIFTCB0 = 0x00;
          SYNCDELAY;
                      }
else
{
 SYNCDELAY;
 GPIFTCB1 = 0x00;
                     SYNCDELAY;
 GPIFTCB0 = 0x20;
 SYNCDELAY;
}
          Setup_FLOWSTATE_Write();
          SYNCDELAY;
        GPIFTRIG = GPIF_EP2;
        SYNCDELAY;
       while( !( GPIFTRIG & 0x80 ) )
        {
          ;
        }
        SYNCDELAY;
 }
写过程如上,这样不对吗?
游客

返回顶部