|
|
 |
Ответов
|
Nov 7 2015, 18:54
|

Гуру
     
Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659

|
Цитата(aaarrr @ Nov 8 2015, 00:48)  OTG_FS_DOEPCTL0.EPENA установлен? Прерывание по RXFLVL у меня построено сейчас вот так: Код static void ISRH_RxFifoNonEmpty(void) { UINT32 status = OTG_FS->GRXSTSP; /* Get the Status from the top of the FIFO */ UINT8 ep_num = ((status & OTG_FS_GRXSTSP_EPNUM_MSK) >> OTG_FS_GRXSTSP_EPNUM_POS); INT data_len = ((status & OTG_FS_GRXSTSP_BCNT_MSK) >> OTG_FS_GRXSTSP_BCNT_POS); g_EP_Desc[0].data_len = data_len; UINT8 packet_status = ((status & OTG_FS_GRXSTSP_PKTSTS_MSK) >> OTG_FS_GRXSTSP_PKTSTS_POS); switch(packet_status) { case 0x01: /* Global OUT NAK (triggers an interrupt) */ break; case 0x02: /* OUT data packet received */ if(0 == ep_num) { USBD_CTRL_STATE usbd_state = USBD_DataOut(); /* Process the setup request parse */ if(USBD_CTRL_STAGE_DATA_IN == usbd_state) /* DATA_IN stage */ OTG_FS->DIEPEMPMSK |= (UINT32)1; /* Enable TX FIFO empy intr. from EP0 */ } break; case 0x03: /* OUT transfer completed (triggers an interrupt) */ break; case 0x04: /* SETUP transaction completed (triggers an interrupt) */ break; case 0x06: /* SETUP data packet received */ if(0 == ep_num) { USBD_CTRL_STATE usbd_state = USBD_Setup(); /* Process the setup request parse */ if(USBD_CTRL_STAGE_DATA_IN == usbd_state) /* DATA_IN stage */ OTG_FS->DIEPEMPMSK |= (UINT32)1; /* Enable TX FIFO empy intr. from EP0 */ } break; default: break; } } Функции верхнего уровня: USBD_Setup() и USBD_DataOut() для чтения из RX буфера используют одну и ту же функцию чтения: Код USBD_RESULT IUSBD_EP0_Read(P_UINT8 data, INT data_len, P_INT xfer) { if(data_len > g_EP_Desc[0].data_len) data_len = g_EP_Desc[0].data_len; g_EP_Desc[0].data_len = 0; EP_OUT_FIFO_SW_Get((void *)IUSBD_FIFO_BASE, (void *)data, data_len); /* Read data from FIFO */ OTG_FS->DOEPTSIZ0 = /* Setup transfer size for ready to receive */ OTG_FS_DOEPTSIZ0_XFRSIZ(USBD_CFG_DEVICE_EP0_SIZE * IUSBD_CFG_EP0_DOEPTSIZ_STUPCNT) | OTG_FS_DOEPTSIZ0_PKTCNT | OTG_FS_DOEPTSIZ0_STUPCNT(IUSBD_CFG_EP0_DOEPTSIZ_STUPCNT); OTG_FS->DOEPCTL0 |= (OTG_FS_DOEPCTL0_CNAK | OTG_FS_DOEPCTL0_EPENA); *xfer = data_len; return USBD_RES_OK; /* OK */ } Т.е. NAK и EPENA программируются сразу после вычитывания буфера.
--------------------
|
|
|
|
|
Nov 7 2015, 19:08
|

Гуру
     
Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659

