hd44780 0 21 марта, 2014 Опубликовано 21 марта, 2014 · Жалоба Привет. Есть ли у кого? Желательно под кокос. Я попытался переделать в кейле ST-шный пример для платы STM3210C-EVAL, пока глухо. Ещё и с отладчиком там никак не разберусь. Хотя проц стирается и прошивается ... Ключ питания USB я проверил отдельно и вольтметром и светодиодиком - он адекватный. Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
hd44780 0 22 марта, 2014 Опубликовано 22 марта, 2014 · Жалоба Вот проект под кокос. Может кто глянет, почему флэшка не определяется. Подключение ключа питания: // PA8 - Fault (overcurrent) - IN // PA10 - USB Power - OUT Что меня удивляет, что в примерах всё конфигурирование USB - 2 строки: RCC_OTGFSCLKConfig(RCC_OTGFSCLKSource_PLLVCO_Div3); RCC_AHBPeriphClockCmd(RCC_AHBPeriph_OTG_FS, ENABLE); USB пины вообще нигде не конфигурятся, хотя на F4 там есть всё - и настройка порта, и AF - полный боекомплект .... И ещё. Под отладчиком в функции void USB_OTG_BSP_EnableInterrupt(USB_OTG_CORE_HANDLE *pdev) { NVIC_InitTypeDef NVIC_InitStructure; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); NVIC_InitStructure.NVIC_IRQChannel = OTG_FS_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init ( &NVIC_InitStructure ); } в функции NVIC_Init железно вылетает в DefaultHandler. Без отладчика нормально проходит (проверял светодиодиками). Спасибо. STM32F105_USB_Host_Coocox.rar Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 23 марта, 2014 Опубликовано 23 марта, 2014 · Жалоба когда подключаете флэшку, идет обмен хоста и флешки идентификационными сообщениями, у них очень строгая времянка, и выход таймаутов - отказ флешки. На отладке все идет не быстро, и возникаю паузы,может в этом дело? когда писал свое усб всю отладку внутри пришлось убрать, сбивало обмен... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
hd44780 0 23 марта, 2014 Опубликовано 23 марта, 2014 · Жалоба Спасибо, но я в курсе об этом :) В отладке я до обмена просто не дохожу из-за сбоев NVIC. Уже начинаю жалеть, что не поставил туда старый добрый F407 :( ... И ещё. Никак не могу никак понять, что такое нога ID, зачем оно надо? Код хоста смотрел, оно к ней вроде не обращается. У меня в схеме её нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 64 23 марта, 2014 Опубликовано 23 марта, 2014 · Жалоба Вывод ID определяет роль OTG. Если не вдаваться в подробности, то 0 = host, 1 = device. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
hd44780 0 23 марта, 2014 Опубликовано 23 марта, 2014 · Жалоба Спасибо, понял. А я должен на него что-то подавать, либо конфигурить его как-то? Прошёлся поиском - тьма тьмущая тем с такой же проблемой и все без конкретных решений :( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
hd44780 0 23 марта, 2014 Опубликовано 23 марта, 2014 · Жалоба Ещё одна муть голубая. В демо-примерах USB включается командами: // Select USBCLK source RCC_OTGFSCLKConfig(RCC_OTGFSCLKSource_PLLVCO_Div3); // Enable the USB clock RCC_AHBPeriphClockCmd(RCC_AHBPeriph_OTG_FS, ENABLE) ; Первого я пока не понял, а второе переводится на язык регистров следующим образом: RCC->AHBENR |= (uint32_t)0x00001000; Т.е. бит 12 выставляется единица. Но в рефмане RM0008, в п. 7.3.6 на стр. 108 этот бит находится в числе Reserved. На самом деле синхронизация влючается здесь: // APB1ENR // RCC_APB1Periph_USB = (uint32_t)0x00800000 -- bit 23 RCC_APB1PeriphClockCmd ( RCC_APB1Periph_USB, ENABLE ); т.е. RCC->APB1ENR |= (uint32_t)0x00800000; Но и это пока не помогло :crying: ... Поставил в начало main RCC_ClocksTypeDef RCC_Clocks; RCC_GetClocksFreq ( &RCC_Clocks ); В RCC_Clocks - все поля равны 8*10^6, т.е. ни хрена не настроено. Компилятор - IAR, где эти вещи всегда делались автоматом до вызова main.. Бред собачий и только. Роюсь дальше ... Или я уже с катушек съехал и ни хрена не понимаю. Кста. Прерывание USB не вызывается вообще - проверено светодиодиком. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 23 марта, 2014 Опубликовано 23 марта, 2014 · Жалоба Ещё одна муть голубая. ... Первого я пока не понял, а второе переводится на язык регистров следующим образом: RCC->AHBENR |= (uint32_t)0x00001000; Т.е. бит 12 выставляется единица. Но в рефмане RM0008, в п. 7.3.6 на стр. 108 этот бит находится в числе Reserved. Вам надо смотреть п. 8.3.6. Сочувствую. Да, и вместо USB читайте про OTG. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
hd44780 0 23 марта, 2014 Опубликовано 23 марта, 2014 · Жалоба Про регистры понял, спасибо. SystemInit вызвал руками. После этого оно слегка чихнуло. Callback USBH_USR_DeviceAttached вызвался. Как я понимаю, хост что-то увидел. Дальше - тишина... По светодиодикам вижу, что вне отладчика USBH_USR_DeviceAttached не вызывается :( Та же флэшка на F407 работает с песнями. Приложил проект на IAR. Посмотрите кто может, или проверьте у себя. stm32f105_usb_host_lib.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
hd44780 0 25 марта, 2014 Опубликовано 25 марта, 2014 · Жалоба Косяк нашёл. На ST-шной плате stm3210c-eval на проце стоит кварц 25МГц, под него сделаны все ихние примеры. А у меня на плате - 8 МГц. Поэтому и не работало. После соответствующих правок все callback-и успешно вызвались и хост/флэшка вошли в рабочий режим. Имя производителя, продукта, какой-то серийник тоже нормально считались. FatFs пока не прикручивал. Подправленные файлы Но есть один непонятный и очень неприятный момент - всё это работает только под отладкой. Без отладчика - ни фига не работает. В прошивке точек останова вообще нет. Просто захожу отладчиком, нажимаю Run - и оно работает. Никто не сталкивался с этой бедой? 1.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 119 25 марта, 2014 Опубликовано 25 марта, 2014 · Жалоба Никто не сталкивался с этой бедой?Нога BOOT0 не притянута к земле и вместо вашей программы вызывается встроенный загрузчик? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
hd44780 0 25 марта, 2014 Опубликовано 25 марта, 2014 · Жалоба Нога BOOT через 510 ом на земле. Да и вряд ли это причина. На этом же проце висит дисплей, VS1053, SD карта. Я с ними тестировал вообще без отладчика, никогда подобных проблем не видел. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 119 25 марта, 2014 Опубликовано 25 марта, 2014 · Жалоба Значит циклится где-то. Отладчик никаких дополнительных действий не делает? Ну там PLL включает или что-то подобное. На лету подключиться и посмотреть, куда его унесло нельзя? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
hd44780 0 25 марта, 2014 Опубликовано 25 марта, 2014 · Жалоба А кто его знает, делает он что или нет .. Выключил птичку "Run to main", на лету попробовал, сразу оказался в ResetHandler. Отладчик - STM32F4Discovery. Сейчас попробую в Coocox перетащить ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
hd44780 0 25 марта, 2014 Опубликовано 25 марта, 2014 · Жалоба Перенёс в кокос. Получил defaultHandler в функции static NVIC_InitTypeDef NVIC_InitStructure; void USB_OTG_BSP_EnableInterrupt(void) { /* Enable USB Interrupt */ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); NVIC_InitStructure.NVIC_IRQChannel = OTG_FS_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); } В последней строчке - на функции NVIC_Init. Если захожу туда пошагово, DefaltHandlera в ней нет, но он появляется в любой следующей функции, через которую я пытаюсь сделать StepOver. Стек - 10 кил: #define STACK_SIZE 0x00002800 /*!< The Stack size suggest using even number - 10KB */ Что за хрень такая? Замахался уже :( .... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться