LINUX.ORG.RU

История изменений

Исправление Stanson, (текущая версия) :

DTS я не припоминаю ни в стандарте USB, ни в регистрах контроллера

Data Toggle Synchronization - в стандарте оно так называется.

но как раз в изохронном режиме они не меняются.

Поэтому и спрашиваю - не переключает ли он его вручную из-за этого. DTS бит в STM32 (DTOG) ещё и рулит переключением буферов. В изохронном режиме приезжают только пакеты c DATA0, но бит всё равно автоматически переключается железом после каждого пакета, и если ТС его ещё раз переключает самостоятельно, полагая что раз всегда DATA0, то буфера не будут переключаться как в других режимах, то STM32 будет писать в один и тот же буфер, что и будет приводить к описанной ТСом проблеме - воспроизводит он из двух буферов, а USB peripheral пишет только в один. Каждый второй пакет будет «пропадать».

Исправление Stanson, :

DTS я не припоминаю ни в стандарте USB, ни в регистрах контроллера

Data Toggle Synchronization - в стандарте оно так называется.

но как раз в изохронном режиме они не меняются.

Поэтому и спрашиваю - не переключает ли он его вручную из-за этого. DTS бит в STM32 (DTOG) ещё и рулит переключением буферов. В изохронном режиме приезжает только пакеты c DATA0, но бит переключается железом, что упомянуто мельком, и если ТС его переключает, полагая что раз всегда DATA0, то буфера не будут переключаться как в других режимах, то STM32 будет писать в один и тот же буфер, что и будет приводить к описанной ТСом проблеме - воспроизводит он из двух буферов, а USB peripheral пишет только в один. Каждый второй пакет будет «пропадать».

Исходная версия Stanson, :

DTS я не припоминаю ни в стандарте USB, ни в регистрах контроллера

Data Toggle Synchronization - в стандарте оно так называется.

но как раз в изохронном режиме они не меняются.

Поэтому и спрашиваю - не переключает ли он его вручную из-за этого. DTS бит в STM32 (не помню, как он в STM32 называется - DOG или DTOG, как-то так) ещё и рулит переключением буферов. В изохронном режиме приезжает только пакеты c DATA0, но бит переключается железом, что упомянуто мельком, и если ТС его переключает, полагая что раз всегда DATA0, то буфера не будут переключаться как в других режимах, то STM32 будет писать в один и тот же буфер, что и будет приводить к описанной ТСом проблеме - воспроизводит он из двух буферов, а USB peripheral пишет только в один. Каждый второй пакет будет «пропадать».