阅读:999回复:0
调试远锋44B0开发板USBN9603时遇到的问题,请高手指点!
我是去年从远锋公司买的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帮忙看一下,先谢谢了! |
|
|