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

 
 
> usb stm32f401
juvf
сообщение Apr 2 2016, 15:28
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Что то не получается USB FS поднять. Как работает USB?
1) Подключается к компу кабелем USB Device
2)устройство на шине создает эффект присутствия.
3)Комп(хост) видит что на усб кто-то появился на начинает процедуру енумерации
4)в девайсе срабатывае прерывание УСБ. Сначало сработает такое прерыванеи, на него девайс должен ответить то и то
5)потом комп сделает то и то
6).... и т.д....

У меня комп видит девайс.... в уарт выводится отладочная информация
Код
USB Device Library v1.1.0 [FS]..
DCD_HandleUsbReset_ISR..
DCD_HandleEnumDone_ISR..
USB Device Library v1.1.0 [FS]..
DCD_HandleUsbReset_ISR..
DCD_HandleEnumDone_ISR..
USB Device Library v1.1.0 [FS]..
DCD_HandleUsbReset_ISR..
DCD_HandleEnumDone_ISR..
USB Device Library v1.1.0 [FS]..
DCD_HandleUsbReset_ISR..
DCD_HandleEnumDone_ISR..
DCD_HandleUSBSuspend_ISR..
> USB Device in Suspend Mode....


и комп не может выичитать пид и вид. USB постоянно ресетиться. почему? Плата дискавери на 401-ом. Демопроект работает, а свой не могу поднять.

Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
www...
сообщение Apr 5 2016, 04:32
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 39
Регистрация: 26-10-14
Из: Екатеринбург
Пользователь №: 83 345



Компилятор Keil? Начальный код кубе генерили?
Если да, установите Heap_Size 0x400
Go to the top of the page
 
+Quote Post
juvf
сообщение Apr 5 2016, 10:21
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Цитата(www... @ Apr 5 2016, 09:32) *
Компилятор Keil? Начальный код кубе генерили?
Если да, установите Heap_Size 0x400

IAR. нет не в кубе, код взят из библиотеки STM32F401-Discovery_FW_V1.0.0. стоит cstack = 0x400, heap = 0x1000

Цитата
встаньте на отладку на то место,где происходит прием control ep0 в фазе setup
Не попадает туда код. Вот нашел отличия между рабочим кодом из демо проекта с моим.

Последовательность усб-ишных прерываний в процессоре.... в рабочем демо
Сначало происходит прерывание по флагу OTG_FS_GINTSTS.USBRST (usb rerset)
далее OTG_FS_GINTSTS.ENUMDNE
OTG_FS_GINTSTS.RXFLVL
OTG_FS_GINTSTS.RXFLVL
OTG_FS_GINTSTS.OEPINT
OTG_FS_GINTSTS.IEPINT
OTG_FS_GINTSTS.IEPINT
OTG_FS_GINTSTS.IEPINT
OTG_FS_GINTSTS.IEPINT
OTG_FS_GINTSTS.IEPINT
OTG_FS_GINTSTS.RXFLVL
....
и т.д. Нормальный обмен

Какие прерывания и в какой последовательности срабатывают при подключении усб к компу в нерабочем коде:
OTG_FS_GINTSTS.USBRST
OTG_FS_GINTSTS.ENUMDNE
OTG_FS_GINTSTS.USBRST
OTG_FS_GINTSTS.ENUMDNE
OTG_FS_GINTSTS.USBRST
OTG_FS_GINTSTS.ENUMDNE
OTG_FS_GINTSTS.USBRST
OTG_FS_GINTSTS.ENUMDNE
OTG_FS_GINTSTS.ESUSP

что не нравиться хосту? почему он постоянно ресетит девайс? Посмотрел что в обработчике на енумДан.... и в том и в том проекте один т тот же код.... вычитывает регистр GUSBCFG, выставлает в его поле usbtrdtim = 5, и записывает обратно в GUSBCFG. И там и там значения регистра одинаковы. Почему хост после опять запрашивает ресет?
OTG_FS_GINTSTS.USBSUSP


Цитата
должно сильно поспособствовать сравнение рабочего и нерабочего вариантов каким-нибудь сниффером. Я крайний раз пользовался "free usb analyzer". Не очень удобно, зато совесть чиста :-)
А как оно работает? Можно наверно под\смотреть обмен с распознанным устройством. А если устройство не распознано и его нет в дерево в окошке Devices..... как подсмотреть обмен компьютера с новым подключаемым нераспознанным устройством?
Go to the top of the page
 
+Quote Post
jcxz
сообщение Apr 5 2016, 10:34
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(juvf @ Apr 5 2016, 16:21) *
А как оно работает? Можно наверно под\смотреть обмен с распознанным устройством. А если устройство не распознано и его нет в дерево в окошке Devices..... как подсмотреть обмен компьютера с новым подключаемым нераспознанным устройством?

