liumda
驱动小牛
驱动小牛
  • 注册日期2002-01-23
  • 最后登录2012-07-16
  • 粉丝0
  • 关注0
  • 积分76分
  • 威望48点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
阅读:999回复:0

调试远锋44B0开发板USBN9603时遇到的问题,请高手指点!

楼主#
更多 发布于:2004-03-03 12:41
我是去年从远锋公司买的44B0开发系统,由于囊中羞涩,没有购买他们的USB部分的源码(他们提供的USB源码是需要另外购买的,真是不爽!);现在在调试USB的过程中我遇到了一些问题,还请各位DX帮助。
我的部分源代码如下(硬件采用的是Non-Multiplexed parallel 模式):

void __irq Eint0Isr(void)
{
  rI_ISPC=rI_ISPC | BIT_EINT0;   //清中断
  rINTMSK = rINTMSK | BIT_EINT0; //关中断
  evnt=read_usb(MAEV);
  Uart_Printf("\n MAEV=x",evnt);
  if(evnt&RX_EV)
  {
    evnt=read_usb(RXEV);
    if(envt&RXFIFO0)
       rxevent_0();
       .....

   }
   else if(evnt&TX_EV)
   {
      ......
   }
   else if(evnt&ALT)
     usb_alt();
   else if(evnt&NAK)
   {
    ....
   }
   rINTMSK = rINTMSK & (~BIT_EINT0);  //开中断
}

void Init_usb(void)
{
  status_GETDESC=0;
  usb_cfg=0;
  write_usb(MCNTRL,SRST);
  write_usb(MCNTRL,VGE+INT_H_P);
  write_usb(CCONF,CODIS+0x0c);
  write_usb(FAR,AD_EN+0);
  write_usb(EPC0,0X00);
  write_usb(NAKMSK,NAK_O0);
  write_usb(TXMSK,TXFIFO0+TXFIFO1+TXFIFO2+TXFIFO3);
  write_usb(RXMSK,RXFIFO0+RXFIFO1+RXFIFO2+RXFIFO3);
  write_usb(ALTMSK,SD3+RESET_A);
  write_usb(MAMSK,INTR_E+RX_EV+NAK+TX_EV+ALT);
  FLUSHTX0;
  Delay(2);
  write_usb(RXC0,RX_EN);
  write_usb(MCNTRL,VGE+INT_L_P+NAT);
  write_usb((NFSR,OPR_ST);
}

void write_usb(uchar addr,uchar dat)
{
  (*(volatile unsigned char *)0x06000002)=addr;
  (*(volatile unsigned char *)0x06000000)=dat;
}

void read_usb(uchar addr)
{
  (*(volatile unsigned char *)0x06000002)=addr;
  return (*(volatile unsigned char *)0x06000000);
}

我的问题如下:在初始化完了9603以后,打开中断,程序就一直响应中断,并且MAEV一直输出是0x02;PC可以检测到有设备插入,但不能够完成枚举,提示是"unknown
devise"。

这个问题已经困扰我很久,一直没有搞定,请各位DX帮忙看一下,先谢谢了!
You Happy,So I Happy!
游客

返回顶部