阅读:1176回复:0
SL811hs枚举的问题(含程序)请教
小生的硕士毕业论文做的是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 为多少次,就发生多少次超时。 我不知道是什么原因,请各位大侠指点。 在此先多谢了。 |
|