Hi guys,
I'm in the process of implementing a composite USB device featuring a keyboard and a mouse interface. Unfortunately, enumeration fails. I've just uploaded the code to GitHub.
I know that making this work is far from trivial, and I'd be happy to pay to an expert.
Thank you very much in advance!
- Laci
解決済! 解決策の投稿を見る。
Hi Laci,
The latest KSDK 2.0 has provided such kind of demo , you may use it as a starting point for your application. Please kindly refer to Welcome to Kinetis Expert | Kinetis Expert to get the download, and you will find that demo in the folder of, for example, C:\Freescale\SDK_2.0_FRDM-K64F\boards\frdmk64f\usb_examples\usb_device_composite_hid_mouse_hid_keyboard.
Hope that helps,
Have a great day,
Kan
NXP Technical Support
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
Hi,
Try to use this device descriptor:
uint8_t g_device_descriptor[DEVICE_DESCRIPTOR_SIZE] =
{
DEVICE_DESCRIPTOR_SIZE, /* "Device Descriptor Size */
USB_DEVICE_DESCRIPTOR, /* "Device" Type of descriptor */
0x00,0x02, /* BCD USB version */
0xEF, //DEVICE_DESC_DEVICE_CLASS,
/* Device Subclass is indicated in the interface descriptors */
0x02, //DEVICE_DESC_DEVICE_SUBCLASS,
/* Device Protocol */
0x01, //DEVICE_DESC_DEVICE_PROTOCOL,
CONTROL_MAX_PACKET_SIZE, /* Max Packet size */
0xa2,0x15, /* Vendor ID */
0x00, 0x02, /* Product ID */
0x00, 0x02, /* BCD Device version */
0x01, /* Manufacturer string index */
0x02, /* Product string index */
0x00, /* Serial number string index */
0x01 /* Number of configurations */
};
It's mean that device defined to use interface descriptors for enumeration.
More information you can find: www.usb.org/developers/docs/whitepapers/iadclasscode_r10.pdf
And also you can find the Composite Device User's Guide.pdf in KSDK doc/usb folder.
Regards,
Ruslan
Hi Ruslan,
I've tried your suggestion and it didn't work. I think the current device descriptor should be fine as it's the one used by the dev_hid_audio_bm_frdmk22f example which also implements a composite device.
Figuring this out would likely involve analyzing the USB communication between the host and device and correcting the code accordingly.
- Laci
Hi Laci,
The latest KSDK 2.0 has provided such kind of demo , you may use it as a starting point for your application. Please kindly refer to Welcome to Kinetis Expert | Kinetis Expert to get the download, and you will find that demo in the folder of, for example, C:\Freescale\SDK_2.0_FRDM-K64F\boards\frdmk64f\usb_examples\usb_device_composite_hid_mouse_hid_keyboard.
Hope that helps,
Have a great day,
Kan
NXP Technical Support
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
Hi Kan,
Thank you so much for the idea! I've just downloaded KSDK 2.0 and the mentioned demo works perfectly. The timing of the KSDK 2.0 release couldn't have been better!
I plan to add a raw HID interface to the mouse and keyboard interfaces, but as for now this is working perfectly.
All hail the KSDK developers!
- Laci