Stm32 virtual com port driver windows 7 не устанавливается

Обновлено: 04.07.2024

Микроконтроллеры 1986ВЕ1Т, 1986ВЕ3Т, 1986ВЕ9х и 1901ВЦ1Т имеют контроллер USB-интерфейса, реализующий функции контроллера ведомого устройства (Device) и ведущего устройства (Host). В составе библиотеки SPL приведён пример для ведомого устройства (Device) под названием "VCOM_Echo", который позволяет использовать МК в качестве CDC USB устройства (Класс Коммуникационного Устройства), настроенного как виртуальный COM-порт. Чтобы ПК определял МК именно как устройство, подключенное по COM-порту, необходимо установить специальный драйвер. Ссылка на скачивание драйвера доступна в конце статьи.

В данной статье рассмотрена пошаговая установка драйвера Virtual COM порт в ОС Windows 7.

Установка драйвера

Для установки драйвера виртуального COM-порта необходимо иметь права администратора!

Загружаем в МК проект "VCOM_Echo" и подключаем отладочную плату к ПК с помощью кабеля USB A-B. На ПК открываем "Диспетчер устройств Windows", его можно найти в поиске меню "Пуск". Если драйвер не установлен, то после подключения МК по USB в диспетчере устройств появится "Неизвестное устройство". Открываем "свойства" нового устройства, как показано на рисунке 1.


Рисунок 1 - Диспетчер устройств Windows: неизвестное устройство Если МК определился в группе "Контроллеры USB" и отображается как "Unknown Device", вероятно был нарушен протокол обмена по USB, и проблему следует искать в ПО МК.

В открывшемся окне "Свойства. " выбираем пункт "Изменить параметры" (рисунок 2), при этом возможно потребуется ввести пароль администратора.


В новом окне выбираем пункт "Обновить драйвер", как показано на рисунке 3.


Здесь необходимо выбрать "поиск драйверов на компьютере" (рисунок 4).


Теперь необходимо разархивировать папку с драйверами в любую директорию на ПК, например, в корень диска С, после чего в открывшемся окне нужно указать путь к папке с драйвером и нажать кнопку "Далее" (рисунок 5).


Рисунок 5 - Окно "Обновление драйверов": выбор директории с драйвером

В процессе установки Windows может вывести предупреждение, в котором необходимо выбрать пункт "Всё равно установить этот драйвер", как показано на рисунке 6.


Рисунок 6 - Окно с предупреждением при установке драйвера

После установки драйвера в диспетчере устройств во вкладке "Порты(COM и LPT)" должно появиться новое устройство "Milandr USB RS-232 Emulation Driver" (рисунок 7).


Рисунок 7 - Диспетчер устройств Windows: новое COM-устройство

Если установить всё-таки не получается, то

Можно попробовать запустить операционную систему Windows в безопасном режиме или режиме с отключенной обязательной проверкой подписи драйверов.

Для Windows 7 при запуске компьютера необходимо быстро нажимать клавишу F8, после чего появится окно аналогично тому, что представлено на рисунке 8. После этого выбрать либо безопасный режим, либо режим с отключенной обязательной проверкой подписи драйверов и попробовать установить драйвер снова.

Рисунок 8 - Дополнительные варианты загрузки Windows 7

Для Windows 8 и 10 есть несколько способов перейти в аналогичное Windows 7 меню выбора режима загрузки, но самый простой заключается в том, чтобы нажать кнопку "Перезагрузка" вместе с зажатой кнопкой Shift прямо в меню "Пуск" (рисунок 9).

Рисунок 9 - Алгоритм попадания в первоначальный загрузчик Windows

После перезагрузки всплывёт полностью синий экран с различными вариантами загрузки операционной системы, необходимо перейти в меню "Поиск и устранение неисправностей" > "Дополнительный параметры" > "Параметры загрузки". После этого всплывёт окно с выбором режима загрузки операционной системы, как на рисунке 10.


Рисунок 10 - Меню выбора режимов загрузки Windows 8 (10)

