阅读:1422回复:4
做过68013的大虾进来看看,50分用户被禁言,该主题自动屏蔽! |
|
沙发#
发布于:2004-01-06 15:25
技术手册上讲:是由你所连的PC上是高速还是全速来决定
|
|
|
板凳#
发布于:2004-01-06 16:03
同意。
程序根据当前连接的总线类型决定向PC返回什么样的描述符。 确定返回的描述符。 void ISR_Highspeed(void) interrupt 0 { if (EZUSB_HIGHSPEED()) { pConfigDscr = pHighSpeedConfigDscr; pOtherConfigDscr = pFullSpeedConfigDscr; } else { pConfigDscr = pFullSpeedConfigDscr; pOtherConfigDscr = pHighSpeedConfigDscr; } EZUSB_IRQ_CLEAR(); USBIRQ = bmHSGRANT; } 返回 case GD_CONFIGURATION: // Configuration SUDPTRH = MSB(pConfigDscr); SUDPTRL = LSB(pConfigDscr); break; case GD_OTHER_SPEED_CONFIGURATION: // Other Speed Configuration SUDPTRH = MSB(pOtherConfigDscr); SUDPTRL = LSB(pOtherConfigDscr); break; |
|
|
地板#
发布于:2004-01-07 08:50
用户被禁言,该主题自动屏蔽! |
|
地下室#
发布于:2004-01-07 12:20
我认为数据还是通过EP2/EP4读写,只不过在1.1下每一个数据的大小应该为64字节,而在2.0下是512字节。
所以我认为应该 if (EZUSB_HIGHSPEED()) { pConfigDscr = pHighSpeedConfigDscr; pOtherConfigDscr = pFullSpeedConfigDscr; EP6AUTOINLENH = 0x02; EP6AUTOINLENL = 0x00; } else { pConfigDscr = pFullSpeedConfigDscr; pOtherConfigDscr = pHighSpeedConfigDscr; EP6AUTOINLENH = 0x00; EP6AUTOINLENL = 0x40; } 仅限于理论上,还没有来得及经过实践检验。请检验后告知。 |
|
|