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

 
 
 
Reply to this topicStart new topic
> STM32 как задействовать USB подключаемое в качестве Virtual COM Port, Как передать байты наружу?
BelYar
сообщение Sep 2 2015, 07:26
Сообщение #1





Группа: Новичок
Сообщений: 2
Регистрация: 2-09-15
Пользователь №: 88 243



Всем привет!
Я изучаю новую для себя линейку процов 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 и т.п.
Как выставить байт на шину данных разберусь... но как его отправить? Куда смотреть тут?

Спасибо!
Go to the top of the page
 
+Quote Post
SSerge
сообщение Sep 2 2015, 09:41
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 719
Регистрация: 13-09-05
Из: Novosibirsk
Пользователь №: 8 528



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


--------------------
Russia est omnis divisa in partes octo.
Go to the top of the page
 
+Quote Post
BelYar
сообщение Sep 10 2015, 15:16
Сообщение #3





Группа: Новичок
Сообщений: 2
Регистрация: 2-09-15
Пользователь №: 88 243



Спасибо!

Файлы 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" наружу работает.
Ещё раз спасибо!
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 19th June 2025 - 06:36
Рейтинг@Mail.ru


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