qing_qing
驱动牛犊
驱动牛犊
  • 注册日期2004-02-25
  • 最后登录2005-01-13
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:1175回复:0

SL811hs枚举的问题(含程序)请教

楼主#
更多 发布于:2004-08-20 16:25
小生的硕士毕业论文做的是DSP+SL811hs+U盘用于在线数据处理、存储,遇到了几个问题向你请教。
我参考的是EZ-USB的源程序,主程序框架为:
1、 初始化SL811hs(使能中断检测,清空中断状态寄存器),并进入主循环;
2、 插入U盘后产生中断,在中断服务程序中进行速度检测,判断是Low Device 还是 Full Device并分别进行初始化,然后执行:
SLAVE_ENUMERATED = FALSE;
SL811Write(EP0Status, 0x50);       // Setup SOF Token, EP0
SL811Write(EP0Counter, 0x00);      // Reset to zero count
SL811Write(EP0Control, 0x01);      // start generate SOF or EOP
Delay(25);                       //delay 25ms
SL811Write(IntStatus, INTCLEAR);  // Clear Interrupt status
return 0;
3、 在主循环中根据SLAVE_ENUMERATED = FALSE决定是否枚举和配置。

现在的问题是:插入U盘可以产生中断,检测为全速设备,但当执行到上面2中的
SL811Write(EP0Control, 0x01);      // start generate SOF or EOP
Delay(25);                       // delay 25ms
时,再次发生中断,读取IntStatus的值为0x90,系统为超时,然后程序进入主循环,枚举开始,之后一直发生超时。设置TUMEOUT_RETRY 为多少次,就发生多少次超时。
我不知道是什么原因,请各位大侠指点。 在此先多谢了。
游客

返回顶部