Соответственно, также необходимо выбрать либо безопасный режим, либо режим с отключенной обязательной проверкой подписи драйверов и попробовать установить драйвер снова.

Решение проблемы с установкой драйвера виртуального последовательного порта STM32F103

После получения доски форума STM32F303RE мой компьютер не смог установить последовательный порт, виртуализированный Stlink. Я могу только перечислить устройства, которые Stlink загружает и моделирует диск U. Я перепробовал много методов. Поскольку мой компьютер правильно установил виртуальный последовательный порт эмуляции USB на других фильмах серии ST, и суть установки драйвера заключается в использовании INF INF в качестве загрузочной программы для загрузки системного USB-драйвера системы, поэтому я чувствую себя более смущенным, почему Другие доски приемлемы, но это не так. Сегодня я подключил к компьютеру виртуальный последовательный порт другой платы и обнаружил, что виртуальный последовательный порт больше не будет работать. Появился восклицательный знак. Наверное, что-то не так с моей компьютерной системой.
Причина, по которой общая установка виртуального последовательного порта USB может завершиться неудачей, заключается в том, что оконная система не является официальной подлинной системой, а упорядочена или отключена. Таким образом, некоторые файлы будут отсутствовать во время установки. Следующие два типа более распространены:
1) Отсутствует usbser.sys, Два файла mdmcpq.inf, Найдите эти 2 файла и скопируйте mdmcpq.inf в c: \ windows \ inf, Скопируйте usbser.sys в windows \ system32 \ drivers.
2) Есть компьютеры без следующих папок, как правило, в пути установки В папке C: \ Windows \ System32 \ DriverStore \ FileRepository конкретная папка может отличаться в зависимости от компьютера. В любом случае, я просто копирую следующие файлы на проблемный компьютер.

Но на этот раз, когда мой компьютер устанавливает драйвер, приглашение выглядит следующим образом:Система не может найти указанный файлЕсли эта проблема возникает, два вышеупомянутых метода не могут быть решены, потому что соответствующие файлы существуют (исходная картинка сети, у меня не было скриншота в то время)

Наконец, я нашел решение в Интернете: измените mdmcpq.inf в папке C: \ Windows \ inf.
закомментируйте [FakeModemCopyFileSection]; usbser.sys

После обновления драйвера виртуальный последовательный порт можно установить нормально

После тщательного размышления на моем компьютере раньше было недостаточно места на системном диске, поэтому я использовал обтекаемое программное обеспечение системного диска для удаления некоторых, казалось бы, бесполезных файлов, что должно привести к удалению некоторых файлов, связанных с виртуальным последовательным портом. ,
При нормальных обстоятельствах эти проблемы не будут возникать в подлинной системе, но иногда многие компьютеры клиентов не являются подлинными системами, весьма вероятно, что эти файлы будут отсутствовать, и драйвер не может быть установлен.
Нет ничего плохого в удалении системных файлов, может быть, вы уйдете с дороги в этот день! !

Перед пользователями сети JackieLaura Есть также много способов решить виртуальный последовательный порт, вы можете проверить загрузку на 12-м этаже следующего поста, спасибо JackieLaura !!
Решение виртуального последовательного порта

Интеллектуальная рекомендация


Использование Jmeter Beanshell

Использование Beanshell Что такое бобовая скорлупа Beanshell - это язык сценариев, который полностью соответствует синтаксису Java, и имеет свои собственные встроенные объекты и синтаксис Beans.

Android получить информацию о приложении (пакете) и размере кэша при использовании PackageManager

[size = medium] [b] класс PackageManger [/ b] [/ size] Описание: Получить информацию об установленных приложениях. Его можно получить с помощью метода [color = red] getPackageManager () [/ color]. Общ.


UITextView добавить текст заполнителя

UITextView - это простой и легкий в использовании метод для добавления текста заполнителя. В основном используйте drawRect: метод для рисования текста заполнителя. Создайте файл CustomPlaceholderTextV.


Разница между равным и "= mh-excerpt">