|
Цитата(aaarrr @ Nov 8 2015, 01:02)  Так выходит, что до получения первого пакета EPENA не установлен? Вот эта часть кода: Код OTG_FS->DOEPTSIZ0 = /* Setup transfer size for ready to receive */ OTG_FS_DOEPTSIZ0_XFRSIZ(USBD_CFG_DEVICE_EP0_SIZE * IUSBD_CFG_EP0_DOEPTSIZ_STUPCNT) | OTG_FS_DOEPTSIZ0_PKTCNT | OTG_FS_DOEPTSIZ0_STUPCNT(IUSBD_CFG_EP0_DOEPTSIZ_STUPCNT); OTG_FS->DOEPCTL0 |= (OTG_FS_DOEPCTL0_CNAK | OTG_FS_DOEPCTL0_EPENA); Так же исполняется по приходу прерывания USB Bus Reset. Так что точка всегда готова к приему пакетов. И, когда приходит прерывание о новом пакете, и это DATA OUT stage - количество данных в GRXSTSP верное - 7 байт. Только данные почему то не те, которые послал хост... В остальном все работает нормально. Данные по OUT BULK точке я еще принимать не пробовал. Пока хочу разобраться почему в буфере не то что передал хост.
--------------------
|
|
|
|
Сообщений в этой теме
V_M_Luck STM32 USB FS OTG Jul 8 2011, 13:24 V_M_Luck Вновь поднимаю тему.
Пример-то заработал. Но тянут... Jul 13 2011, 15:51 Forger Цитата(V_M_Luck @ Jul 13 2011, 19:51) ...... Sep 9 2012, 15:07 SviMik Ровно та же проблема, как и в последнем сообщении.... Sep 9 2012, 11:41 SviMik В моём случае, дескриптор взят из заведомо рабочег... Sep 9 2012, 16:10 aaarrr CNAK в DOEPCTL0 после обработки setup установить н... Sep 9 2012, 19:54 SviMik Вот же однако... Заработало! Плюс вам в карму,... Sep 9 2012, 22:19 aaarrr Цитата(SviMik @ Sep 10 2012, 02:19) Интер... Sep 9 2012, 22:51 SviMik Пытаюсь реализовать CDC девайс. Что получилось:
1.... Sep 17 2012, 00:32 SviMik Вомзжно, я что-то не так понял с FIFO буфферами. Е... Sep 18 2012, 00:11 MBR Цитата(SviMik @ Sep 18 2012, 04:11) Это к... Sep 18 2012, 10:49 SviMik Хорошо. Тоесть моя конфигурация выше впринципе пра... Sep 18 2012, 13:48 MBR Цитата(SviMik @ Sep 18 2012, 17:48) При э... Sep 18 2012, 14:05 SviMik Всмысле флаг прерывания? Да, как и все остальные п... Sep 18 2012, 14:27 MBR А где запись данных после отправки очередного балк... Sep 18 2012, 15:03 SviMik Всмысле? Функция hwtx() выше, вызываю её вручную, ... Sep 18 2012, 15:11 SviMik Кажется, чего-то я в этой жизни не понимаю
Из дев... Sep 18 2012, 22:30 MBR Раз все остальное вроде верно, что там в hwtx? Sep 19 2012, 14:26 SviMik (Назначение hwtx - слать Hello World. Исключительн... Sep 19 2012, 15:01 MBR Собственно, я ошибок не вижу. Я делаю все примерно... Sep 20 2012, 12:15 SviMik Я сдаюсь
Можете выложить какой-нибудь минимальный... Sep 22 2012, 22:15 NaughtyFreak Подниму тему.
Подскажите плз, все глаза стёр уже г... Feb 19 2013, 08:11 Сергей Борщ Подниму древнюю тему.
STM32F107, родной стек из ... Mar 16 2015, 09:49 Сергей Борщ Цитата(Сергей Борщ @ Mar 16 2015, 11:49) ... Mar 17 2015, 23:10 esaulenka Ещё разик подниму тему.
На эти грабли: https://my... Apr 7 2015, 09:57 johnshadow Цитата(esaulenka @ Apr 7 2015, 12:57) Ещё... Apr 8 2015, 13:57 esaulenka Рекомендацию библиотеки ST спасибо. Знать, что оно... Apr 14 2015, 10:58 Golikov A. По спецификации USB 2.0 если мы говорим о SETUP то... Apr 14 2015, 11:09 esaulenka Подумал-подумал, и окончательно запутался.
Два bu... Apr 14 2015, 12:14 Golikov A. окончанием данных служит пакет длинной меньше макс... Apr 14 2015, 12:35 Immortal_Buka Может подскажет кто:
В соответствии с вот этой шту... Sep 22 2015, 12:52 prottoss Доброго времени суток.
Тоже решил освоить STM32 OT... Oct 25 2015, 12:30 aaarrr Цитата(prottoss @ Oct 25 2015, 15:30) Дан... Oct 25 2015, 13:07  prottoss Цитата(aaarrr @ Oct 25 2015, 19:07) Хост ... Oct 25 2015, 13:37   aaarrr Цитата(prottoss @ Oct 25 2015, 16:29) Хос... Oct 25 2015, 13:46    prottoss Цитата(aaarrr @ Oct 25 2015, 19:46) Как э... Oct 25 2015, 14:17     aaarrr Цитата(prottoss @ Oct 25 2015, 17:17) Не ... Oct 25 2015, 15:18      prottoss А OTG_FS_GINTSTS_RXFLVL, как я понял из даташита, ... Oct 25 2015, 15:30       aaarrr Цитата(prottoss @ Oct 25 2015, 18:30) А O... Oct 25 2015, 15:37        prottoss Цитата(aaarrr @ Oct 25 2015, 21:37) Нет, ... Oct 25 2015, 15:44         aaarrr Цитата(prottoss @ Oct 25 2015, 18:44) 1.Ч... Oct 25 2015, 16:11          prottoss Цитата(aaarrr @ Oct 25 2015, 22:11) 1. Чт... Oct 25 2015, 16:19           aaarrr Цитата(prottoss @ Oct 25 2015, 19:19) Зач... Oct 25 2015, 16:26            prottoss Цитата(aaarrr @ Oct 25 2015, 22:26) Не зн... Oct 25 2015, 16:50             aaarrr Цитата(prottoss @ Oct 25 2015, 19:50) А ч... Oct 25 2015, 17:25         aaarrr Цитата(prottoss @ Nov 7 2015, 22:51) Но я... Nov 7 2015, 19:55          prottoss Цитата(aaarrr @ Nov 8 2015, 01:55) Перене... Nov 7 2015, 20:16           aaarrr Цитата(prottoss @ Nov 7 2015, 23:16) Спас... Nov 7 2015, 20:28           prottoss Цитата(prottoss @ Nov 8 2015, 02:16) Прав... Nov 7 2015, 20:37            aaarrr Цитата(prottoss @ Nov 7 2015, 23:37) Мне ... Nov 7 2015, 20:59             prottoss Цитата(aaarrr @ Nov 8 2015, 02:59) Уровен... Nov 7 2015, 21:06            aaarrr Цитата(prottoss @ Nov 7 2015, 23:37) ...е... Nov 7 2015, 21:15             Tarbal Цитата(aaarrr @ Nov 8 2015, 01:15) Вот не... Nov 20 2015, 15:45            Tarbal Цитата(prottoss @ Nov 8 2015, 00:37) Мне ... Nov 20 2015, 13:28 prottoss Поднял на собственном стеке HID с двумя INT точкам... Nov 20 2015, 12:26 aaarrr Цитата(prottoss @ Nov 20 2015, 15:26) Т.е... Nov 20 2015, 13:09  prottoss Цитата(aaarrr @ Nov 20 2015, 19:09) Нет, ... Nov 20 2015, 13:45   prottoss Ну и по передаче так же.
Цитата(aaarrr @ Nov... Nov 20 2015, 13:47    aaarrr Цитата(prottoss @ Nov 20 2015, 16:47) Что... Nov 20 2015, 13:50     aaarrr Цитата(aaarrr @ Nov 20 2015, 16:50) Честн... Nov 20 2015, 13:55   aaarrr Цитата(prottoss @ Nov 20 2015, 16:45) При... Nov 20 2015, 13:48    prottoss Цитата(aaarrr @ Nov 20 2015, 19:48) 64 ба... Nov 20 2015, 13:55     prottoss Размер трансфера данных задается все таки в байтах... Nov 20 2015, 13:57    prottoss Вернусь к вопросу использования DMA.
Цитата(aaarrr... Nov 21 2015, 04:41     prottoss Продолжаю потихоньку грызть OTG.
Построил USB MS... Dec 18 2015, 11:19      Шаманъ Подниму темку в связи со схожим вопросом...
Цитата... Mar 19 2017, 21:09   Tarbal Цитата(prottoss @ Nov 20 2015, 17:45) Ну ... Nov 20 2015, 13:51 aaarrr Цитата(Tarbal @ Nov 20 2015, 16:28) Ведь ... Nov 20 2015, 13:46 prottoss Цитата(aaarrr @ Nov 20 2015, 19:46) Выраз... Nov 20 2015, 13:48 Genadi Zawidowski Я эту ситуацию ловил как результат порчи FIFO из-з... Mar 20 2017, 00:43 Шаманъ Цитата(Genadi Zawidowski @ Mar 20 2017, 03... Mar 20 2017, 06:05 Genadi Zawidowski Рабочие в проекте. Проблемы если по формуле (там г... Mar 20 2017, 08:42 Шаманъ Цитата(Genadi Zawidowski @ Mar 20 2017, 11... Mar 20 2017, 10:03 Genadi Zawidowski 1) эти неиспользуемые ендпоинты инициализируются о... Mar 20 2017, 12:56 Шаманъ Цитата(Genadi Zawidowski @ Mar 20 2017, 15... Mar 20 2017, 15:03 controller_m30 У меня был похожий случай недавно (на USB CDC), чт... Mar 20 2017, 14:01 Genadi Zawidowski Добавлю - особенно хорошо проявляются такие забыты... Mar 20 2017, 14:09 Genadi Zawidowski Дополнил инициализацию отладочной печатью:
Кодv1=0... Mar 20 2017, 17:38 Шаманъ Цитата(Genadi Zawidowski @ Mar 20 2017, 20... Mar 20 2017, 19:05 Genadi Zawidowski Цитатано в заголовочном файле была ошибка
В студию... Mar 20 2017, 19:06 Шаманъ Цитата(Genadi Zawidowski @ Mar 20 2017, 22... Mar 20 2017, 19:52 Genadi Zawidowski Вот версия с внутренним генератором, теоретически ... Mar 20 2017, 20:01 Шаманъ Народ, я тут всех поставил на уши, а потом подключ... Mar 20 2017, 20:38 Alechek Цитата(Шаманъ @ Mar 21 2017, 01:38) Народ... Mar 21 2017, 03:52 Genadi Zawidowski Попробуй мой тест на XP - у меня работало (термина... Mar 20 2017, 20:40 Шаманъ Цитата(Genadi Zawidowski @ Mar 20 2017, 23... Mar 20 2017, 21:04 Genadi Zawidowski На одном из двуз компортов - Kenwood CAT. На объем... Mar 20 2017, 21:16 Шаманъ Цитата(Genadi Zawidowski @ Mar 21 2017, 00... Mar 21 2017, 14:32 Шаманъ Цитата(Genadi Zawidowski @ Mar 21 2017, 00... Mar 21 2017, 04:20 Шаманъ XP таки была "новая" в смысле XP SP3 Mar 21 2017, 05:28 Genadi Zawidowski Спасибо. На какой операционной системе проверялось... Mar 21 2017, 14:45
2 страниц
1 2 >
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|