有一份从CH554移植过来的程序,其USB功能用于模拟一个游戏手柄(Full speed设备),其设备描述符如下:
UINT8C DevDesc[18] = // -> usb_device_descriptor
{ 0x12, 0x01,
00, 02, //0x10,0x01,
0x00, 0x00, 0x00, // bDeviceClass, bDeviceClass, bDeviceProtocol
64, // bMaxPacketSize0
0x0d, 0x0f, 0xad, 0x00, 0x00, 0x01, //0x3d,0x41,0x07,0x21,0x34,0x12, // VID,PID,REV
01, 02, 00,
0x01
};
这份代码在554上工作是正常的. 移植到CH558(修改了相关的寄存器配置)之后报告"获取设备描述符失败".
我找了官方的例程, 模拟Full Speed设备的只有一份:
"1,CH559/CH558模拟U盘,支持文件拷贝,删除,新建,文件读写,格式化等操作,存储介质采用2M的SPI flash。"
在这个例程中,bMaxPacketSize0也是被设置为8. 查USB协议,Full Speed设备是可以设置为8,16,32,64的. 为何CH558无法正常运行? 而CH554/CH552为何又可正常运行. 求指点.