1. Разница между равным и "==" (1) Роль равенства заключается в сравнении одинакового содержимого двух независимых объектов., Другими словами, это для сравнения значений двух объектов. I1, i.

Отладочную плату ипользуем ту же: STM32F4-DISCOVERY.

Проект создаём из проекта I2CLCD80. Назовем его USB_OTG_CDC. Запустим проект в Cube, включим USB_OTG_FS в режим Device_Only

image00

В USB_DEVICE в разделе Class For FS IP выберем пункт Communication Device Class (Virtual Port Com).

image02

Лапки портов PD4-PD7, PB8, PB9 отключим, это пережиток прошлых занятий

image01

В Clock Configuration выберем следующие делители (нажмите на картинку для увеличения изображения)

image04_0500

В Configuration ничего не трогаем, т.к. прерывания там выставились сами.

Сгенерируем и запустим проект, подключим lcd.c и настроим программатор на автоперезагрузку.

У нас скорей всего устройство установится с ошибкой (код 10)

image03

Есть несколько типов решений, мне понравился именно этот, т.к. более простой: в файле usbd_cdc.h заменим размер пакета, вместо 512 напишем 256 в данной строке:

Соберём, прошьём и увидим, что ошибка исчезла.

Начнём писать код.

Сначала попытаемся передать данные на ПК.

Для этого мы сначала откроем файл usbd_cdc_if.c и исправим там в 2х строчках 4 на 64

В файле main.c закомментируем весь пользовательский код кроме инициализации и очистки дисплея

/* USER CODE BEGIN 2 */

/* USER CODE END 2 */

Также в main.c подключим файл usbd_cdc_if.h для видимости функций приема и передачи

/* USER CODE BEGIN Includes */

Немного изменим в главной функции строковую переменную, убавив в ней размер и добавив префикс tx

/* USER CODE BEGIN 1 */

/* USER CODE END 1 */

В файле usbd_cdc_if.c добавим прототип функции передачи, скопировав объявление из реализации данной функции в том же файле

/* USER CODE BEGIN PRIVATE_FUNCTIONS_DECLARATION */

uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len);

/* USER CODE END PRIVATE_FUNCTIONS_DECLARATION */

В main() внесём данные в строку

/* USER CODE END 2 */

CDC_Transmit_FS((unsigned char*)str_tx, strlen(str_tx));

/* USER CODE END WHILE */

Соберём код, прошьём контроллер и посмотрим результат в терминальной программе.

Вроде передать нам что-то удалось. Теперь попробуем что-нибудь принять. Здесь чуть посложнее, т.к. для этого используется уже обработчик прерывания, коим является в файле usbd_cdc_if.c функция CDC_Receive_FS.

Добавим ещё одну строковую глобальную переменную в main()

/* USER CODE BEGIN PV */

/* USER CODE END PV */

Объявим её также и в файле usbd_cdc_if.c

/* USER CODE BEGIN PRIVATE_VARIABLES */

extern char str_rx[21];

/* USER CODE END PRIVATE_VARIABLES */

В функцию CDC_Receive_FS в этом же файле добавим некоторый код и кое-что закомментируем

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

/* USER CODE BEGIN 6 */

Добавим переменную в main()

/* USER CODE BEGIN 1 */

Занесенные в наш буфер данные попробуем вывести на дисплей, для этого в бесконечном цикле в функции main() добавим определённый код

CDC_Transmit_FS((unsigned char*)str_tx, strlen(str_tx));

Соберём проект. Прошьём код и посмотрим результат, вводя в терминальной программе и отправляя в порт USB какие-нибудь строки.

STM32 HAL. USB. Virtual Com Port

22 комментария на “ STM Урок 33. HAL. USB. Virtual Com Port ”

Просто измените размер кучи (Minimum Heap Size) в настройка CubeMX. Вместо значения 0x200 задайте 0x400.

И комп увидит устройство без ошибок.

При инициализации структур компилятору элементарно не хватает места, заданного по умолчанию, для выделения памяти.

Пардон, очепятка вышла. Не компилятору, а функции malloc.

Спасибо, так действительно проще.

