AnsweredAssumed Answered

Cube USB lib not suitable for important feature: USB Async audio

Question asked by fourneron.jean_marc on Sep 8, 2016
Why below statements may matter: USB async audio with feedback is very important to address the different time domains: PC as host and Stm32 as device. The feedback management allows to rely on the Stm32 device clock as master clock. This is the recognize best implementation for high-end results. It is a must have.

This implementation seems especially difficult on the Stm32 with proposed libs as:
- the Stm32 has a behaviour that seems specific compared to other MCU: all pending (not completed) transfers are automatically canceled at end of frame. This is (seems) impossible to avoid in case of feedback transmit to the host. It needs dedicated low level registers management and a callback to be informed of the situation
- le usbd libraries, and especially the usbd_core don't implement important callbacks, like the:
 USBD_StatusTypeDef USBD_LL_IsoINIncomplete(USBD_HandleTypeDef  *pdev, uint8_t epnum)
{
  return USBD_OK;
}

Tsuneo Chinsei would explain this much better than me.

I believe that the usbd_core library, and possibly the usbd_audio class should be adapted to allow the (easy) implementation of Async USB with feedback:
- management of registers at low library level: if ISOIXFR occurs, the IN EP is disabled (SNAK/EPDIS) once, and re-enabled
- at least implementation of all callbacks and services needed to develop the Async audio class without modifying the usbd_core.

Best regards,

JM

Outcomes