bch515
驱动牛犊
驱动牛犊
  • 注册日期2005-03-05
  • 最后登录2005-05-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1262回复:0

关于USB device not present的问题~

楼主#
更多 发布于:2005-05-06 15:21
各位大虾,我在用SL811做主机枚举设备时,想做一个简单的测试,发送一个SETUP包,但是无法正常发送
用的是12M的晶振
具体是:
我先进行初始化
SL811Hinit();
我把第一个SETUP包(0x80, 0x06, 0x00, 0x01, 0x00, 0x00,0x12 , 0x00 )写入SL811的缓冲区,
SL811HbufWrite( 0x10 , wbuf , 8); // SL811缓冲写, 从地址0x10开始,把wbuf中的数据写到sl811中,写8个字节
SL811Write(EP0Status, 0x90); // PID=IN(0x69), EP address 为 0 “pid << 4 | epaddr”
SL811Write(EP0Counter, 0); // USB address = 0 刚插上设备,还没有枚举和分配地址
SL811Write(EP0Address, 0x10);   //SL811 的缓冲地址,start with 0x10;
SL811Write(EP0XferLen, 0x08); //数据传输的长度: 8个字节
SL811Write(IntStatus, INT_CLEAR);//INT_CLEAR用来清除IntStatus的寄存器
SL811Write(EP0Control, 0x47); //命令字Cmd0x47启动发送。
While(true)
{
while(true)
{ // 问题出现的地方
intr = SL811Read(IntStatus);    // intr 读出来的是0x40 是device not present
if( intr & 0x01)                  // 如果USB_A_DONE ,就是发送成功
break;
}
SL811Write(IntStatus, INT_CLEAR);
result = SL811Read(EP0Status);   // 当我直接读这一步的时候,result是0x90 , STALL 和 SETUP
}

不知道,各位是否出现过相同的问题,相互探讨一下,我的Usb设备是视频摄像头,用在PC机上的是好的,但是在S3c 44b0上就是出现了device not present的问题。 急啊!!!
请各位分析一下,可能存在的问题和解决方法
游客

返回顶部