STM32. Режим отладки. Debug.

Рассмотрим настройку режима отладки для IDE SW4STM32 (System Workbench for STM32) с использованием ST-LINK V2. Настройку будем выполнять на примере программы из статьи "Первая программа для STM32. Мигание светодиода".

1. Запустим конфигуратор отладчика через контекстное меню проекта "Debug as - Debug Congigurations".


2. В открывшемся окне выберем "Ac6 STM32 Debugging" и нажмем кнопку "New launch configuration".


3. Укажем *.elf файл отладчика нажав кнопку "Search project". Обязательно следует обратить внимание на то, что бы файл *.elf был из папки DEBUG.


4. На вкладке "Debuger", нажав "Show generator options", изменим метод сброса микроконтроллера. Для ST-LINK V2 это "Software system reset". Нажимаем "Apply" и "Close".


5. Теперь с панели инструментов IDE можно запустить программу в режиме отладки, управлять шагом отладчика и просматривать состояние переменных.















Первая программа для STM32. Мигание светодиода.

По традиции первая программа для микроконтроллера (отладочной платы) это программа, которая с заданной периодичностью мигает светодиодом.

Для разработки нам потребуются три программы: среда разработки IDE (System Workbench for STM32, он же SW4STM32), программа конфигурирования периферии процессоров STM (STM32CubeMX), программа для прошивки микроконтроллера (STM32 ST-LINK Utility). Последние актуальные версии перечисленных программ можно скачать с официальных сайтов: IDE, CubeMX, ST-LINK Utility, однако обращаю ваше внимание на то, что хоть программы и бесплатны, все равно придётся зарегистрироваться на ресурсах для получения актуальных ссылок.

С точки зрения материального обеспечения необходима отладочная плата STM32F407VGT6 (или подобная, приобретенная тут) и программатор ST-LINK V2.

1. Создадим новый проект в STM32CubeMX.


2. Выбираем микроконтроллер, на котором построена отладочная плата и для которого будет генерироваться шаблон проекта.

3. Настраиваем порты ввода вывода "System Core - GPIO". Для своей отладочной платы я знаю, что светодиод подключен на вывод PA1, поэтому сконфигурирую его как цифровой выход "Output Push Pull", а так же задам ему пользовательскую метку "Led".

4. Сконфигурируем источник тактового сигнала "System Core - RCC", установив High Speed Clock (HSE) = Crystal\Ceramic Resonator.

5. Настроим характеристики тактового сигнала на вкладке "Clock Configuration". У моей платы основной тактовый генератор, Input frequency = 8МГц. Так же изменим базовую частоту, на которой будет работать процессор HCLK =
 168 МГц.

6. Настроим параметры проекта на вкладке "Project Manager". Укажем имя проекта Project Name = FirstProg, папку расположения проекта Project Location = D:\Program.all\STM, средство разработки Toolchain/IDE = SW4STM32. Остальные настройки оставим без изменения.

7. Сгенерируем шаблон проекта, нажав кнопку "GENERATE CODE". В папке ProjectLocation\ProjectName (у меня это D:\Program.all\STM\FirstProg) будет сгенерирован шаблон проекта, который необходимо добавить в рабочее пространство IDE.

8. Добавляем проект в IDE System Workbench for STM32. Для чего в окне приветствия выберем "Import existing projects" (если окно не видно, отобразить его можно выбрав в основном меню Help - Welcome). Нажав кнопку "Browse" выбираем папку с сгенерированным ранее шаблоном проекта - у меня это D:\Program.all\STM\FirstProg. Нажимаем кнопку "Finish".

Новый проект будет добавлен в IDE.

9. Напишем первую программу для мигания светодиодом. Скорректируем main.c, добавив следующий код:
  
HAL_GPIO_TogglePin(Led_GPIO_Port, Led_Pin); // Переключаем состояние пина
HAL_Delay(500); // Задержка в мс  

Код следует разместить в процедуре int main(void), в цикле while (1), до комментария /* USER CODE END WHILE */. Это позволит безопасно изменять конфигурацию процессора в STM32CubeMX (например настраивать другие пины на ввод-вывод), не боясь того, что ваш код будет затерт.

10. Сменим конфигурацию сборки проекта на Release.

11. Скомпилируем проект. HEX будет сохранен в папке проекта, подпапке Release, т.е. d:\Program.all\STM\FirstProg\Release\

11. Подключим отладочную плату STM32F407VGT6 к программатору ST-LINK V2. Схема подключения пинов следующая "Программатор - Плата"

SWCLK - CLK
SWDIO - DIO
GND - GND
3,3V - 3V3



12. Заливаем программу в микроконтроллер. Запускаем STM32 ST-LINK Utility, подключаем программатор и настраиваем его параметры, выбрав "Target - Settings". Обращаем внимание на метод сброса: Reset mode = Software system reset.



