реклама на сайте
подробности

 
 
> STM32 USB FS OTG
V_M_Luck
сообщение Jul 8 2011, 13:24
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 55
Регистрация: 26-11-05
Пользователь №: 11 420



Разбираюсь с USB FS OTG на STM32F107. Есть плата с STM32F107 и USB. Мне нужен только device. Что то самостоятельно по даташиту не очень получилось. Попытался запустить пример HID от ST из STM32_USB-FS-Device_Lib_V3.3.0. Не работает. Попадает пару раз в прерывание по RESET, потом в ENUMDN и все. Больше никакой активности.
Смотрел USB TRACE - host даже не пытается запрашивать дескрипторы.
Вопрос - у кого-нибудь этот пример заработал?

Извините. Нашел у себя косяк - пример заработал.

Сообщение отредактировал V_M_Luck - Jul 8 2011, 15:32
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
prottoss
сообщение Nov 7 2015, 18:41
Сообщение #2


Гуру
******

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



Продолжаю неспеша тупить с STM32. С Setup пакетами разобрался. Нужно вычитывать RX буфер сразу по приходу прерывания RXFLVL: RxFIFO non-empty.
Прикрутил свою либу верхнего уровня с реализованным протоколом USB CDC. Все работает за исключением обработки запроса от хоста SET LINE CODING.

В этом запросе две фазы.
Первая SETUP - хост присылает 8 байт собственно запрос.
Вторая DATA, где устройтсво должно принять собственно данные для установки порта - битрейт, четность и т.п. - 7 байт.
Принятие данных организовываю так же в прерывании RXFLVL. Читаю OTG_FS->GRXSTSP.
Количество байт - 7, статус - 0x02: /* OUT data packet received */. Все вроде четко. Вычитываю данные из FIFO, но вижу что данные не те, что нужно.

В чем подвох?


--------------------
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Nov 7 2015, 18:48
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(prottoss @ Nov 7 2015, 21:41) *
В чем подвох?

OTG_FS_DOEPCTL0.EPENA установлен?
Go to the top of the page
 
+Quote Post
prottoss
сообщение Nov 7 2015, 18:54
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 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 программируются сразу после вычитывания буфера.


--------------------
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Nov 7 2015, 19:02
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(prottoss @ Nov 7 2015, 21:54) *
Т.е. NAK и EPENA программируются сразу после вычитывания буфера.

Так выходит, что до получения первого пакета EPENA не установлен?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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
|- - prottoss   Цитата(aaarrr @ Nov 8 2015, 01:02) Так вы...   Nov 7 2015, 19:08
|- - aaarrr   Цитата(prottoss @ Nov 7 2015, 22:08) Так ...   Nov 7 2015, 19:29
|- - prottoss   Цитата(aaarrr @ Nov 8 2015, 01:29) EPENA ...   Nov 7 2015, 19:44
|- - aaarrr   Цитата(prottoss @ Nov 7 2015, 22:44) Не п...   Nov 7 2015, 19:47
|- - prottoss   Цитата(aaarrr @ Nov 8 2015, 01:47) Получи...   Nov 7 2015, 19:51
|- - 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 страниц V   1 2 >


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 11:03
Рейтинг@Mail.ru


Страница сгенерированна за 0.01529 секунд с 7
ELECTRONIX ©2004-2016