Спасибо.Я сделал так.В хидер usbd_cdc_if.h добавил две строчки
extern uint8_t UserRxBufferFS[1000];
uint8_t receiveBufLen;
В метод CDC_Receive_FS добавил перед return receiveBufLen = *Len;
И в main ловил данные просто одним условием
if(receiveBufLen > 0)// если получены данные от ПК
HAL_Delay(250);
CDC_Transmit_FS((uint8_t*) UserRxBufferFS,receiveBufLen);
// эхо для наглядности
receiveBufLen = 0;// сброс получения
>
Всё просто,а UserRxBufferFS чистить не нужно от мусора,он сам чистится.

может в usbd_cdc_if.c ?

Ох, видимо сперва надо читать коментарии, прочитал тот что выше.

Скорей всего придется делать конкатенацию передаваемых строк с помощью strcat. Была аналогичная проблема при использовании CDC. Автор применял этот метод в одном из уроков.

Здравствуйте
А если я хочу передавать данные с микроконтроллера на компьютер?

Константин:
А мы их туда и передали.

Установил различные драйвера VCP от STM, но при этом плата не определяется при подключении её к компьютеру. только виден STLink Virtual COM Port. Кто уже сталкивался с такой проблемой.

Оказалась, что проблема с дровами. Надо их полностью сносить и устанавливать заново.

You can use(for example):

where ADC_Data is your ADC value.

могу скачать драйвера для виртуального ком порта. У меня STM32F415RG, может есть у кого?

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

mykaida аватар

Попробуйте перепаять R10 на 1-2кОм. Помогает.

И ещё - Попробуйте на неизвестное устройство поставить драйвер из папки с драйверами.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Но там R10 уже стоит на 1.5 кОМ. Я её прошивал в прошлом году. Поморгал светодиодом с горем пополам ,все время ругалось при компиляции . Была система ХП. СЕйчас стоит 7. Жду из китая новую платку , может другая прошъётся .

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

У меня их десяток разных. И с 10к и с 1.5к. Ни одну не смог запустить в режиме с загрузчиком. Да в общем то и не старался. Не получилось с ходу - и ладно. Она через ST-Link шьётся замечательно и при этом после старта на загрузчике не тормозит.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

wdrakula аватар

Аналогично, только даже не пробовал шить без ST-Link.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

andriano аватар

Ну, вообще-то варианты загрузки через ST-Link и через USB являются взаимоисключающими. Изначально - шьется через ST-Link, если перепрошить загрузчик, будет шиться через USB, но перестанет через ST-Link.

Судя по тому, что шьется через ST-Link, там просто нет ардуиновского загрузчика.

PS. Через UART шьется в любом случае.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Ну, вообще-то варианты загрузки через ST-Link и через USB являются взаимоисключающими. Изначально - шьется через ST-Link, если перепрошить загрузчик, будет шиться через USB, но перестанет через ST-Link.

Судя по тому, что шьется через ST-Link, там просто нет ардуиновского загрузчика.

PS. Через UART шьется в любом случае.

разве v bluebpill'e нет ситемного загрузчика который есть "с завода" и являеться частью кремния?

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

andriano аватар

Вот "с завода" именно через UART. Но довольно геморройно: переставить перемычку, нажать кнопку, запустить программу прошивки, и, главное, нигде не перепутать последовательность.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Вот вот. Когда получил первые платы ST-Linkа у меня ещё не было. Собственно на одну через UART влили прошивку ST-Linka c танцами и бубнами, зато потом жизнь сразу стала легче.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

У меня их десяток разных. И с 10к и с 1.5к. Ни одну не смог запустить в режиме с загрузчиком.

Аналогично, только даже не пробовал шить без ST-Link.

У меня напротив - среди двух десятков таких плат от разных продавцов ни с одной не было проблем с подключением по ком-порту. СТ-линк есть, но я им пользуюсь при работе с ИАРом или Кубом, а в ардуино ИДЕ прошиваю исключительно через ком-порт.

