阅读:1593回复:1
一个51开发板上USB初始化枚举的问题,急求高手相助
我现在有一个AT8XC51SN1DC的学习开发板,上面有一个MP3的例程,我最近想在这个板子上开发USB AUDIO,因此还找了一些USBAUDIO的产品和资料
我想首先修改那个板子上的配置描述符为USBAUDIO的配置描述符来先让计算机将它枚举为一个USBAUDIO设备,可是这一步就出现了问题 原本例程里的设备描述符里,第7行最大包大小是0X20,那问题就是,原本最大包大小是0X20时,原程序的配置描述符刚好也是32字节,使用WriteEP函数很成功的就把配置描述符发过去了 WriteEp(0, 32, Configuration_Descriptor_All); void WriteEp(unsigned char EpNum, unsigned char nLength, unsigned char *Data) { unsigned char i=0; UEPNUM = EpNum;//指向相应端点 UEPSTAX |= DIR;//设置方向为写 while (nLength--) { UEPDATX = Data[i++];//将数据写入端点 } UEPSTAX |= TXRDY;//发送数据Sending the data,this action will switch between bank0 and bank1 while (!(UEPSTAX & TXCMP)) ;//等待发送完成 UEPSTAX &= (~(TXCMP));//清中断标志clear TXCMP } 而我现在要写的配置描述符有64字节,而我使用 WriteEp(0, 64, Configuration_Descriptor_All); 或者 WriteEp(0, 32, Configuration_Descriptor_All); WriteEp(0, 32, Configuration_Descriptor_All+32); 都没有办法成功发送,请问高手这EP0到底怎样发送2个连续的数据包? |
|
沙发#
发布于:2011-01-18 14:16
配置描述符不是想发多少个就发多少个,而是主机要求你发多少就发多少,一切得听主机的。
|
|