I am having trouble enumerating a USB device on the USB0 channel of a 6748. I receive and correctly decode the GET_DESCRIPTOR packet. My response is not recognized by the host.
I believe the problem is in writing to the TXFIFO0. In order to use the RX fifo, I had to read the data 32bits at a time (I tried declaring the RXFIFO as a char, to no effect). I assume the data written to the TXFIFO must be written as a 32bit value. What happens in the case with 18 bytes of data? I can find no register the allows me to set the TX data length in bytes.
This is my intended descriptor:
const USB_DEVICE_DESCRIPTOR DeviceDescriptor = {
sizeof(USB_DEVICE_DESCRIPTOR), /* bLength */
TYPE_DEVICE_DESCRIPTOR, /* bDescriptorType */
0x0020, /* bcdUSB USB Version 1.1 */
2, /* bDeviceClass */
0, /* bDeviceSubclass */
0, /* bDeviceProtocol */
64, /* bMaxPacketSize 64 Bytes */
0x045E, /* Test Board */
0x930A,
0x0000, /* bcdDevice */
1, /* iManufacturer String Index */
0, /* iProduct String Index */
0, /* iSerialNumber String Index */
1 /* bNumberConfigurations */
};
This is the trace data that is written to the FIFO:
78 Write Endpoint 0 Bytes-18 79 EP0-00200112 80 EP0-40000002 81 EP0-930A045E 82 EP0-00010000 83 EP0-11800100 Thanks for the help.