USB Virtual COM на STM32L - Keil Project

Предлагаю проект для контроллера STM32L152 для организации виртуального COM порта (USB-COM). Проект основан на публикованном ранее похожем проекте для STM32F103ZE: STM32 — организация виртуального COM-порта
Большое спасибо автору за хорошую публикацию.

Представленный в моей публикации проект получает данные с ПК и отправляет те же данные назад в ПК.

Железо для данного проекта: Нужно подключить USB DP к PA12 і USB DM к PA11, а также соединить земляной провод.

Запуск проекта:
1) Для того, чтобы ПК видел компорт устанавливаем драйвера (вложенные в этой публикации или качаем с сайта STM);
2) Скачиваем архив с проектом, открываем его Кейлом, компилируем, заливаем в проц;
3) После запуска программы на проце і подключения USB к ПК в диспетчере задач должен появится компорт:

4) Открываем терминал (например COM Port Toolkit) на ПК и отправляем тестовые данные на соответственный COM порт:

Убеждаемся, что те же данные приходят в ответ.

Ключевые моменты
Рассмотрим функцию main:

После приема данных от ПК устанавливается флаг USB_Data_Received_Flag, который проверяется в основной программе (main). Полученные с ПК данные находятся в USB_Rx_Buffer, длинна принятых данных в байтах находится в USB_Data_Received_Count.
Отправка байта в ПК происходит с помощью функции void USB_Send_Data(uint8_t data).

Более подробную информацию можно найти в вышеупомянутой публикации: STM32 — организация виртуального COM-порта
  • +3
  • 06 января 2014, 19:57
  • mspartak
  • 2

Комментарии (15)

RSS свернуть / развернуть
спасибо, только одно «фе»…
+1
бля, ну почему нельзя править комменты! случайно отправил.

в исходники пока не смотрел, но смутил вот такой момент:
интересно что будет, если в буфер свалится приличный такой «кусок» и пока мы будем декрементировать в основном цикле USB_Data_Received_Count, у нас опять что-то прилетит на вход? USB_Data_Received_Count, по идее, в прерывании тупо перезапишется и часть данных просто улетит в никуда?
Я понимаю, что «это просто пример», и в жизни такое вообще маловероятно и все будет успевать просто за счет скорости контроллера и т.п., но все-таки интересно.
0
Я согласен с Вами. Может возникнуть такая проблема. Я написал ету публикацию, только потому, что не мог найти простого примера для Virtual COM под STM32L152. Это всего лишь пример для бистрого подйома Virtual COM.
0
за что Вам спасибо и плюсик))
я тоже «просто написал»)
0
как уже подсказывали ниже, стоит поставить тэг
<cut>
после первого абзаца
0
Я думаю, что есть смысл добавить тэг cut.
Кроме того, украинские буквы «i» на месте русских «и» смотрятся несколько странно, особенно если Вы пишете на русском. :) «Окткриваем» тоже режет глаз, если честно…
0
Пофиксал. Спасибо за коменты.
0
Да не за что. + Вам за труды. :)
0
Чем свежей Keil — тем более глючным он становится.
К постоянным глюкам с подчеркиванием — я уже смирился, но если бы проблемы были только в этом… Их десятки, они мешают нормально заниматься работой…
0
Какая последняя из безглючных или почти?
0
глюкам с подчеркиванием
В чём заключается глюк?
Как будто глюков с кирилицей мало…

З.Ы. Почему народ всё ещё использует редактор кайла? Есть же плугин для эклипсы? Видимо там глюков просто немеряно…
0
Пользуюсь uVision V4.60.6.10 (2012), глюков нет, меня на 100% устраивает.
0
Я интенсивно пользуюсь Кейл 4.70 (MDK4.70). Не встречал никаких глюков. Может я не юзал функционал который глючит.
0
Глюк заключается в том что Кайл без видимых причин начинает подчеркивать все свеженаписанное красной линией.
После перезагрузки Кайла подчеркивание исчезает.
Кайл 5.10.02
+1
то же самое происходит с подчеркиванием ошибок, ошибки может уже и не быть — а подчеркивание исчезает только после перезагрузки )
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.