Jump to content

    
Sign in to follow this  
kostyan1

STM32F401 usb cdc кто нибудь поднимал?

Recommended Posts

Народ, кто нибудь поднимал usb cdc именно на STM32F401?

 

Есть две платы: диско429 и диско401. На диско429 отладил пример из набора STM32_USB-Host-Device_Lib_V2.1.0. Там пример идет для stm32f407, но заработало и для stm32f429 на хайспидовом usb но в режиме фулспида. Со стороны компа - libusb с двумя точками 0x01 и 0x82 для передачи приема данных. Беру ровно тот же код (ну ножки другие только буквально) и пробую запустить его на диско401. Енумерация проходит, работает приём - я принимаю от компа данные (несколько байт), посылаю в ответ посылку (тоже несколько), НО ПРЕРЫВАНИЯ ОТ ПЕРЕДАЧИ НЕ ПРОИСХОДИТ!!! Со стороны компа выхожу из кода чтения данных по таймауту в несколько секунд, а проц долбится в прерывании в коде анализа прерывания DCD_HandleInEP_ISR, где для epnum=2 бит XFRC:Transfer completed interrupt регистра OTG_FS_DIEPINT2 не встает! Хэзэ что думать - в гугле такой проблемы не нашел. HID пример для stm32f401 с эмуляцией мышки работает - так что железо вроде бы рабочее, но мне нужен cdc.

Share this post


Link to post
Share on other sites

где то в конце-середине того года была подобная тема, человек бился с неправильной работой прерываний. Но поиск по форуму ее не находит, так как ищет слова больше 3 букв...

Вроде бы там пришли к тому что какая-то ошибка контроллера и на макс скорости не запустить, попробуйте запустить на скорость ниже, имеется ввиду high speed, full speed.

 

Ну или поищите руками тему, она была больше 2 страниц, с каким то понятным названием...

 

---update---

ой все наврал... вот темы про которые я говорил... но там изохронные обмены

http://electronix.ru/forum/index.php?showtopic=123718

http://electronix.ru/forum/index.php?showtopic=112562

http://electronix.ru/forum/index.php?showtopic=123341

Share this post


Link to post
Share on other sites

Спасибо за поиск, проблема таки решилась! Искал вчера весь день рабочий пример под 401й проц и под конец осенило про стм32куб. Сегодня как раз для диско401 создал проектик цдц, как то запустил его - передача идет! Через USBLyzer обнаружил что конечные точки в проекте, полученном через куб, другие : CDC_IN_EP = 0x81, CDC_OUT_EP = 0x01, CDC_CMD_EP = 0x82.

А у меня были такие: CDC_IN_EP = 0x82, CDC_OUT_EP = 0x01, CDC_CMD_EP = 0x83. Сделал в своем проекте первый вариант, переделал libusb драйвер и заработало!

 

А то, что точки другие - обнаружил через USBLyzer! Он гадина платный и не ломанный, рега скоро кончится на него. Хоть и оффтоп - посоветуйте народ, пожалуйтса, подобный просмоторщик USB трафика бесплатный?!

 

Share this post


Link to post
Share on other sites
А то, что точки другие - обнаружил через USBLyzer! Он гадина платный и не ломанный, рега скоро кончится на него. Хоть и оффтоп - посоветуйте народ, пожалуйтса, подобный просмоторщик USB трафика бесплатный?!

Могу посоветовать USBPcap+Wireshark:

http://desowin.org/usbpcap/

https://www.wireshark.org/

Share this post


Link to post
Share on other sites
Могу посоветовать USBPcap+Wireshark:

http://desowin.org/usbpcap/

https://www.wireshark.org/

 

это только на линухе насколько я понял :(

 

упд. Неправильно видимо понял - не могу разобраться как запустить собственно. Установил и туплю.

 

упд2. Нашел инструкцию как пользовать на сайте, слона как водится не заметил, изучаю пробую...

Edited by kostyan

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this