12. Выбираем HEX файл для прошивки выбрав "Target-Program", нажав в открывшемся окне кнопку "Browse". Настройки по умолчанию не трогаем. Затем нажимаем кнопку "Start". Программа будет залита в отладочную плату.


Видео с разработкой первой программы для STM32 ниже.







Согласование антенны. Практический пример.

Теория по согласованию антенны и кабеля доступным языком изложена в статье "Согласование импеданса антенны и кабеля", я же сосредоточусь на практической реализации. Практика, изложенная ниже, справедлива при настройке любых видов антенн на любую резонансную частоту, я же буду согласовывать диполь на частоту FM 98 МГц, рассчитанный в статье "Полуволновой диполь. Расчет параметров антенны."

Конструкция диполя на 98МГц.

Для оптимальной работы приемника (передатчика) антенну с кабелем необходимо согласовать. Предполагается что кабель с приёмником (передатчиком) согласован - кабель для подключения антенны с внутренним сопротивлением 50 Ом и приемник (передатчик), работающий с 50-и Ом-ной нагрузкой - иначе придётся согласовывать кабель с девайсом.

Согласование без материально технического обеспечения весьма проблематично, поэтому нам не обойтись без антенного анализатора, например nanoVNA.

Векторный анализатор nanoVNA.

Согласование необходимо начать со снятия импеданса антенны - её нагрузки и реактивной составляющей. nanoVNA должен быть откалиброван с учетом кабеля, которым антенна будет подключена к приемнику (передатчику).

Выставляем предел измерения по частоте для nanoVNA. Антенна рассчитана на 98МГц, предел измерения установим с запасом - от 88МГц до 108МГц. На экране должны отображаться графики SMITH (диаграмма Смита), IMAG (мнимое число измеряемой величины), SWR (коэффициент стоячей волны, КСВ).

Колёсиком сверху устанавливаем частоту 98 МГц и снимаем характеристики антенны. Ниже представлены три замера характеристик одной и той же антенны в разное время суток.

Характеристики антенны снятые в 9:00.

Характеристики антенны снятые в 19:00.

Характеристики антенны снятые в 22:00.

Антенна с такими характеристиками SWR (КСВ) считается плохо настроенной. Допустимый КСВ, а по сути потери, на расчетной резонансной частоте принято считать в пределах от 1 (идеально) до 1,5 (приемлемо).

Такое расхождение с теоретическим расчётом объясняется тем, что данный вид антенн является симметричным устройством, а кабель нет. Подключение кабеля без согласующего устройства напрямую к антенне будет вносить искажение в характеристики, т. к. оплётка подключённая к вибратору напрямую будет является его продолжением. Для компенсации этого эффекта при подключения кабеля к антенне используется трансформатор (балун) или адаптер (в самом простом случае LC цепочка).

Кроме того, следует обратить внимание на то, что значения характеристик антенны будет завесить от многих факторов, например, времени суток, погоды, окружающих предметов, высоты установки, геометрии антенны, аккуратности изготовления и т.д.

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

Импеданс: 81,5 Ом
Реактивная составляющая: 0,285j (если в характеристике присутствует знак "минус" это важно)
КСВ: 2,74

Расчет адаптера выполним с помощью калькулятора "LC Impedance matching network designer". Там же выберем схему для согласования.

Расчет адаптера.

Расчётные значения для изготовления адаптера. Индуктивность: 167,5 nH, ёмкость: 40,92 p. Используем элементы, максимально соответствующие расчётным - у меня это 150 nH и 39 p.

Ёмкость и индуктивность для изготовления адаптера. 

Величина погрешности номиналов деталей обязательно скажется на конечном результате согласования, поэтому на практике целесообразно применять проволочную индуктивность, а конденсатор можно использовать построечный. Однако с учётом того, что характеристики антенны сильно зависят от внешних факторов, данную погрешность будем считать допустимой.

Изготавливаем адаптер. Адаптер, в готовой конструкции, следует поместить в экранируемый и защищённый от атмосферного воздействия корпус:

Конструкция адаптера для согласования.

Конструкция адаптера для согласования в сборе.

Подключаем адаптер к антенне:

Снимаем характеристики антенны повторно (обратите внимание на график IMAG - он стал довольно-таки симметричным, как и должно быть для симметричной антенны):

Характеристики антенны после подключения адаптера.

КСВ на частоте 98МГц составляет 1,25 что является приемлемым при конструировании антенн. 
Реальная резонансная частота, на которую настроена антенна (при минимальном КСВ=1,17) - 96,2 MГц. Погрешность изготовления антенны: 1,8%.

Реальная резонансная частота антенны.

За счёт укорочения длины вибраторов (помните я говорил что они делаются с запасом) можно добиться смещения графика SWR (КСВ) для получения более низкого его значения на расчётной резонансной частоте.