Подключение STM32F407VET6
- Войдите на сайт для отправки комментариев
Сб, 27/03/2021 - 13:39
Если верить документации, "камни" stm32f4xx в отличие от stm32f103 уже содержат загрузчик по USB, вот только мне так и не удалось добиться удобной работы с ним - чтобы при отладке не нужно было совершать лишних действий типа переключения перемычек или запуска сторонних утилит.
Возможно, я только в начале пути, либо вообще - пошел не по той дороге. Поэтому дальнейшее буду описывать, начиная со следующего поста, который прошу не цитировать, чтобы я при необходимости мог вносить в него необходимые уточнения.
Прошу не цитировать этот пост.
Уточнение: меня интересовал вариант, чтобы можно было и заливать прошивку, и иметь текстовую консоль без перестановки перемычек, нажимания кнопок и использования внешних программ. Т.е. не просто прошивка контроллера, а прошивка+консоль в одном флаконе (как это принято в Arduino IDE).
Собственно, мне удалось нащупать вариант, который работает именно так, как я хочу, т.е. не требует ни нажатий на кнопку сброса, ни перестановки перемычек, ни запуска сторонних утилит.
Для этого используются два дополнительных устройства: ST-Link и USB-UART. Последний я использую на микросхеме cp2102, но, думаю, подойдет и любой другой.
Оба устройства включаются в USB-hub, при этом контакты земли и питания USB-UART не подключаем, т.к. они уже соединены через USB.
Заливка скетча производится через ST-Link.
Если мы при этом будем компилировать с опцией USB cinfiguration: USB inactive, то в монитор порта (подключенный через USB-UART) будут посылаться данные как с Serial, так и с Serial1.
Если мы будем компилировать с опцией USB configuration: USB Serial (CDC), то Serial1 у нас, как и в предыдущем случае будет идти через USB-UART, а вот Serial - через разъем USB на плате контроллера. В этом случае (при подключении разъема USB) желательно убрать из приведенной схемы провода земли и питания: черный и красный. При этом можно обойтись без переходника USB-UART. Но такой вариант имеет недостаток: при прошивке с незакрытым монитором порта сам порт "отваливается", до "передергивания" разъема USB или следующей перепрошивки при закрытом мониторе порта. В общем, добавляются лишние действия: перед прошивкой закрыть монитор порта, а после прошивки - открыть его вновь. Поэтому я рекомендую первый вариант, хотя при нет требуется больше чего подключать.
И еще: при повторении схемы обратите внимание на то, что ST-Link китайцы делают с различной цоколевкой, так что при его подключении ориентироваться следует не на номера контактов, а на надписи на корпусе.
Кстати, подобное подключение можно применять и для stm32f103, но там вместо 5В удобнее использовать 3.3В. Если я не ошибаюсь, такой способ прошивки позволяет сэкономить 8к программной памяти, которые при стандартном способе прошивки расходуются на загрузчик.
F4 имеют несколько способов. I2C SPI UART. Можно всё попрбовать. Но я предпочитаю ST-Link. Почти разу не потребовалось что то нажимать. Почти всегда шьёт сразу. Исключение - висит в запросе USB. Тогда ресет.
Пока st-link не купил, собрал схему с кнопкой, переключающий boot пины, и рядом reset, намучался....все это костыль я думаю загружать через загрузчик.
Каюсь, плохо сформулировал основную задачу: она состояла в том, чтобы кроме прошивки обеспечить и функционирование Serial. Просто для прошивки вполне достаточно ST-Link, но т.к. Arduino IDE не поддерживает отладку через ST-Link, по сути дела речь шла о программировании вслепую. А меня интересовал вариант как принято в Arduino IDE: и заливать прошивку, и иметь текстовую консоль без перестановки перемычек, нажимания кнопок и использования внешних программ.
andriano, так тогда наверно удобнее переделать stlink в 2.1, и вывести из него сериал. Я так сделал, очень удобно - и программатор и serial в одном флаконе )
dimax, если мы ставим себе цель сократить количество занятых USB гнезд - да. Но что в одном, что в другом варианте плату все равно нужно соединять шестью проводами, причем, разбросанными по разным разъемам платы контроллера. Я подключаю все (в том числе вариант с Serial через родной USB - всего 3 USB разъема) через USB концентратор, так что устройств на самом деле 3: ST-Link, USB-UART и USB-hub, но как с точки зрения подключения платы (те самые 6 проводников), так и с точки зрения включить/выключить все устройство (один USB разъем концентратора) - разницы никакой. Весь комплект, конечно, немного дороже (но все равно - копейки), но разницы в эксплуатационном удобстве - нет.