I am trying to get my microncontroller to enumerate as CDC class device (virtual com port).
Device enumeration fails, debugging the USB signals with an analyzer revealed that the handshake packet of the GET_DESCRIPTOR Setup Transaction is not sent.
I get RESET, SLEEP, and SOF Interrupts correctly, but no TOKDNE. Things I checked are:
- endpoint 0 configuration register (gets set by software, seems correct)
- clock: 48MHZ on USB_CLKIN pin (crystal is an Abracon ASDMB-48.000MHZ-LC-T)
- USBPLL is bypassed (external)
- USB Voltage regulator is enabled (VREGIN connected to 3.3V, can measure 3.3V on VOUT33)
If I understand the documentation correctly, the TOKDNE should be generated after the handshake packet has been sent back to the host, which suggests some kind of configuration error.
Following things come to mind as a problem, but I don't know how to check them:
- USB clock not stable enough
- transceiver hardware broken
- hardware bug, commenting out source code lines related to http://cache.freescale.com/files/microcontrollers/doc/errata/KINETIS_3N96B.pdf didn't have any effect though
Edit: connecting the 48 MHz Clock source to EXTAL1 and using the PLL1 to generate 96MHz, with USB clock divider set to 2 (selected USB Divider output for Module clock) did not help either