реклама на сайте
подробности

 
 
> STM32F407+USB3300 потеря пакетов isochronous, бесконечное прерывание incomplite OUT
Left Radio
сообщение Sep 28 2014, 22:06
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 48
Регистрация: 4-11-08
Пользователь №: 41 361



Всем доброго времени! Прошу подскажите куда копать уже несколько дней и бессонных ночей sm.gif никак не поедут лыжи sad.gif В общем пытаюсь запустить аудио поток по HS USB используя PHY USB3300 и STM32F407VE на своей плате, устройство определяется правильно, драйвера устанавливаются для UAC1 в Win7, и нормально видится в linux в UAC1 и UAC2, но как только устройство правильно приконектилось и пошли SOF-ы начинает вызваться прерывание Incomplete isochronous OUT (INCOMPISOOUT в регистре OTG_HS_GINTSTS), причем получаю их постоянно, одно за другим, данные по EP1 естественно при этом не идут, а по EP0 обмен с компом идет нормально (иначе бы ОС не увидело бы девайса, да и перепроверил).

Я использую OTG драйвер от ST и там в обработчике DCD_IsoOUTIncomplete_ISR только сбрасывается прерывание и все, что явно в противоречии с процедурой описанной в доке (Incomplete isochronous OUT data transfers, стр. 1205), пробовал сделать обработку прерывания как там написано, но толку с этого ноль sad.gif Никак не могу понять почему происходит потеря пакетов, код рабочий, с встроенным FS PHY все работает отлично на другой плате(естественно с реконфигурацией проекта под FS).
Железо скорее всего ни причем, так как идет нормальный обмен по EP0, корректно обрабатываются запросы на дескрипторы и на установку AltSettings 0/1. В качестве проверки запускал VCP HS на устройстве с тем же драйвером OTG от ST, правда там bulk а не isochronous, но главное что работает и работает стабильно.
Дескрипторы если нужно выложу, но мне кажется скорее всего проблема не там, и еще подскажите пожалуйста по встроенному DMA под USB HS, как его настроить и куда оно будет ложить данные? Про выравнивание при его использовании знаю, в лоб включение DMA ничего не решает, все также девайс определяется правильно но и по прежнему теряются пакеты sad.gif

Буду рад за любую подсказку, спасибо!

Сообщение отредактировал Left Radio - Sep 29 2014, 01:21
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Left Radio
сообщение Sep 30 2014, 06:13
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 48
Регистрация: 4-11-08
Пользователь №: 41 361



Нет не по таймеру, разрешены прерывания по приему OUT EP1, но вот они никогда не приходят для любых EP(переназначал EP1 на EP2-4) отличных от нулевого. Возможно ли что в HS у STM32F4 с OUT прерыванием в изохронном режиме проблемы? В errata sheet правда я ничего по этому поводу не увидел sad.gif. Может и правда нужно самому опрашивать, но насколько это будет корректно? А если конечных точек не одна, как у меня сейчас, а много?

Поставил в цикле проверять статус EP1, получаю всегда USB_OTG_EP_RX_VALID (0x3000), можно пример как в тупую, в цикле, опрfашивать EP OUT и вычитать из FIFO данные если чего то принято?

Сообщение отредактировал Left Radio - Sep 30 2014, 06:48
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 04:44
Рейтинг@Mail.ru


Страница сгенерированна за 0.01399 секунд с 7
ELECTRONIX ©2004-2016