Xenia 45 11 февраля, 2020 Опубликовано 11 февраля, 2020 · Жалоба 7 минут назад, GenaSPB сказал: OTG_HS это второй контроллер. Для FS режима встроенный интерфейсный блок (как и в OTG_FS). Требуется те же 48 МГц. Я вас поняла. Вы считаете, что у меня проект написан для HS, и потому он не работает. Дальше вопросы, связанные с HS, я обсуждать не хочу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 11 февраля, 2020 Опубликовано 11 февраля, 2020 · Жалоба Нет я не считаю. USB_OTG_HS это название периферийного блока который МОЖЕТ при наличии дополнительной аппаратуры работать в HS режиме. На обсуждаемой плате он напрямую подключен к разъёму и потому его надо использовать в FS режиме. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Xenia 45 11 февраля, 2020 Опубликовано 11 февраля, 2020 · Жалоба 1 минуту назад, GenaSPB сказал: Нет я не считаю. USB_OTG_HS это название периферийного блока который МОЖЕТ при наличии дополнительной аппаратуры работать в HS режиме. На обсуждаемой плате он напрямую подключен к разъёму и потому его надо использовать в FS режиме. Тогда на чем основаны ваши подозрения, что я использую его в HS режиме? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 11 февраля, 2020 Опубликовано 11 февраля, 2020 (изменено) · Жалоба У меня есть подозрения, что на плате 429DISCO Вы используете периферийный блок USB_OTG_FS в FS режиме. В приложении проект сделанный CubeMX 4.26.1 - Там и HEX. опознается. DISCO429_USB_VCP.zip Изменено 11 февраля, 2020 пользователем GenaSPB demo Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Eddy_Em 2 12 февраля, 2020 Опубликовано 12 февраля, 2020 (изменено) · Жалоба 10 hours ago, Xenia said: Может кто поделится примером проектика, чтобы USB CDC девайс определялся? Да запросто. Если под F103, то вот: CDC, HID и эмуляция PL2303. Но предупреждаю: при больших потоках входных данных оно дохнет. Собственно, эту тему я и создал в надежде, что мне помогут понять, как сделать правильно. STM32F4 у меня есть, но они слишком уж сложные, до них я еще не добрался. Хотя бы по-человечески F0 и F1 осилить. Без калокубов и прочего дерьма. И вам, кстати, Ксения, крайне не советую в калокубы влезать! 9 hours ago, aaarrr said: Read-modify-write cycles on these registers should be avoided Ну, тогда получается, что на STM32 вообще с USB невозможно работать... Изменено 12 февраля, 2020 пользователем Eddy_Em Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 12 февраля, 2020 Опубликовано 12 февраля, 2020 · Жалоба 53 minutes ago, Eddy_Em said: Ну, тогда получается, что на STM32 вообще с USB невозможно работать... Возможно. Читать для изменения состояния эти регистры действительно ни к чему. У себя на приеме делаю так: сброс CTR -> чтение буфера -> [сброс NAK]. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Eddy_Em 2 12 февраля, 2020 Опубликовано 12 февраля, 2020 · Жалоба Почитаю вечером даташит на МК. Возможно, поможет переделывание макросов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Xenia 45 12 февраля, 2020 Опубликовано 12 февраля, 2020 · Жалоба 15 часов назад, GenaSPB сказал: У меня есть подозрения, что на плате 429DISCO Вы используете периферийный блок USB_OTG_FS в FS режиме. В приложении проект сделанный CubeMX 4.26.1 - Там и HEX. опознается. DISCO429_USB_VCP.zip Да, именно в FS-режиме я его и намерена использовать. А что здесь не так? Смотрю на схему STM32F429I-DISCO и вижу, что на тот разъем выведен именно FS, а не HS. Привожу на картинке это место схемы крупным планом: Это распайка того самого разъема USB_OTG. Причем на полной схеме встречается только "OTG_FS", а слова "OTG_HS" на ней нет нигде. Так с какого бодуна я должна CDC под HS писать, если даже на схеме его нет? Вот и предложенный вами проект DISCO429_USB_VCP снова написан под HS, а не под FS. И на это я пожаловалась с самого начала: на схеме и в описании написано, что доступен только OTG_FS: Цитата 4.6 USB OTG supported The STM32F429ZIT6 is used to drive only USB OTG full speed on this board. Тогда как Eхample Project для CDC написаны сплошь под режим HS. И проект DISCO429_USB_VCP в том числе. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 12 февраля, 2020 Опубликовано 12 февраля, 2020 (изменено) · Жалоба Ксения. На моей 429 disco этот проект работает. Отнеситесь со внимани4м к этому. Еще раз usb_otg_hs периферийный блок в fs режиме. Откройте даташит и там посмотрите к какому блоку прибит гвоздями PB14 например. 62 страница даташита на процессор. Качать тут https://www.st.com/resource/en/datasheet/stm32f429ii.pdf Изменено 12 февраля, 2020 пользователем GenaSPB Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
controller_m30 1 12 февраля, 2020 Опубликовано 12 февраля, 2020 · Жалоба В 09.02.2020 в 17:23, Eddy_Em сказал: Как все-таки правильно делать CDC на STM32? Очень ускоряет разработку просмотр данных на USB-шине логическим анализатором. Копеечный клон Saleae Logic на Cy7c68013a, плюс программа анализатора с оф.сайта, умеющая разбирать LS\FS USB протокол. И тогда при отладке будет ясность, что именно и в какой момент идёт не так. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Eddy_Em 2 12 февраля, 2020 Опубликовано 12 февраля, 2020 · Жалоба Обнаружил, почему возникал зависон иногда при отправлении больших потоков данных: я не снимал NAK в функции USB_receive, если входных данных 0. Переделал функцию: int USB_receive(char *buf, int bufsize){ if(!usbON) return 0; uint16_t epstatus = USB->EPnR[2]; if(bufsize < 1) return 0; int sz = EP_Read(2, (uint16_t*)buf); endpoints[2].rx_cnt = 0; epstatus = SET_VALID_RX(epstatus); epstatus = KEEP_DTOG_TX(epstatus); epstatus = KEEP_DTOG_RX(epstatus); USB->EPnR[2] = epstatus; return sz; } Теперь один косяк остался — если хост данные передает, но не принимает, то МК зависает. Надо смотреть, что за косяк у меня в функции отправки данных. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Eddy_Em 2 12 февраля, 2020 Опубликовано 12 февраля, 2020 · Жалоба А еще обнаружил баг в работе с UART'ом: несмотря на то, что у меня там двойная буферизация и передача через DMA, если данные туда слишком быстро пихать, то в конце-концов почему-то DMA начинает выводить дамп памяти вместо данных. Как будто бы настройки сбиваются... Странно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vit496 0 13 февраля, 2020 Опубликовано 13 февраля, 2020 (изменено) · Жалоба On 2/11/2020 at 9:16 PM, Xenia said: Может кто поделится примером проектика, чтобы USB CDC девайс определялся? Мне неважно, что передает он и что принимает, лишь бы компьютер его узнавал, как Virtual COM port. вот диск от родного 429 Discovery от ST (тогда Cube еще не было). Пример для CDC оттуда у меня работал на этой плате. Ой, извиняюсь, это от какой-то платы на F407. От 429 не могу пока найти. Изменено 13 февраля, 2020 пользователем vit496 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Xenia 45 13 февраля, 2020 Опубликовано 13 февраля, 2020 · Жалоба 31 минуту назад, vit496 сказал: вот диск от родного 429 Discovery от ST (тогда Cube еще не было). Пример для CDC оттуда у меня работал на этой плате. Ой, извиняюсь, это от какой-то платы на F407. От 429 не могу пока найти. Это диск от платы STM32F4DISCOVERY, но для меня это тоже весьма ценно, т.к. CDC-пример там есть, причем именно на FS. Спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 13 февраля, 2020 Опубликовано 13 февраля, 2020 · Жалоба Ксения... да прошейте hex из моего архива... результат Вас удивит! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться