roboforum.ru

Технический форум по робототехнике.

STM32F417, непонятки с конфигурированием USB

ARM7, ARM9, ARM11 etc.

STM32F417, непонятки с конфигурированием USB

Сообщение Петруччо » 12 фев 2013, 10:49

Всем привет!

Решил я значить забацать свой собственный vendor specific девайс на сабже. Раскурил RM аж дым из ушей повалил. Непонятки начались с VBUS. Устройство будет self-powered, а в RM пишут что для конф-ии:
3. Program the VBUSBSEN bit in the OTG_FS_GCCFG register to enable VBUS sensing
in “B” device mode and supply the 5 volts across the pull-up resistor on the DP line.

Вопрос: обязательно ли сие действие? На плате от starterkit VBUS выведен на отдельный пин проца, я смотрел по документации он используется для FSMC и EVENTOUT. Куда вобще этот VBUS заводится?

Пока завел 21м битом в GCCFG в режим NOVBUSSENS, т.е. внутри всегда +3.3В.
Как дальше быть-то? :unknown:

Отвечаю сам себе - все правильно сделал, VBUS'ом можно не пользоваться если не надо. В моём случае нужно только 2 сигнальных линии + хардварная подтяжка DP для коннекта.

Еще одна непонятка с STM: их бит ENUMDNEM, сигнализирующий о конце энумерации.В RM почему-то пишут что он отвечает за конец состояния USB reset
4. Wait for the USBRST interrupt in OTG_FS_GINTSTS. It indicates that a reset has been
detected on the USB that lasts for about 10 ms on receiving this interrupt.
Wait for the ENUMDNE interrupt in OTG_FS_GINTSTS. This interrupt indicates the end of
reset on the USB. On receiving this interrupt, the application must read the OTG_FS_DSTS

По сбросу понятно - инициализирую КТ0, обнуляю адрес, сбрасываю буферы приёма/передачи и т.д, это легко. Я как-то думал что он (ENUMDNEM) должен высвечивать прерывание по окончанию энумерации когда выбрана конфигурация, а по RM по этому прерыванию нужно настроить КТ0. Или не так?
Петруччо
 
Сообщения: 20
Зарегистрирован: 28 июл 2011, 11:19
Откуда: www.rcdesign.ru
прог. языки: C

Вернуться в ARM

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

cron