Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Olimexino-STM32 (STM32F103RBT6) + USB + IAR 6.21
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Tarhan
Помогите, пожалуйста, разобраться как сделать так, чтобы хотя бы примеры из STM32_USB-FS-Device_Driver заработали.
У меня несколько плат Olimexino-STM32 (ссылка на описание). Поскольку они заточены под Maple (Arduino), то напрямую через USB я не перепрошиваю. Использую для прошивки ST-Link в платах STM32VLDiscovery. Простые примеры типа дергания ног и мигания светодиодами у меня работают.
А вот примеры из указанной библиотеки не работают, хоть и нормально компилируются и с сайта ST (с поправками для IAR 6.21 с исключением CMSIS из проекта, так как он уже встроен в IAR) и из папки примеров в IAR'е.
Например, пример виртуального COM порта VirtualCOMPort:
Код
int main(void)
{
  Set_System();
  Set_USBClock();
  USB_Interrupts_Config();
  USB_Init();

  while (1)
  {
    if ((count_out != 0) && (bDeviceState == CONFIGURED))
    {
      USB_To_USART_Send_Data(&buffer_out[0], count_out);
      count_out = 0;
    }
  }
}

Смотрю регистры отладчиком при старте. Регистры USB по нулям.
После Set_USBClock() в регистре USB_CNTR устанавливаются биты FRES и PDWN.
После USB_Interrupts_Config() регистры USB не изменяются (да и в исходном коде их ничто не меняет). Изменяются только в NVIC.
После USB_Init() в регистре USB_CNTR снимаются биты FRES,PDWN, устанавливаются SOFM,RESETM и CTRM. В регистре USB_ADDR устанавливается бит EF.
И все больше ничего с регистрами USB не происходит. Enumeration не производится и соответственно не комп не видит устройство. Прерывание USB_Istr вызывается только один раз, да и то видимо из USB_Init().

Подскажите, что делать.
kovigor
Цитата(Tarhan @ Mar 29 2012, 15:37) *
Помогите, пожалуйста, разобраться как сделать так, чтобы хотя бы примеры из STM32_USB-FS-Device_Driver заработали.



Примеры там гарантированно рабочие. Лично я запускал Mass-Storage на FS и на HS. Проблема в том, что эти примеры писаны под плату с МК STM32Fxxx в корпусе YYY, а у вас, например, такой же МК, но в другом корпусе, в результате линии USB приходят на совсем другие линии GPIO ...
Tarhan
Цитата(kovigor @ Mar 29 2012, 17:01) *
Примеры там гарантированно рабочие. Лично я запускал Mass-Storage на FS и на HS. Проблема в том, что эти примеры писаны под плату с МК STM32Fxxx в корпусе YYY, а у вас, например, такой же МК, но в другом корпусе, в результате линии USB приходят на совсем другие линии GPIO ...

Не знаю, я новичок. Как я указывал в заголовке темы чип STM32F103RBT6 (64-выводный корпус LQFP64). По схемам отладочной платы (ссылка на схему в PDF) USBDM подключен к 44 ноге (PA11), USBDP подключен к ноге 45 (PA12).
kovigor
Цитата(Tarhan @ Mar 29 2012, 16:19) *
Не знаю, я новичок. Как я указывал в заголовке темы чип STM32F103RBT6 (64-выводный корпус LQFP64). По схемам отладочной платы (ссылка на схему в PDF) USBDM подключен к 44 ноге (PA11), USBDP подключен к ноге 45 (PA12).


Ну вот и сравните эти данные с извлеченными из проекта ...
Tarhan
Я так понимаю, что вы хорошо знаете STM32_USB-FS-Device_Driver. Подскажите, какой файл смотреть или какие функции должны вызываться для remapping'а GPIO из примера на другие ноги нежели мои. RM0008 я сейчас штудирую, но наверное вы быстрее по памяти сможете подсказать
kovigor
Цитата(Tarhan @ Mar 29 2012, 16:44) *
Я так понимаю, что вы хорошо знаете STM32_USB-FS-Device_Driver. Подскажите, какой файл смотреть или какие функции должны вызываться для remapping'а GPIO из примера на другие ноги нежели мои. RM0008 я сейчас штудирую, но наверное вы быстрее по памяти сможете подсказать



Я просто эти проекты запускал у себя. См., кажется, usb_bsp.c -> USB_OTG_BSP_Init()
Tarhan
Пока нашел по схеме платы, что у них USB Disconnect (видимо, так как, называется DISC) подключен на ногу 53 (пин 12 порта С, по даташиту), а в примере на GPIOD Pin_9. Заменил, все заработало.... вроде. Спасибо.
Windows 7 x64 пока борется с драйвером (сам драйвер с сайта ST я скачал и установил). Но по крайней мере пока устройство уже видно
kovigor
Цитата(Tarhan @ Mar 29 2012, 17:06) *
Пока нашел по схеме платы, что у них USB Disconnect (видимо, так как, называется DISC) подключен на ногу 53 (пин 12 порта С, по даташиту), а в примере на GPIOD Pin_9. Заменил, все заработало. Спасибо.



Рад был помочь ...
glonium
Народ не могу прошить эту плату (olimexino-stm32) схема переходника приведена тут http://electronix.ru/forum/index.php?showt...t&p=1080086 но Keil говорит что "st-link is not in DFU Mode" в чём дело понять пока не могу написал простенькую моргалку в симуляторе работает а вот "пощупать в железе" не получается help.gif , помогите пожалуйста.
glonium
Вопрос снят был неправильно распаян переходник!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.