Сделать лог обмена на UART. Только конечно буферизованный лог - чтоб не тормозил сам обмен.
В своё время, при проблемах на фазе энумерации устройства на своём USB-стеке на L-137, мне именно только такой метод и помог.
Go to the top of the page
 
+Quote Post
juvf
сообщение Apr 5 2016, 10:44
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Цитата(jcxz @ Apr 5 2016, 15:34) *
Сделать лог обмена на UART. Только конечно буферизованный лог - чтоб не тормозил сам обмен.
В своё время, при проблемах на фазе энумерации устройства на своём USB-стеке на L-137, мне именно только такой метод и помог.
Так он у меня есть. Я этот лог в самом начале показывал..... или вернее не лог обмена, а лог срабатываний прерывани. а как получить лог обмена? Там же контроллер усб аппаратный. Вот попал в прерывание про ресету усб - это мне хост послал запрос на ресет. а что конкретно он послал? какой фрейм? чем на этот фрейм ответит процессор? как до этого обмена добраться из кода?
Go to the top of the page
 
+Quote Post
jcxz
сообщение Apr 5 2016, 10:55
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Даже аппаратный USB-контроллер сам никакие фреймы не отправляет. Всё это делаете Вы (ну или библиотека, которую Вы где-то нарыли).
Лог должен включать: какие события происходят на шине (прерывания, причина, флаги состояний и т.п.) и как Ваш код на эти события реагирует (что-то отправляет или устанавливает флаги управления и т.п.).
И дальше с этим логом и мауалом на USB Вашего МК и описанием USB-шины (я пользовался Гуком) сидеть и разбираться, что не так.
Go to the top of the page
 
+Quote Post
juvf
сообщение Apr 5 2016, 12:15
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Цитата(jcxz @ Apr 5 2016, 15:55) *
Лог должен включать: какие события происходят на шине (прерывания, причина, флаги состояний и т.п.) и как Ваш код на эти события реагирует (что-то отправляет или устанавливает флаги управления и т.п.).
Это сделано. На прерывание OTG_FS_GINTSTS.ENUMDNE одинаковая реакция в рабочем и не рабочем коде. одно и тоже пишется в регистр GUSBCFG и выход из прерывания. после, почему то, в нерабочем коде хост присылает ресет. Почему - не могу понять.

Цитата
я пользовался Гуком

Гук тольком ни чего не говорит....
Цитата
Автоматическое конфигурирование
Все устройства подключаются через порты хабов. Хабы определяют подключение
и отключение устройств к своим портам (см. главу 14) и сообщают состояние пор$
тов по запросу от контроллера. Хост своим управляющим запросом Port_Reset к
хабу выполняет сброс и разрешает работу порта (одного!), на котором обнаружено
новое подключение. При начальном подключении или после сброса устройство
находится в «дежурном» состоянии (Default State) — отзывается только на обра$
щения по основному каналу сообщений (EP0) и имеет нулевой адрес (USB Default
Address). Таким образом, обращаясь к устройству по нулевому адресу, хост взаи$
модействует только с одним новоподключенным устройством.
Port_Reset прошел.... потом прерывание енумдан. почему? хост прислал скорость? ..... далее в нерабочей проге опять ресет. а рабочей прерывание по OTG_FS_GINTSTS.RXFLVL. Почему? Как должно быть?

Где-то битик наверно в МК в ядре USB не тот стоит..... не могу понять где и какой? Почему хост постоянно ресетит девайс? Есть сниферы для USB?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- juvf   usb stm32f401   Apr 2 2016, 15:28
- - Fedor   Как работает usb можно почитать на usb.org как вар...   Apr 2 2016, 19:59
|- - juvf   Цитата(Fedor @ Apr 3 2016, 00:59) вывод о...   Apr 4 2016, 12:59
|- - romas2010   Цитата(juvf @ Apr 4 2016, 15:59) Кто нибу...   Apr 4 2016, 18:07
- - ViKo   Лучшая книга для изучения USB - Михаил Гук. Шины P...   Apr 3 2016, 06:05
- - esaulenka   Reset - это команда со стороны хоста. Виндовс при ...   Apr 4 2016, 19:14
|- - ig_z   QUOTE (esaulenka @ Apr 4 2016, 22:14) Вин...   Apr 5 2016, 11:11
|- - jcxz   Цитата(juvf @ Apr 5 2016, 18:15) Где-то б...   Apr 5 2016, 15:01
- - juvf   где можно взять рабочий пример usb device cdc для ...   Apr 6 2016, 12:44
- - juvf   Разобрался я с усб.... ЦитатаОказалось, что генер...   Apr 7 2016, 06:39


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

 


RSS Текстовая версия Сейчас: 19th June 2025 - 10:36
Рейтинг@Mail.ru


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