Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/48: Рейтинг темы: голосов - 48, средняя оценка - 4.83
 Аватар для Papayaved
75 / 75 / 8
Регистрация: 24.09.2015
Сообщений: 342

У STM32H743ZI не работает корректно CDC Virtual COM port через USB FullSpeed

26.06.2019, 22:26. Показов 9614. Ответов 3

Author24 — интернет-сервис помощи студентам
Борюсь с виртуальным COM портом через USB FS, есть две платы моя собственная и Nucleo. На форуме ST создать тему мне не позволяют, а на сообщение в старой теме ни кто не ответил.

Использую CubeMX 5.2.1 и Firmware FW 1.4.0. Windows 10 определяет COM port, но вот общаться через него нормальным способом не удается. В терминальных программах PuTTY, Real term выдается сообщение, что не верные параметры порта, такое же исключение выбрасывает C# и Qt при попытке открыть порт ("The parameter is incorrect"). Параметры пробовал разные и самые простые из настроек драйвера по умолчанию 8 бит, 9600, без четности, 1 стоп, без flowcontrol (в Linux все работает при любых параметрах, что в Qt, что в терминальных программах). Пробовал использовать драйвер Windows по умолчанию и устанавливать с сайта ST для Windows 7 - поведение одинаковое.

В Windows 10 удается однако тоже общаться через COM порт с помощью программы TeraTerm или пользуясь Си функциями: fopen("COM6", "r+"), fwrite, fread, fclose - т.е. без всяких параметров работы порта. Но хотелось бы, чтобы порт мог работать нормально со всеми программами.

Такое впечатление, что драйверу COM порта не удается записать параметры в USB устройство и он поэтому не хочет с ним работать, Linux видимо такие проверки записываемых параметров не делает.

Пробовал использовать более старые версии CubeMX 4.27.0 и FW 1.3.2 там дела еще хуже - компьютер не видит USB устройство. Точнее, если загрузить и запустить быстро прошивку после более новой, новый COM порт с другим номером появляется и даже работает через PuTTY, но стоит включить/выключить питание COM порт не появляется, так же если просто начисто загрузить прошивку, т.е. FW 1.3.2 не устанавливает соединение (VBUS sense включено, но не работает)

Добавлено через 21 минуту
Размер кучи увеличиваю до 0x400

В файле usbd_desc.c исправляю ошибку

Программа UsbView:

===>Device Descriptor<===
bLength: 0x12
bDescriptorType: 0x01
bcdUSB: 0x0200
bDeviceClass: 0x02 -> This is a Communication Device
bDeviceSubClass: 0x02
*!*ERROR: bDeviceSubClass of 2 is invalid
bDeviceProtocol: 0x00
bMaxPacketSize0: 0x40 = (64) Bytes
idVendor: 0x0483 = STMicroelectronics
idProduct: 0x5740
bcdDevice: 0x0200
iManufacturer: 0x01
English (United States) "STMicroelectronics"
iProduct: 0x02
English (United States) "STM32 Virtual ComPort"
iSerialNumber: 0x03
English (United States) "383A34463137"
bNumConfigurations: 0x01


на bDeviceSubClass 0x00
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.06.2019, 22:26
Ответы с готовыми решениями:

F3 Discovery USB CDC(Virtual Com Port) - дело в железе?
Здравствуйте. Столкнулся с проблемой - не могу запустить виртуальный ком порт на данной плате(контроллер на борту - f303vct6). Ставил...

