Отладочная плата STM32F407VET6 и быстрый старт в Linux

2017/11/25

Купил на eBay отладочную плату STM32F407VET6 за 10 баксов. На фото виден подключенный дисплей WH1602 и переходник для прошивки USB - UART.

STM32F407VET6 USB-UART WH1602 Display

Плата достаточно большая, что удобно. Отдельной колодкой выведен UART, запаян часовой кварц, батарейка, flash память. Выведен USB, разъем для microSD карточки. В общем, все что нужно. По сути, данную плату можно использовать как полноценную плату MCU в своих проектах. Особого смысла разводить свою я не вижу.

Как видно из фото, прошиваю STM32 через UART бутлоадер. Можно так же использовать для этих целей USB, но я не стал заморачиватся. В этой статье я опишу быстрый старт в среде Linux.

Устанавливаем ARM Toolchain:

sudo add-apt-repository ppa:terry.guo/gcc-arm-embedded
sudo apt-get update
sudo apt-get install arm-gcc-none-eabi

Cкачиваем GUI утилиту генерации кода STM32CubeMX. Раньше нужно было прибегать к определенным трюкам, что бы запустить ее в linux. Теперь утилита в данной системе доступна из коробки. Настраиваем нужным образом периферию. Перед генерацией кода нужно выбрать Toolchain/IDE SW4STM32.

Скачиваем CubeMX2Makefile скрипт в папку с проектом:

git clone https://github.com/baoshi/CubeMX2Makefile

Получаем Makefile:

python CubeMX2Makefile.py .

Пытаемся скомпилировать проект:

make

Возможны появление ошибок на этапе компиляции или линковки. Например у меня была следующая:

Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c:417:1: error: stray "/" in program
Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c:417:1: error: stray "/" in program
Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c:417:1: error: stray "/" in program

Устраняется редактированием Makefile. Находим строку

C_DEFS = -D__weak="__attribute__((weak))" -D__packed="__attribute__((__packed__))" -DUSE_HAL_DRIVER -DSTM32F407xx

и заменяем строкой

C_DEFS = -DUSE_HAL_DRIVER -DSTM32F407xx

После успешной компиляции нам нужно прошить микроконтроллер. Для этого скачиваем утилиту STM32Flash. Компилируем и устанавливаем в систему:

make
sudo make install

Теперь нужно подключить нашу отладочную плату через преобразователь USB - UART к компьютеру с правильно выставленными перемычками BOOT0 и BOOT1. Нажимаем на RST на плате. Смотрим доступные в системе COM порты:

dmesg | grep tty

Должно быть доступно что то вроде /dev/ttyUSB0. Смотрим, есть ли доступ к STM32:

sudo stm32flash /dev/ttyUSB0

Ну и собственно прошиваем STM32:

sudo stm32flash -b 9600 -v -w build/blinking_led.bin /dev/ttyUSB0

Исходный код blinking led

while (1)
  {
  /* USER CODE END WHILE */
    HAL_Delay(2000);
    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);
    HAL_Delay(2000);
    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);
  /* USER CODE BEGIN 3 */

  }
  /* USER CODE END 3 */

Переключаем BOOT0 BOOT1, должно поочередно меняется логический ноль на единицу через каждые две секунды. Можно подключить светодиод, и увидеть мигание, или вольтметр.

Category: General Tagged: STM32


Пример чтения / записи wav файлов на Android Java

2017/05/03

Возникла у меня задача чтения - записи wav файлов на android для тестированя работы алгоритма VAD - Voice Activity Detection. Так как зачастую wav файлы содержат несжатые PCM данные, то для получения семплов можно просто побайтно читать файл. Ниже показан пример кода, который читает wav файл в массив семплов, уменьшает громкость в четыре раза, и записывает новые данные в другой wav файл.

File rfile = new File(Environment.getExternalStorageDirectory() + File.separator + "music.wav");
File wfile = new File(Environment.getExternalStorageDirectory() + File.separator + "music2.wav");

byte[] header = new byte[44];
byte[] byteInput = new byte[(int)rfile.length() - 44];
short[] input = new short[(int)(byteInput.length …

Category: General Tagged: android

Read More

Android. Как получить доступ к папке data без root привилегий

2017/04/22

Стандартные android файловые менеджеры не позволяют зайти в папку data без root привилегий. Но это часто требуется при разработке. Если у вас установлена Android Studio, то получить доступ к папке можно с помощью утилиты "adb".

Подключите свой телефон или планшет к компьютеру. Введите следующие команды:

adb shell
cd /data/нужный_путь

Что бы получить файл пишем:

adb pull /data/путь/имя_файла D:/путь_куда_сохранить

Вот и все.

Category: General Tagged: android

Read More

Радиолюбительская периодика - журнал CQ-QRP

2017/03/30

Не интернетом единым. Кроме любимых сайтов, посвященных вашему хобби существует еще и печатная, електронная периодика, где размещение своей статьи считается более престижным. Недавно случайно узнал о существовании журнала "CQ-QRP". На сколько я понял, существует только электронная версия журнала. Скачать который можно на сайте Русского QRP клуба http://qrp.ru/cqqrp-magazine.

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

Пролистав пару выпусков, могу сказать, что материал достаточно интересный - есть что почитать. Кроме …

Category: General Tagged: general

Read More

Закрылся журнал Радиохобби

2015/11/28

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

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

радиохобби

Category: General

Read More

Перенос сайта на новую CMS

2015/07/10

В связи с тем, что под мой новый проект, связанный с радио, будут задействованы web технологии, я решил перенести сайт с wordpress на самописную cms. Это оказалось не так сложно. Буквально пару вечеров, и функциональный минимум был готов. Кроме мелких правок, осталось добавить категории для записей, и можно считать, что минимум, который мне нужен - выполнен. Среди плюсов такого решения - теперь я полностью контролирую внутренности сайта (под капот wordpress я не лез), более рациональное использование места жесткого диска, сайт чисто визуально стал работать намного быстрее. Минусов не обнаружено. И спрашивается, зачем юзать медленный WordPress? Хостинг то бесплатный, и теперь нагрузка на …

Category: General

Read More
Page 1 of 1