有一份從CH554移植過(guò)來(lái)的程序,其USB功能用于模擬一個(gè)游戲手柄(Full speed設(shè)備),其設(shè)備描述符如下:
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(修改了相關(guān)的寄存器配置)之后報(bào)告"獲取設(shè)備描述符失敗".
我找了官方的例程, 模擬Full Speed設(shè)備的只有一份:
"1,CH559/CH558模擬U盤(pán),支持文件拷貝,刪除,新建,文件讀寫(xiě),格式化等操作,存儲(chǔ)介質(zhì)采用2M的SPI flash。"
在這個(gè)例程中,bMaxPacketSize0也是被設(shè)置為8. 查USB協(xié)議,Full Speed設(shè)備是可以設(shè)置為8,16,32,64的. 為何CH558無(wú)法正常運(yùn)行? 而CH554/CH552為何又可正常運(yùn)行. 求指點(diǎn).