阅读:1389回复:11
高手们来帮忙阿(isp1581)
我做好固件程序了,但是现在设置好isp1581的寄存器后,能够接到多次busreset中断,每次都很多,大家看看我的寄存器设置,看看有什么问题
void Init_D14_SFR(void) { //enable Global Interrupt enable //enable soft connect and other feature //enable wakeup on chip select //disable soft connect //设置模式:时钟始终有效,全局中断使能,片选唤醒 Usb_driver_wr(0x0c,0x8); //set all interrupt source to mode 1 //设置全部中断为模式1,电平触发,低电平有效 Usb_driver_wr(0x10,0x62); Usb_driver_wr(0x14,0x3901); Usb_driver_wr(0x16,0x0000); } 特别是jinghuiren,请帮我看看啊,我发给您程序了 |
|
沙发#
发布于:2004-07-24 17:04
我用的是dsp 5409 16位总线,所以寻址的时候只对14和16两个地址操作就能够对中断enable置位了,不象单片机8位的,
而且先阶段只是初始化,对0ch地址写入08,还没有连接usb Usb_driver_wr(0x0c,0x8);所以,没有问题吧 现在我用bushond捕捉到下面的情况,好像到GET DESCRIPTOR没反应 高手帮我看看,到那个步骤了?大概是什么出问题了? 13.1 DI . 1.1.0 13.0 CTL a3 00 00 00 01 00 04 00 GET STATUS 2.1.0(2) 13.0 DI 01 01 01 00 .... 2.2.0 13.0 CTL 23 01 10 00 01 00 00 00 CLEAR FEATURE 4.1.0 13.0 CTL a3 00 00 00 01 00 04 00 GET STATUS 5.1.0(2) 13.0 DI 01 01 00 00 .... 5.2.0 13.0 CTL 23 03 04 00 01 00 00 00 SET FEATURE 7.1.0 13.1 DI 02 . 8.1.0 13.0 CTL a3 00 00 00 01 00 04 00 GET STATUS 9.1.0 13.0 DI 00 01 10 00 .... 9.2.0 13.0 CTL 23 01 14 00 01 00 00 00 CLEAR FEATURE 10.1.0 13.0 CTL a3 00 00 00 01 00 04 00 GET STATUS 11.1.0 13.0 DI 00 01 00 00 .... 11.2.0 13.0 CTL 80 06 00 01 00 00 40 00 GET DESCRIPTOR 12.1.0 13.0 USTS 05 00 00 80 no response 12.2.0 13.0 CTL a3 00 00 00 01 00 04 00 GET STATUS 13.1.0 13.0 DI 00 01 00 00 .... 13.2.0 13.0 CTL 80 06 00 01 00 00 40 00 GET DESCRIPTOR 14.1.0 13.0 USTS 05 00 00 80 no response 14.2.0 13.0 CTL a3 00 00 00 01 00 04 00 GET STATUS 15.1.0 13.0 DI 00 01 00 00 .... 15.2.0 13.0 CTL 80 06 00 01 00 00 40 00 GET DESCRIPTOR 16.1.0 13.0 USTS 05 00 00 80 no response 16.2.0 13.0 CTL 23 01 01 00 01 00 00 00 CLEAR FEATURE 17.1.0 13.0 CTL a3 00 00 00 02 00 04 00 GET STATUS 18.1.0 13.0 DI 00 01 00 00 .... 18.2.0 |
|
板凳#
发布于:2004-07-25 10:25
谢谢,我已经连上usbconnect了,0c->1,
已经有usb的图表了,但是我现在能够收到很多次busreset中断,我感觉就不太对了吧,别的中断没有啊,一直都是这个 |
|
地板#
发布于:2004-07-25 16:27
对的,我是在isr的中断子程序中将connectsof置1了
但是没有重新写0,再写1,周立功的程序,和philips公司的程序都是这样做的, if(USB_Int_Flag.BITS.RESET) { //清除总线复位中断位 USB_Int_Flag.BITS.RESET = 0; //设置总线复位标志 Kernel_Flag.BITS.Bus_Reset = 1; PIO_Count = 64; //切换到全速模式 HS_FS_LED = FULL_SPEED_LED; Kernel_Flag.BITS.HS_FS_State = FULL_SPEED; //初始化ISP1581 Init_D14(); //设置softconnect D14_Cntrl_Reg.D14_MODE.BITS.SOFTCT = 1; } 您看看是什么问题啊? |
|
地下室#
发布于:2004-07-25 21:09
非常感谢metalwing
我找到了问题了,是我在busreset中断中对softconnect进行从新赋值,并不是做与操作,导致softconnect断开,所以再联上的时候又受到busreset中断,现在能够枚举成功了,下一步好好的消化程序,然后编写驱动,能不能指导一下如何进行数据传输,如何写驱动,放分啦 |
|