Доброго всем дня, сегодняшняя статья будет посвящена реализации виртуального COM-порта для микроконтроллеров STM32. Эта тема уже поднималась на нашем сайте, но, в отличие от всех предыдущих случаев, сегодня мы будем производить все настройки при помощи STM32CubeMx. Собственно, стартуем.
И начинаем с действий, ставших привычными — создаем новый проект в CubeMx. Я буду использовать отладочную плату STM32F4Discovery и, соответственно, выбираю контроллер STM32F407VG при создании проекта.
С этим никаких сложностей возникнуть не должно, все-таки мы уже много раз проделывали это в предыдущих статьях, посвященных STM32CubeMx (статьи про STM32CubeMx), поэтому давайте сформулируем задачу, которую будем сегодня решать.
А задача проста — реализуем поддержку USB Virtual Com Port и отправим тестовый набор данных с платы на ПК. Таким образом, мы должны добиться определения нашей отладочной платы в системе как виртуального COM-порта. А открыв этот порт в какой-нибудь терминальной программе мы должны будем увидеть правильно принятые данные. Просто и наглядно, приступаем к осуществлению.
Первым делом включим поддержку USB в проекте. Для этого посещаем вкладку «Pinout & Configuration»:
Кроме того, задействуем внешний тактовый генератор (8 МГц), установленный на плате — ровно так же как мы делали в статье про тактирование:
Осталось выбрать режим работы USB для нашего устройства:
На этом первый этап настроек проекта закончен, переходим в окно настроек тактирования (вкладка «Clock Configuration»). Здесь нам необходимо обеспечить подачу ровно 48 Мгц для тактирования модуля USB, привожу полную схему с выставленными значениями:
Среди многочисленных настроек USB давайте поменяем только PRODUCT_STRING
, исключительно теста ради, проверим, как это сработает. Остальное пока не трогаем:
В принципе, на этом все, можно смело переходить к генерации проекта и исходного кода…
Немного обождав, пока CubeMx завершит генерацию, получаем готовый проект, в котором выполнена вся необходимая инициализация. Давайте не будем вносить никаких изменений, а просто соберем проект и запрограммируем контроллер. После этого подключаем USB-кабель к плате и в диспетчере устройств видим новое устройство:
Если мы зайдем в свойства, то можем увидеть там значения VID и PID, которые были установлены в настройках STM32CubeMx, а кроме того измененную нами строку PRODUCT_STRING
:
Никаких сомнений в правильной работе сгенерированного проекта не остается 👍 Но это только часть задачи, нужно реализовать отправку данных. А необходимые для этого функции находятся в файле usbd_cdc_if.c:
CDC_Receive_FS()
— для приема данных.CDC_Transmit_FS()
— для передачи данных.
Итак, давайте в основном цикле нашей программы будем раз в секунду отправлять 8 тестовых байт. Кстати для реализации простейших временных задержек в HAL присутствует функция HAL_Delay()
. В качестве аргумента мы должны передавать количество миллисекунд. В общем, получаем такой код:
int main(void) { /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ /* MCU Configuration--------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_USB_DEVICE_Init(); /* USER CODE BEGIN 2 */ uint8_t testDataToSend[8]; for (uint8_t i = 0; i < 8; i++) { testDataToSend[i] = i; } /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ HAL_Delay(1000); CDC_Transmit_FS(testDataToSend, 8); } /* USER CODE END 3 */ }
Теперь остается только прошить контроллер, открыть терминал и убедиться, что данные принимаются верно. Так и делаем:
Все работает отлично, как и планировалось. Собственно, на этой мажорной ноте мы заканчиваем сегодняшнюю статью, а вместе с ней и обсуждение реализации USB Virtual COM Port при помощи STM32CubeMx. В следующих статьях мы будем работать уже с другими режимами USB, так что оставайтесь на связи 🤝
-
Главная -
Драйверы
-
Сетевые устройства
-
Сетевые устройства STM
- STM Virtual COM Port
-
STM Virtual COM Port
Версия:
6.1.7600.16385
(09 авг 2018)
Файл *.inf:
chibiosrt_virtual_com_port.inf
Windows Vista, 7, 8, 8.1, 10
В каталоге нет драйверов для STM Virtual COM Port под Windows.
Скачайте DriverHub для автоматического подбора драйвера.
Драйверы для STM Virtual COM Port собраны с официальных сайтов компаний-производителей и других проверенных источников.
Официальные пакеты драйверов помогут исправить ошибки и неполадки в работе STM Virtual COM Port (сетевые устройства).
Скачать последние версии драйверов на STM Virtual COM Port для компьютеров и ноутбуков на Windows.
Версия: 1.3.7.1452 для Windows 7, 8, 10 и 11
Бесплатное ПО
В комплекте идет опциональное ПО
- Yandex Browser
- Opera Browser
- Avast Free Antivirus
- World of Tanks
- World of Warships
Version | |
Download | 111712 |
Total Views | 112466 |
Stock | ∞ |
File Size | 6.20 MB |
File Type | |
Create Date | 6. May 2016 |
Last Updated | 21. November 2017 |
These drivers are used if you are having issues connecting your flight controller to your PC. This is the 64bit version.