STM32F429 и подводные камни, при использовании USB интерфейса

В процессе разработки устройства с применением платы STM32-Discovery с МК F429ZI, необходимо было реализовать взаимодействие между компьютером и микроконтроллером. В качестве интерфейса решил использовать USB – STM virtual port. При подключении появляется вот такое устройство:

usb1 В системе выглядит, как обычный ком-порт, и работать с ним возможно, с применением стандартных программ, типа hypper terminal, putty, и т.д.

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

Для нормальной работы необходимо установить драйвер, который можно скачать на сайте компании st.com, что-бы найти нужный драйвер нужно сделать следующие шаги:

Задать в поиске модель микроконтроллера

usb2

потом перейти на страницу данного микроконтроллера, и переключиться на закладку “DEsign Resurces”

usb3

И на странице найти ссылку на скачивание драйверов

usb4

После того как драйверы скачаны и установлены, я с помощью программы STM-cube генерирую заготовку проекта, под среду разработки Keil.

И в полученной заготовке проекта, исправляю несколько ошибок.

Ошибка первая:

Размеры стека и заголовка, имеют размер, который крайне мал, поэтому значение “Stack_Size      EQU     0x00000400” нужно поменять на 0x00004000, и тоже самое с “Heap_Size” нужно нолик перед двойкой сместить за двойку, а правильнее два значения увеличить в 16 раз. В итоге получаем такой код:

usb5

Следующая ошибка, в неверном коде, по умолчанию там значение 0х00, из-за чего драйвера на виртуальный ком-порт не устанавливаются, но заменив значение с нуля на двойку, решает эту проблему.

usb6

И ещё есть 2 константы, означающие размер буфера приема передачи, по умолчанию они по 4 байта, значения стоит увеличить, т.к. если это не делать послав с компьютера в контроллер строку из 5 символов, приведет к нежелательным последствиям.

usb7

 

Вот такие грабли, из-за которых было потрачено в холостую не мало часов, что-бы запустить это хозяйство 🙂

2 комментария

  • Stm могут работать не только в режиме VCP но так же и в HID, тогда проблема с драйверами пропадет)

    • Мне это было необходимо, для возможности работать с устройством, с компьютера через библиотеку libusb, а программу на компьютере писал на c#

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Protected with IP Blacklist CloudIP Blacklist Cloud