我有一個HID Report Descriptor(如附件1),在F/W已經build in在C8051F347中...
若main函式(附件4)裡將for loop拿掉且把Device(C8051F347)插入Host就會出現"無法辨識裝置"
反之,若沒有把for loop拿掉,把Device(C8051F347)插入Host就會出現"找到新的硬體可以使用"等訊息..
如果於Host再打開AP它會自動進行In & Out 動作...
因此,我想請問的是
1.沒有Report ID的HID Report Descriptor,該如何做IN/OUT控制呢??
2.為何在main中少了for loop就出現"無法辨識裝置"??
3.我並沒有在IN_PACKET或OUT_PACKET進行任何更新動作,那為何AP打開時Host與Device間會自動進行In & Out 動作??
我是使用Mouse Example進行修改
附件1:HID Report Descriptor
0x06,0xFF,0xFF, // USAGE PAGE(Vendor Define Page)
0x09,0x01, // USAGE(Vendor Usage 1)
0xA1,0x01, // COLLECTION(Application)
0x09,0x02, //
0x09,0x03, //
0x15,0x00, // Logical Minimum(0)
0x26,0xFF,0x00, // Logical Maxmum(255)
0x75,0x08, // Report Size(8)
0x95,0x40, // Report Count(64)
0x81,0x02, // Input(Data,Var,Abs)
0x09,0x04, //
0x09,0x05, //
0x15,0x00, // Logical Minimum(0)
0x26,0xFF,0x00, // Logical Maxmum(255)
0x75,0x08, // Report Size(8)
0x95,0x40, // Report Count(64)
0x91,0x02, // Output(Data,var,Abs)
0x09,0x06,
0x09,0x07,
0x15,0x00, // Logical Minimum(0)
0x26,0xFF,0x00, // Logical Maxmum(255)
0x75,0x08, // Report Size(8)
0x95,0x04, // Report Count(4)
0xB1,0x02, // feature(Data,var,Abs)
0xC0, // End Collection (Application)
附件2
evice Class
EP0 Control In/Out 8bytes
EP2 Interrupt Out 64bytes
EP1 Interrupt IN 64bytes
附件3
evice <-> Host
C8051F347<->Host
附件4:main程式
void main()
{
unsigned char i;
system_Init();
usb0_init();
EA=1;
for(i=0;i<300;i++)
{
}
}