Засыпкин С.В.

Лаборатория электроники и программирования

Электронный журнал с приложениями

№ 16

© Засыпкин С.В., 2011-2014

На главную страницу

 

Содержание

 

1. Программирование на языке С на примере микроконтроллера STM32F407VGT6. Работа с UART. Прием данных.

Рассмотрены примеры приема данных, их буферирования, декодирования принятых команд и данных, обработка ошибок.

Примеры программ даны для IDE  «CooCox®»  [4].

 

2. Программирование на языке С на примере микроконтроллера STM32F407VGT6. Работа с ЦАП. Программный запуск.

Рассмотрим работу с ЦАП (цифро-аналоговым преобразователем, DAC). В микроконтроллере есть 2 канала ЦАП с разрешением 12 бит [1,2]. Они предназначены для формирования аналоговых сигналов на выходах микроконтроллера.

Выходы ЦАП находятся на выходах микроконтроллера PA4 (29) и PA5 (30). Будем использовать канал 1 преобразователя - DAC1, расположенный на выводе PA4.

Осциллограммы наложения шума и треугольного сигнала на пилообразный сигнал:

«

»[8]

Примеры программ даны для IDE  «CooCox®»  [4].

 

3. Программирование на языке С на примере микроконтроллера STM32F407VGT6. Работа с CAN. Передача данных с определенным интервалом.

                Рассмотрим задачу передачи данных с определенным интервалом отправки. Программа написана на основе предыдущего занятия по CAN (см. №15 статья 3). Добавим в нее следующие блоки:

- в качестве генератора для задания интервалов времени будем использовать таймер TIM4

- настроим таймер TIM4 на период 1 мс

- для передачи сообщений CAN сделаем структуру данных «CAN_Packet», члены которой будут содержать идентификатор пакета, количество данных и сами данные

- объявим необходимое количество таких структур для конкретных сообщений

- создадим программные таймеры для отсчета интервалов передачи сообщений и флаги окончания счета интервалов

- в функции обработки прерывания будем вести счет временных интервалов и устанавливать флаги окончания счета интервала

- в основном цикле программы будем передавать сообщения ми сбрасывать флаги окончания счета интервала

Пример программы сделан для компилятора  «MikroC PRO for ARM» [4].

 

4. Программирование на языке С на примере микроконтроллера STM32F407VGT6. Работа с CAN. Декодирование принятых данных.

                Рассмотрим задачу распознавания принятых  данных. Программа сделана на основе предыдущего занятия по CAN (см. №15 статья 4). Добавим в нее следующие блоки:

- для передачи сообщений CAN сделаем структуру данных «CAN_Packet», члены которой будут содержать идентификатор пакета, количество данных и сами данные

- объявим необходимое количество таких структур для конкретных сообщений

- будем проверять принятое сообщение с заданными и зажигать соответственно зеленый и красный светодиоды  на плате

Пример программы сделан для компилятора  «MikroC PRO for ARM» [4].

 

5. Программирование на языке С на примере микроконтроллера STM32F407VGT6. Программный сброс.

                Рассмотрим задачу программного сброса микроконтроллера. Для демонстрации при запуске программы сделаем однократное «мигание» светодиода, а затем в основном цикле будем формировать программный сброс. В результате светодиод будет мигать постоянно.

Пример программы сделан для компилятора  «MikroC PRO for ARM» [4].

 

6. Программирование на языке С на примере микроконтроллера STM32F407VGT6. Чтение идентификатора типа микроконтроллера и уникального номера.

                Рассмотрим задачу получения идентификатора типа микроконтроллера и уникального номера. Способы их получения различные.

Пример программы сделан для компилятора  «MikroC PRO for ARM» [4].

Результат работы программы:

CPUID = 410fc241

Unique device ID = 3600393432470833303135

 

7. Программирование на языке С на примере микроконтроллера STM32F407VGT6. Управление шаговыми двигателями.

                Рассмотрим задачу управления шаговыми двигателями на примере двигателя 28BYJ-48 [13] в полношаговом режиме. 

Фото макета:

 

8. Программирование на языке С на примере микроконтроллера STM32F407VGT6. Матричная клавиатура.

                Рассмотрим работу с матричной клавиатурой. Такая клавиатура позволяет использовать меньше выводов микроконтроллера по сравнению с вариантом, когда каждая кнопка подключена к отдельному выводу. При матричном подключении на строки клавиатуры подается «бегущий ноль» (или «бегущая единица»), а со столбцов клавиатуры считываются сигналы. Если какая либо кнопка нажата, то изменяется считанный сигнал. Т.о. определяется нажатие на кнопку. Сканирование (считывание состояния и формирование сигнала «бегущий ноль»)  обычно осуществляется с помощью таймера.

Фото макета:

 

9. "Заменить нельзя использовать"? Сравнение микроконтроллеров ATmega328P и STM32F051.

                Новые компоненты появляются сейчас довольно часто. Поэтому перед разработчиком постоянно стоит вопрос «переходить на новые компоненты или пока подождать». Данный цикл статей будет посвящен сравнению компонентов на основе как данных техдокументации, так и собственного опыта разработки устройств на данных компонентах, что поможет вам при решении вопроса о замене компонентов. Сравнение приводится в виде таблицы, в которой жирным шрифтом обозначены преимущества, которые на мой взгляд есть у данной микросхемы. При составлении таблицы использовались даташиты [1,2].

Характеристика

ATmega328P

STM32F051

 

 

 

Разрядность, бит

8

32

 

 

 

Система команд

RISC

RISC

 

 

 

Тактовый генератор:

 

 

Внешний кварцевый

есть

Есть

Внутренний RC

есть

Есть

Максимальная тактовая частота, МГц

20

48

Минимальная тактовая частота, МГц

0

0

Возможность изменения тактовой частоты в процессе работы

нет

есть

Наличие ФАПЧ

Нет

есть

 

 

 

Максимальная производительность, MIPS

20

38

 

 

 

Память:

 

 

Программ (Flash), кБ

32

64

Число циклов перезаписи памяти программ

10000

10000

Защита от копирования

Есть

Есть

Данных (SRAM) , кБ

2

8

EEPROM, кБ

1

нет

Число циклов перезаписи EEPROM

100000

 

 

 

 

Загрузчик программ:

 

 

Наличие встроенного загрузчика (bootloader)

нет

есть

Наличие области памяти для загрузчика

есть

 

Внутрисхемное программирование и отладка

Есть

Есть

 

 

 

 

 

 

10. Программирование на языке С на примере микроконтроллера ATmega168.  Работа с АЦП.

                Для работы с АЦП (ADC) необходимо настроить следующие его параметры:

- источник опорного напряжения

- измеряемый канал

- способ выравнивания результата (поскольку разрядность АЦП 10 бит, то результат размещается в двух байтах и расположение результата может быть различным)

- тактовую частоту для преобразования (она должна соответствовать требованиям технической документации, см. раздел «ADC characteristics», параметры «Conversion time» и «Clock Freguency» [3])

- включить АЦП

 

Фото работы примеров:

Один канал, относительные единицы

Один канал, относительные единицы и в вольтах

Два канала в вольтах