====== Прошивка микроконтроллера через UART ====== Через переходник USB-UART подключите микроконтроллер в выходам **A9** и **A10**, которые соответствуют выходам **USART1_TX** и **USART1_RX** соответственно. * **RX** выхода переходника стоит подключать к **TX**, то есть к **A9**. * **TX** выхода переходника стоит подключать к **RX**, то есть к **A10**. //Чтобы легче запомнить, обратите внимание, что **R** в алфавите идет первее **T**, также как **9** идёт первее **10**.// После подключения микроконтроллер необходимо перевести в режим прошивки. На некоторых платах для этого есть специальная перемычка. Например, для платы с МК STM32F103C8T6 [[ob:o7:stm32f103|из предыдущей заметки]], — это будет дальняя от кнопки перезагрузки перемычка в положении 1: {{ :ob:o7:stm32f103c8t6.jpg?direct&400 |}} На некоторых платах имеются специальные кнопки **BOOT0**. Например плата STM32F401CСU6 имеет такую кнопку рядом с кнопкой перезагрузки. {{ :ob:o7:img_20221121_174113.jpg?direct&400 |}} Если нет ни перемычки ни кнопки, то необходимо замкнуть ногу **BOOT0** на **3.3** вольта. Чтобы не испортить микроконтроллер лучше использовать резистор номиналом 50–200 Ом, однако возможно замкнуть контакт и напрямую. Осталось перезагрузить контроллер, чтобы он перешел в режим прошивки через UART. ===== stm32flash ===== Кросс-платформенное консольное приложение **stm32flash** позволяет использовать встроенный загрузчик STM32 для загрузки новой программы в память микроконтроллера. https://sourceforge.net/projects/stm32flash Для установки поместите файл программы **stm32flash.exe** в папку **C:/Windows/System32** Для использования приложения необходимо узнать текстовое обозначение порта (например COM4). В Windows это возможно узнать в Диспетчере устройств, посмотрев, какое устройство появляется при подключении USB-UART преобразователя к компьютеру. ++++Установка stm32flash в Linux| Выполните команду: sudo apt install stm32flash Чтобы не приходилось вводить **sudo** перед командой прошивки, добавьте пользователя в группу **dialout**: sudo usermod -a -G dialout $USER Чтобы изменения начали действовать, перезагрузите сеанс пользователя или компьютер. В Linux текстовое обозначение порта возможно узнать, посмотрев, какой новый файл появляется в каталоге /dev при подключении USB-UART преобразователя (зачастую идентификатор порта будет **/dev/ttyUSB0**). ++++ Приступаем к проверке! Если микроконтроллер находится в режиме прошивки, команда в терминале: stm32flash COM4 даст примерно такой вывод: stm32flash 0.7 http://stm32flash.sourceforge.net/ Interface serial_posix: 57600 8E1 Version : 0x22 Option 1 : 0x00 Option 2 : 0x00 Device ID : 0x0410 (STM32F10xxx Medium-density) - RAM : 20KiB (512b reserved by bootloader) - Flash : 128KiB (size first sector: 4x1024) - Option RAM : 16b - System RAM : 2KiB Значит микроконтроллер успешно подключен и готов к загрузке программы командой: stm32flash -w Main.hex -v -g 0x0 COM4 Чтобы не открывать терминал, можете сделать текстовый файл с расширением .bat, содержащий данную строку, положить этот файл в папку с проектом, и запускать, когда потребуется обновить прошивку. ===== st-link ===== Альтернативный способ прошивки через специальное устройство ST-Link-v2 возможен с помощью приложения [[https://freeelectron.ro/installing-st-link-v2-to-flash-stm32-targets-on-linux/|st-link]] командой: st-flash --format ihex write Main.hex ---- Автор заметки: [[http://iadenisov.ru|И.А. Денисов]]