Jump to content

    

kkmspb

Новичок
  • Content Count

    4
  • Joined

  • Last visited

Community Reputation

0 Обычный

Контакты

  • Сайт
    Array
  1. USB_STM32F4

    Алилуя! Разобрался с NAK . Все заработало как надо ! У меня особый вариант был : изначально был взят HAL Custom HID шаблон , и его постепенно превращали в RNDIS. Заодно и изучали USB потроха. И таки получилось. В принципе HAL не так уж плох, косяков в результате там не нашел (как ни странно). malloc понятно убрал. Спасибо всем! Смысл оказался таким как только запускаешь прием команды по EP OUT (BULK) , контроллер (именно USB) сам выставляет NAK( 1) по прилету первого прерывания RXFLVL (не OEPINT). Потом его (NAK) надо не забывать сбрасывать, что HAL и делает (в USB_EPStartXfer [по приему]). Если не сбрасывать получается нормально задержка , в результате которой можно спокойно обработать команду и все будет гут. в это время хосту будет отдаваться NAK по EP OUT. То есть надо просто отложить вызов USBD_LL_PrepareReceive на нужное время и все. Что мне не нравится - чтобы понять эту простую казалось бы вещь надо все-таки въезжать в регистры. А это не один день мягко говоря... (но зато на всю жизнь - такое не забывается)
  2. USB_STM32F4

    Абсолютно согласен. Также уже дошел , что надо FreeRTOs вариант static использовать. Но на данный момент бьюсь с вопросом - как и когда посылать NAK в ответ хосту на команды (по протоколу RNDIS) и надо ли посылать... Дело в том , что после инициализации RNDIS адаптера c ПК (win10) идет первая команда на EP3 (OUT) . Это чаще широковещательный запрос FF FF FF FF FF FF<- 00 00 00 00 00 00. Но далее не дожидаясь ответа от девайса хост продолжает слать другие команды. Вот и думаю как использовать NAK в ответе на первую команду хоста , чтобы хост подождал. А то получается , что переданные команды накапливаются , но мне кажется это не правильно.
  3. USB_STM32F4

    Бьюсь с LRNDIS на STM32F205VG под Atollic True Studio. Исходный пример с гитхаба от Cергея Фетисова работает (без FreeRTOS) вполне нормально. На FreeRTOS пока не до конца понял как сделать. Но по-поводу usbd_rndis_data_out : у вас по какому EP не срабатывает?