Using the control endpoint (EP0) to transfer data OUT to the device

Question: Using the 630xx, how to send data OUT to the device? The EP0 buffer size is 8-byte long, how to send more than 8 bytes of data OUT to the device?

 

Answer:

The 630xx has only one endpoint. By the USB spec, a device must have at least one IN endpoint. Therefore, this only endpoint must be dedicated to an IN endpoint. In order to send data OUT to the device, SET_REPORT must be used to send data over EP0 to the device. More than eight bytes can be sent by doing multiple OUTs in the data stage of a control transfer. That is, SETUP ---> OUT (8 bytes), OUT (8 bytes), SETUP---> IN (0 length status stage).