Организация связи по ethernet, по аналогии с USB CDC Virtual com port
Удалось организовать обмен данными между ПК и stm32 посредством создания виртуального последовательного порта на базе USB (USB CDC Virtual...

ПК не определяет stm32f3discovery ни как Custom HID, ни как CDC Virtual com port
Здравствуйте! При попытке настроить stm32f3discovery в режиме Custom HID или CDC Virtual com port, проект собранный с помощью...

3
 Аватар для Papayaved
75 / 75 / 8
Регистрация: 24.09.2015
Сообщений: 342
27.06.2019, 10:49  [ТС]
Для варианта CubeMX 4.27, FW 1.3.2 есть способ оживить USB добавив в функцию инициализации вызов функции
C++ Скопировано
1
HAL_PWREx_EnableUSBVoltageDetector();
C++ Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void MX_USB_DEVICE_Init(void)
{
  /* USER CODE BEGIN USB_DEVICE_Init_PreTreatment */
  
  /* USER CODE END USB_DEVICE_Init_PreTreatment */
  
  /* Init Device Library, add supported class and start the library. */
  USBD_Init(&hUsbDeviceFS, &FS_Desc, DEVICE_FS);
 
  USBD_RegisterClass(&hUsbDeviceFS, &USBD_CDC);
 
  USBD_CDC_RegisterInterface(&hUsbDeviceFS, &USBD_Interface_fops_FS);
 
  USBD_Start(&hUsbDeviceFS);
 
  /* USER CODE BEGIN USB_DEVICE_Init_PostTreatment */
  HAL_PWREx_EnableUSBVoltageDetector();
  
  /* USER CODE END USB_DEVICE_Init_PostTreatment */
}
- но при этом, если при включение питания USB кабель подключен, то микроконтроллер зависает, так что для повторного программирования надо будет отключить USB кабель. Если же подключить USB кабель через некоторое время после старта микроконтроллера, то все работает.

Добавлено через 1 час 24 минуты
Пустой проект CubeMX 5.2.1 + FW1.3.2 с виртуальным COM портом работает корректно, но при добавление шины FMC (Mux PSRAM) виртуальный COM порт перестает записывать параметры.

Если закоментировать инициализацию FMC, то виртуальный COM порт опять работает полноценно.

C Скопировано
1
2
  MX_USB_DEVICE_Init();
//  MX_FMC_Init();
Замена порядка инициализации не помогает. Убирание разрешение на запись в FMC в CubeMX тоже не влияет.

В варианте CubeMX 5.2.1 + FW1.4.0 запись параметров виртуального COM порта не работает не зависимо, есть FMC или нет.
0
0 / 0 / 0
Регистрация: 01.05.2021
Сообщений: 1
01.05.2021, 21:18
Здравствуйте.

Я недавно перешел с F4 на H743 Nucleo.

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

Вы могли бы сбросить свой код, который реализует виртуальный ком порт?
Заранее спасибо.
0
210 / 163 / 36
Регистрация: 15.11.2012
Сообщений: 788
02.05.2021, 21:57
Цитата Сообщение от andre2120 Посмотреть сообщение
чтобы по виртуальному компорту на комп отсылать данные
У меня с этой Nucleo H743 другая история - виртуальный COM-порт (который совмещен с ST-Link) виден, но данные не передаются. А осциллограф (на ноге RX контроллера этого USART) показывает, что данные с USB-COM на самом деле идут, но это НЕ ТЕ данные. Более того, они разные при отправке одного и того же символа много раз подряд.
Причем в самый первый раз (в первое включение) у меня это все работало. Потом перестало.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.05.2021, 21:57
Помогаю со студенческими работами здесь

Описание протокола USB CDC Abstract Control Model (Virtual ComPort)
Есть устройство, которое работает на винде. Это устройство определяется как виртуальный компорт. Драйвер предельно простой: текстовый .inf,...

STM32F4 USB Virtual Com Port
Добрый день. Имеется карта STM32F429I-Dyscovery соответственно с камнем STM32F429. Проект настроен и собран в Кубе. Среда разработки...

Виснет USB Virtual COM Port STM32
Уже второй день мучаюсь, практически все перепробовал. Работает таймер - все отлично, работает USB - тоже все отлично. Но как включишь и то...

USB Virtual COM Port. Получение строки из терминала
Добрый день! Изучаю USB Virtual COM Port и хочу передать на контроллер сроку символов. В уроке было предложено такое изменение функции...

Есть ли у кого библиотека USB Virtual Port?
Нужно организовать подключение stm32f4 к компу.. в чипе есть usb не видел ли кто простую библиотеку реализующую канпарт на usb ? ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
BASH scripting - the best cases [PurpleSchool]
jigi33 08.04.2025
Занятия BASH в PurpleSchool - отличные примеры для внедрения в практику (see screenshots and file names)
Результаты исследования от команды MCM (март 2025 г.)
Programma_Boinc 07.04.2025
Результаты исследования от команды MCM (март 2025 г. ) В рамках наших текущих исследований мы продолжаем изучать гены, которые имеют наибольшую вероятность развития рака легких, выявленные в рамках. . .
Рекурсивные типы в Python
py-thonny 07.04.2025
Рекурсивные типы - это типы данных, которые определяются через самих себя или в сочетании с другими типами, которые в свою очередь ссылаются на исходный тип. В мире программирования такие структуры. . .
C++26: Объединение и конкатенация последовательностей и диапазонов в std::ranges
NullReferenced 07.04.2025
Работа с последовательностями данных – одна из фундаментальных задач, с которой сталкивается каждый разработчик. C++ прошел длинный путь в эволюции средств для манипуляции коллекциями – от. . .
Обмен данными в микросервисной архитектуре
ArchitectMsa 06.04.2025
Когда разработчики начинают погружаться в мир микросервисов, они часто сталкиваются с парадоксальным правилом: "два сервиса не должны делить один источник данных". Эта мантра звучит повсюду в. . .
PostgreSQL в Kubernetes: Автоматизация обслуживания с CNPG
Mr. Docker 06.04.2025
Администраторы баз данных сталкиваются с целым рядом проблем при обслуживании PostgreSQL в Kubernetes: как обеспечить правильную репликацию данных, как настроить автоматическое переключение при. . .
Async/await в TypeScript
run.dev 06.04.2025
Асинхронное программирование — это подход к разработке программного обеспечения, при котором операции выполняются независимо друг от друга. В отличие от синхронного выполнения, где каждая последующая. . .
Многопоточность в C#: Синхронизация потоков
UnmanagedCoder 06.04.2025
Многопоточное программирование стало неотъемлемой частью разработки современных приложений на C#. С появлением многоядерных процессоров возможность выполнять несколько задач параллельно значительно. . .
TypeScript: Классы и конструкторы
run.dev 06.04.2025
TypeScript, как статически типизированный язык, построенный на основе JavaScript, привнес в веб-разработку новый уровень надежности и структурированности кода. Одним из важнейших элементов этой. . .
Многопоточное программирование: Rust против C++
golander 06.04.2025
C++ существует уже несколько десятилетий и его поддержка параллелизма постепенно наращивалась со временем. Начиная с C++11, язык получил стандартную библиотеку для работы с потоками, а в последующих. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер