1) I have seen multiple examples of the a USB composite devices on the Kinetis-K series, but have not seen any examples of a composite device on the Kinetis-L series. Specifically, in the USB Stack v5.0 There is a bullet stating that there is a HW endpoint number limitation which causes the msd_cdc example to not work with the HS USB controller. Also, Table 6.1 regarding Composite Mode Demo’s not being available for the FRDM-KL25 seems to indicate there is no support:
Specifically we are looking to support. Specifically we need supoport HID (Mouse) and CDC classes.
Just to report back, we were able to get the composite examples running in the KSDK 1.1 with KDS and the new documentation that accompanied it will make it much easier to produce the composite device we need (CDC/HID).
Another question - Is anyone aware of an example or any type of support for CCID class on Kinetis? Are there any plans to add to KSDK?
The KL25 has 16 endpoints like the other devices. I use a 3 x USB-CDC<->UART composite device on the KL25 and the only possible restriction is that there is less RAM than the other devices in the table and so the UART buffers may be restriced in size.
The missing configurations in the v5.0 USB stack are presumably because they haven't been tested or the USB stack/demo uses too much RAM for the smaller devices.
I have attached an HID-mouse/CDC composite binary for the FRDM-KL25Z. There is also a *.inf there for the CDC driver installation (the HID mouse part will immediatly start working since it doesn't need a specified driver).
The mouse is controlled by the accelerometer (tilt) and can be a bit of a nuisance when installing the driver (since it tends to run away) so it can be disabled by connecting the input PTA12 (J1-8 on the FRDM-KL25Z) to GND.
Once the CDC driver is installed a connection to it connects to a command line menu with various menus in it (hit the enter key in a terminal emulator to see the menu); in the USB sub-menu there is a command to move to USB<->UART bridging mode.
In the overview/statistics sub-menu the heap and stack usage shows that there is still about 10k RAM untouched so plenty of room for somewhat more.
P.S. I used the uTasker USB stack to configure this and could simulate the operation which saves needing to do any debug work on the real HW. Mixing HID and CDC proved to be quite simple (once the composite descriptors were entered correctly). The result works on all KL and K devices with USB since there is no HW dependency in the code above the HAL (hardware abstractation layer). I built the attached binary using a standalone GCC make file (simply load by mbed bootloader) but it also builds with IAR, Keil, Atollic, CW, KDS, Crossworks, CooCox (and the uTasker VisualStudio based Kinetis simulator).