happyandsafe 发表于 2013-10-30 09:29:16

2416 USB Device 初始化问题

如题,最近在调试S3C2416 USB Device和PC机通讯的程序。
我将2416 的USBD 作为一个模块加载到Linux内核中,然后等大约3s,板子就自动重启了,在这个过程中,PC机也能发现未知设备,但是PID和VID都是0x0。
不知道啥原因,求教各位大虾:(不太清楚我配置USBD的流程是否正确,开发板是TQ2416,和技术已经沟通过多次,无果)
先贴代码:
                *S3C2416_PWRCFG|=S3C2416_PWRCFG_USBPHY;
                *S3C2416_URSTCON|= (S3C2416_URSTCON_FUNCRST|S3C2416_URSTCON_PHYRST);
                delay_us(10);
                *S3C2416_URSTCON &= ~(S3C2416_URSTCON_FUNCRST|S3C2416_URSTCON_PHYRST);

                *S3C2416_PHYPWR=0x30;
                *S3C2416_PHYCTRL &= ~(S3C2416_PHYCTRL_CLKSEL|S3C2416_PHYCTRL_DSPORT);
                *S3C2416_PHYCTRL |= (S3C2416_PHYCTRL_EXTCLK|S3C2416_PHYCTRL_PLLSEL);

                *S3C2416_UCLKCON|= (S3C2416_UCLKCON_DETECT_VBUS|S3C2416_UCLKCON_FUNC_CLKEN);

        *USB_SCR=0;                                
        *USB_IR&=~(0xF<<0);                               
        *USB_MPR&=(0x7FF<<0);
        *USB_MPR|=(1<<3);
       

//EP1 端口配置
        *USB_ECR=0xC0;
        *USB_IR&=~(0xF<<0);                               
        *USB_IR|=(1<<0);       
        *USB_MPR&=(0x7FF<<0);
        *USB_MPR|=(1<<5);
        *USB_ECR|=(1<<6);
        *USB_EDR &= ~(1<<1);        /*In mode*/
        *USB_DCR &= ~(1<<0);
//EP2 端口配置
        *USB_IR&=~(0xF<<0);                                       
        *USB_IR&=~(1<<1);       
        *USB_MPR&=(0x7FF<<0);
        *USB_MPR|=(1<<6);
        *USB_EDR &= ~(1<<2);        /*Out mode*/

//EP3 端口配置               
        *USB_IR&=~(0xF<<0);                                       
        *USB_IR&=~(0x3<<1);       
        *USB_MPR&=(0x7FF<<0);
        *USB_MPR|=(1<<5);
        *USB_EDR &= ~(1<<3);        /*In mode*/
//EP4 端口配置               
        *USB_IR&=~(0xF<<0);                                       
        *USB_IR&=~(1<<2);       
        *USB_MPR&=(0x7FF<<0);
        *USB_MPR|=(1<<6);
        *USB_EDR |= (1<<4);        /*Out mode*/
        *USB_EIER |= (0x1F<<0);
页: [1]
查看完整版本: 2416 USB Device 初始化问题