Не знаю, какие у вас проблемы - по гайду от HWMan все отлично работает, даже резистор на PA12 менять не обязательно.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Вот "с завода" именно через UART. Но довольно геморройно: переставить перемычку, нажать кнопку, запустить программу прошивки, и, главное, нигде не перепутать последовательность.

никаких кнопок нажимать не надо.

Переставил перемычку, прошил через Flash Loader Demonstrator, вернул перемычку обратно. ВСЕ

И если что перепутаешь - вернутся к заводской прошивке не проблема.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

andriano аватар

А как "прошить через Flash Loader Demonstrator", не нажимая никаких кнопок?

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

А как "прошить через Flash Loader Demonstrator", не нажимая никаких кнопок?

на плате блюпилл никаких кнопок не нажимается.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

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

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

andriano аватар

А зачем тогда я, как дурак, каждый раз на сброс нажимаю?

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

А зачем тогда я, как дурак, каждый раз на сброс нажимаю?

не знаю :) На заводской прошивке этого делать не требуется.

Вот если что не так прошил и прошивку запорол - то да, тогда нужно чистить флеш например при помощи СТ-линк утилиты, и вот оно срабатывает только если запускаешь с нажатым ресетом

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

wdrakula аватар

Не знаю, какие у вас проблемы

Б707, дорогой! Ни каких проблем! ;)) Я же написал - в голову не пришло проверять, как оно с УАРТом. С удовольствием почитаю ветку, ради информации.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

andriano аватар

А зачем тогда я, как дурак, каждый раз на сброс нажимаю?

не знаю :) На заводской прошивке этого делать не требуется.

Вот если что не так прошил и прошивку запорол - то да, тогда нужно чистить флеш например при помощи СТ-линк утилиты, и вот оно срабатывает только если запускаешь с нажатым ресетом

Когда я экспериментировал с Кубом, в некоторых случаях контроллер после прошивки не был виден через ST-Link (что я отследил), и в некоторых не прошивался без нажатия на сброс (что я воспринял как обычную практику). Ну, собственно, после этого нажимал на сброс всегда - чтобы уж наверняка.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Когда я экспериментировал с Кубом, в некоторых случаях контроллер после прошивки не был виден через ST-Link (что я отследил), и в некоторых не прошивался без нажатия на сброс (что я воспринял как обычную практику). Ну, собственно, после этого нажимал на сброс всегда - чтобы уж наверняка.

в кубе пробовали настраивать дебаг порт ?

Вот если что не так прошил и прошивку запорол - то да, тогда нужно чистить флеш например при помощи СТ-линк утилиты, и вот оно срабатывает только если запускаешь с нажатым ресетом

на случай, если нет ST-Link'a , есть такая утилита STM32CubeProgrammer , ей можно USART/USB подсоедениться к микроконтоллру в режиме бутлоадера и удалить /перепрошить и много еще чего. a ST-Link ом можно и в обычном режиме

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Здравствуйте. Всё голова уже не работает. Порт так и не появился.Буду ждать из китая новую stm-ку. Полтора года не могу доделать проект. ST-Linka у меня нет.Спасибо всем .

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

mykaida аватар

У меня вин7. Сейчас подключил STM и посмотрел драйвер - короче драйвер LeafLabs, LLC дата 21.10.2018.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Здравствуйте. Всё голова уже не работает. Порт так и не появился.Буду ждать из китая новую stm-ку. Полтора года не могу доделать проект. ST-Linka у меня нет.Спасибо всем .

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Здравствуйте. Я все так и делал. Переходник у меня ch 340 . Через Flash Loader Demonstrator все проходит. И светофор зелёный и после пошивки зелёная полоса. Далее от администратора запускаю установку драйвера. Появляется чёрный экранчик, жду, появляется (нажмите любую клавишу). Далее иду в ардуино , ну и как в ссылке в самом начале страницы . А порта там нет.Пытался в диспетчере , ставить вручную , пишет что драйвера не нуждаются в обновлении. А само устройство остановлено из за неполадок ,код (43).Сейчас попробовал подключить ардуино нано, порт появляется. А с stm порта нет. Как то так.

Читайте также: