Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: STM32 как задействовать USB подключаемое в качестве Virtual COM Port
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры
BelYar
Всем привет!
Я изучаю новую для себя линейку процов STM32.. Для этих целей прикупил демо-плату STM32F4
Захотел сделать "Hello World" для USB... т.е.: подсоединить эту плату через micro-USB к PC, там увидеть virtual-COM-порт, и подсоединившись к нему увидеть раз в секунду присылаемые "Hello world"

Первую часть прошёл:
При помощи CubeMX создал проект для своего проца.
Очистил распиновку.
Вернул тактирование, включил USB_OTG_FS.
Указал, что устройство Device only, при подключении должно изображать из себя Virtual COM port.
Сгенерил проект для SW4STM32.
Проект собрался. При помощи программатора на демо-плате и программы ST-LINK/V2 прошил собранное.
Скачал-установил драйвер для VirtualComPort

При подсоединении демо-платы в PC появляется COM-порт. Ура.



А теперь встал вопрос как его задействовать?
Сгенерённый код минималистически прост. Даже не знаю за что цепляться.
Погуглил - примеров не нашел. Нашёл какую-то библиотеку, но как её крепить к моему проекту непонятно... много новых непонятных слов и аббревиатур, в частности требует CMSIS - что это за зверь? И есть ли он у меня?
В какую сторону копнуть?

Когда включал USB_OTG_HS (High-Speed вместо Full-Speed), там хотя бы появлялись линии USB_OTG_HS_ULPI_D0 ... USB_OTG_HS_ULPI_D7 (8 битная шина) и контролирующие линии типа USB_OTH_HS_ULPI_DIR и т.п.
Как выставить байт на шину данных разберусь... но как его отправить? Куда смотреть тут?

Спасибо!
SSerge
Вам надо почитать
UM1734 STM32Cube USB device library
и посмотреть исходники usbd_cdc.c, usbd_cdc.h и как они взаимодействуют с остальными.
BelYar
Спасибо!

Файлы usbd_cdc.c, usbd_cdc.h нашёл, они располагались в Middlewares\USB_Device_Library, но их содержимое увело меня куда-то в дебри...

А среди сгенерённых через CubeMX исходных файлов, в папку User, рядом с main.c был файл usbd_cdc_if.c в котором были определены функции:

static int8_t CDC_Receive_FS (uint8_t* Buf, uint32_t *Len)
uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len)


Глубоко не разобрался, но, используя Transmit, "кирпичик" по выдаче "Hello world" наружу работает.
Ещё раз спасибо!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.