¿Por qué usb tiene paquetes de inicio de trama?

Estoy desarrollando un firmware USB de alta velocidad para STM32F746VG , y en la página 1411 (en la sección 37.16.3, paso 2), me dice que debo habilitar el inicio de las interrupciones de cuadro.

Sé que los hosts USB envían un paquete de inicio de cuadro una vez cada 125 uS en modo de alta velocidad, pero ¿por qué mi dispositivo debe preocuparse por los paquetes SOF, además del cronometraje? ¿Qué podría hacer en una rutina de servicio de interrupción que se activaría en cada inicio de paquete de trama?

Sabrás cuándo realmente lo necesitarás :) Es una señal de sincronización, como en cualquier comunicación asíncrona.
¿Ese es su propósito principal? Entonces parece extraño que la hoja de datos me diga que "debo" habilitar la interrupción SOF.
Bueno, no voy a profundizar demasiado en la hoja de datos, pero me imagino que el controlador del host está activando la transferencia de datos una vez que se detecta SOF. Así que necesita una interrupción para eso. Es como para las transferencias DMA, a veces necesita habilitar las interrupciones de activación aunque no las vaya a manejar explícitamente.

Respuestas (1)

Creo que el inicio original de la interrupción de cuadro de 1 ms (1 kHz) fue para dar a los dispositivos una sincronización económica pero precisa. La especificación de precisión en eso es bastante estricta.

Si no necesita sincronizar con precisión, o si tiene su propio cristal, entonces no necesita saber cuándo comienzan los marcos USB. El host inicia todas las transacciones, incluso cuando envía, por lo que su hardware y firmware sabrán cuándo hacer qué.

Creé un montón de dispositivos USB y hasta ahora no he usado la detección de inicio de fotogramas. Si está utilizando una biblioteca enlatada, entonces posiblemente la biblioteca use SOF para algún tiempo interno o para saber cuándo hacer el mantenimiento. Si los documentos de la biblioteca dicen que necesita SOF, entonces necesita SOF.

@johnny_boy Por favor, no acepte la primera respuesta tan rápido. Desalienta a otros a unirse a la conversación ya que la bonificación de 'aceptar' ya está tomada. 24 horas es un tiempo razonable para ver si surgen más respuestas.
@AdamLawrence Gracias por el consejo. ¿Crees que debería rechazar la respuesta actual y ver si aparecen otras buenas como resultado, o es demasiado tarde para eso?
@johnny_boy Lo tendría en cuenta para su próxima pregunta.