USB_OTG в stm32

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
n_User123
Открыл глаза
Сообщения: 43
Зарегистрирован: Чт окт 08, 2009 15:00:53

USB_OTG в stm32

Сообщение n_User123 »

Пытаюсь программировать USB device на stm32f107VC

// core
OTG_FS_GAHBCFG|=OTG_FS_GAHBCFG_GINTMSK; // globalk interrupt mask
OTG_FS_GAHBCFG&OTG_FS_GAHBCFG_TXFELVL;
OTG_FS_GAHBCFG&OTG_FS_GAHBCFG_PTXFELVL;
OTG_FS_GUSBCFG|=OTG_FS_GUSBCFG_HNPCAP; // HNP
OTG_FS_GUSBCFG|=OTG_FS_GUSBCFG_SRPCAP; // SRP
OTG_FS_GUSBCFG|=OTG_FS_GUSBCFG_TOCAL5; // FS timeout calibration
OTG_FS_GUSBCFG|=OTG_FS_GUSBCFG_TRDT5; // USB turnaround time
OTG_FS_GINTMSK|=OTG_FS_GINTMSK_OTGINT; // unmask OTG interrupt
// device
OTG_FS_DCFG|=OTG_FS_DCFG_DSPD3; // device speed
// ~ non-zero-length status OUT handshake
OTG_FS_GINTMSK|=OTG_FS_GINTMSK_USBRST; // unmusk USB reset interrupt
OTG_FS_GINTMSK|=OTG_FS_GINTMSK_ENUMDNEM; // unmask enumeration done interrupt
OTG_FS_GINTMSK|=OTG_FS_GINTMSK_ESUSPM; // unmask early suspend interrupt
OTG_FS_GINTMSK|=OTG_FS_GINTMSK_USBSUSPM; // unmask USB suspend interrupt
OTG_FS_GINTMSK|=OTG_FS_GINTMSK_SOFM; // unmask SOF interrupt
OTG_FS_GCCFG|=OTG_FS_GCCFG_VBUSBSEN; // enable device (SWITCH ON PULL-UP RESISTOR)

- вот это взято из даташита (то есть переписано со слов). После чего говорят, надо дождаться прерывания по ресету. А его нет. прерывания делаю так:

NVIC_SetPriority(OTG_FS_IRQn,1);
NVIC_EnableIRQ(OTG_FS_IRQn);

и вот обработчик:

void OTG_FS_IRQHandler()
{
var=1;
OTG_FS_GINTSTS|=0xFFFFFFFF;
}

по переменной var выставляю ногу в 1 на контроллере. не работает. Что я делаю не так?

И еще. как на 25 МГц кварце сделать 48 МГц для модуля USB. у меня только 50 получилось. может из за этого не работает?
Реклама
Аватара пользователя
Satyr
Друг Кота
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

Re: USB_OTG в stm32

Сообщение Satyr »

n_User123 писал(а): И еще. как на 25 МГц кварце сделать 48 МГц для модуля USB. у меня только 50 получилось. может из за этого не работает?
:)) :))
Там десятых долей процента достаточно, чтобы ТОЧНО не работало
Реклама
Аватара пользователя
Satyr
Друг Кота
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

Re: USB_OTG в stm32

Сообщение Satyr »

И зачем голыми руками лезть ?
Чем исходники и примеры от производителя и поставщиков сред разработки не нравятся ?
n_User123
Открыл глаза
Сообщения: 43
Зарегистрирован: Чт окт 08, 2009 15:00:53

Re: USB_OTG в stm32

Сообщение n_User123 »

это получается мне нужно кварц менять?
Реклама
Эиком - электронные компоненты и радиодетали
n_User123
Открыл глаза
Сообщения: 43
Зарегистрирован: Чт окт 08, 2009 15:00:53

Re: USB_OTG в stm32

Сообщение n_User123 »

нет. пример вообще то заработал. значит можно обойтись без замены кварца. но всякими делителями умножиттелями не удалось подобрать точную частоту.
Реклама
Аватара пользователя
romazan
Потрогал лапой паяльник
Сообщения: 335
Зарегистрирован: Чт май 21, 2009 13:54:07
Откуда: Москва
Контактная информация:

Re: USB_OTG в stm32

Сообщение romazan »

n_User123 писал(а):это получается мне нужно кварц менять?
в ARM7 есть свой генератор для USB и от внешнего кварца он не зависит
Реклама
Аватара пользователя
Satyr
Друг Кота
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

Re: USB_OTG в stm32

Сообщение Satyr »

romazan писал(а):
n_User123 писал(а):это получается мне нужно кварц менять?
в ARM7 есть свой генератор для USB и от внешнего кварца он не зависит
Покажешь ? -))
И где в stm32 можно увидеть arm7 тоже интересно -))
n_User123
Открыл глаза
Сообщения: 43
Зарегистрирован: Чт окт 08, 2009 15:00:53

Re: USB_OTG в stm32

Сообщение n_User123 »

Вообще в даташите ясно указано, что USB тактируется 48 МГц. а как их сделать из 25? с множителями от 1 до 9 и 6,5 и делителями. Так прерывание завелось, просто оказалось, что оно не прописано в таблице прерываний
Аватара пользователя
Satyr
Друг Кота
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

Re: USB_OTG в stm32

Сообщение Satyr »

А зачем тебе вобще на 25 кварц понадобился ?
Классически пользуют 12, 16мгц. иногда 8.
n_User123
Открыл глаза
Сообщения: 43
Зарегистрирован: Чт окт 08, 2009 15:00:53

Re: USB_OTG в stm32

Сообщение n_User123 »

платка старткит. там уже 25 МГц. пример от кейла работает. значит не факт что кварц виноват. а если настроить на частоту 24 МГц...
Аватара пользователя
shodan
Поставщик валерьянки для Кота
Сообщения: 2087
Зарегистрирован: Чт май 24, 2012 22:47:39
Откуда: Тула
Контактная информация:

Re: USB_OTG в stm32

Сообщение shodan »

Сам ща столкнулся с подобной задачей, но интереснее, хочу сделать USB и Ethernet на STM32F107.
Закупил все включая генераторы на 25Mhz, потом вспомнил что еще и USB надо.... оказывается солюшен есть!!!

В даташите нашел раздел "A.4 USB OTG FS interface + Ethernet/I2 S interface solutions"
Там приведена конфигурация как от генератора на 25MHZ одновременно:
- запустить ядро на 72Mhz.
- затактировать PHY чип на 50Mhz.
- дать 48Mhz на USB.

Короче - полный фарш! Мозг взрывает однозначно.... :cry: :shock: :shock:
Дозиметр мало отличается от девушки, он нежный, любит чистоту, и хорошо себя чувствует только под обильным слоем лака.
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»