Программирование микроконтроллеров
Курс "Программирование микроконтроллеров" читается для студентов 2 курса в течение осеннего и весеннего семестров. Занятия проводятся один раз в неделю в течение 4 академических часов (5 и 6 пары).
Учебная нагрузка — 60 часов/семестр.
Оборудование
Обучение производится на микроконтроллерах STM32F429.
Курсовые и зачётные работы могут выполняться с использованием других микроконтроллеров STM32, а также на устройствах TI Stellaris или TI Tiva.
Программа курса (осенний семестр)
Базовая часть
Тема 1. Введение. Программирование микроконтроллеров на языке С
Теория. Микроконтроллеры. Функции и применение микроконтроллеров. Основные параметры микроконтроллеров. Архитектура микроконтроллеров. Семейства микроконтроллеров ARM и их назначение. Устройство микроконтроллеров. Ядра Cortex — M 0/ M 3/ M 4 F . Периферийные блоки микроконтроллеров: ввод-вывод общего назначения, тактирование, таймеры, прерывания.
Язык С для микроконтроллеров ARM . Особенности разработки программ для микроконтроллеров по сравнению с программированием для ПК. Ввод и вывод. Адресация. Двоичное и шестнадцатеричное счисления. Среда программирования IAR EWARM . Возможности отладки программ.
Практика. Создание и настройка проекта в среде IAR. Создание прошивки, осуществляющей работу с блоком ввода-вывода общего назначения. Работа с технической документацией (поиск адресов аппаратных регистров, работа с принципиальной схемой тестовой платы).
Тема 2. Прерывания
Теория. Прерывания. Виды прерываний. Контроллер прерываний NVIC в ядре Cortex — M . Вектора прерываний. Приоритеты. Флаги прерываний в контроллерах STM . Рекомендации по написанию обработчиков прерываний.
Практика. Создание программы, реализующей асинхронный ввод-вывод сигналов. Освоение документации NVIC . Настройка прерываний блока ввода-вывода общего назначения.
Тема 3. Таймеры
Теория. Таймеры. Виды таймеров. Режимы работы таймеров. Измерение малых промежутков времени. Система тактирования микроконтроллера и методы её настройки.
Практика. Разработка программы для периодического вывода сигналов с использованием таймера и делителей частоты. Измерение параметров сигналов с помощью цифрового осциллографа.
Тема 4. Широтно-импульсная модуляция
Теория. Широтно-импульсная модуляция. Применение ШИМ для управления электронными устройствами. Особенности реализации ШИМ на микроконтроллере. Сглаживание. Специальные режимы работы таймеров.
Практика. Разработка программы для генерации ШИМ сигнала с заданными параметрами.
Тема 5. Цифро-аналоговые и аналого-цифровые преобразования
Теория. АЦП и ЦАП. Частота дискретизации и разрядность. Основные виды АЦП (АЦП прямого преобразования, АЦП последовательного приближения, сигма-дельта АЦП) и их характеристики. Режимы запуска АЦП. Дифференциальный режим измерения. Алгоритмы усреднения измеряемых величин: скользящее среднее и экспоненциальное усреднение. Библиотека для работы с периферийными блоками HAL Driver .
Практика. Разработка программы, осуществляющей измерение напряжения внешнего аналогового сигнала с помощью АЦП.
Тема 6. Обмен данными
Теория. Последовательные и параллельные интерфейсы. UART . Принцип работы шины UART , протокол передачи данных. События блока UART на микроконтроллерах STM 32. Протоколы SPI и I2C, их принципы работы. Концепция ведущий-ведомые.
Практика. Разработка прошивки для микроконтроллера, осуществляющей приём и отправку данных по UART . Освоение программного обеспечения для работы с COM -портами на ПК.
Тема 7. Флеш-память
Теория. Принцип работы ячейки флеш-памяти (транзистор с плавающим затвором, чтение и запись данных). NOR и NAND конструкции флеш-памяти. Многоуровневые ячейки. Особенности работы с флеш-памятью из программ.
Практика. Разработка программы для подсчёта импульсов с использованием флеш-памяти для сохранения значения счётчика на случай перезагрузки или потери питания.
Дополнительные темы (читаются по усмотрению преподавателя)
Тема Д1. Дисплеи
Теория. Виды дисплеев. Электронно-лучевые трубки (принцип работы, развёртка). Жидкокристаллические дисплеи (принцип действия ЖК ячейки, устройство мониторов, адресация). Кодирование цветов, битность изображения. Плазменные дисплеи. Светодиодные дисплеи. Проекторы (3 LCD , LC 0 S , DLP ). Резистивные и ёмкостные сенсорные дисплеи. Перспективные виды дисплеев ( OLED, интерференционные дисплеи, SED, PixelSense ) .
Практика. Написание программы, осуществляющей вывод графических примитивов и текста на TFT — LCD дисплей тестовой платы. Освоение высокоуровневых библиотек для работы с периферийными блоками и внешними устройствами.
Тема Д2. Система тактирования микроконтроллера
Теория. Классификация и принципы работы генераторов тактовой частоты. Кварцевые и RC-генераторы. Фазовая автоподстройка, делители и умножители частоты. Тактовые частоты шин данных и периферийных блоков микроконтроллера.
Практика. Настройка системы тактирования микроконтроллера, вывод тактового сигнала микроконтроллера. Измерение частоты тактирования с помощью осциллографа. Изучение зависимости формы сигнала от значения тактовой частоты.
Тема Д3. USB
Теория. Краткая история внедрения шины USB . Физический уровень (кабели и разъёмы, состояния шины, кодирование данных). Пакетный уровень (структура и виды пакетов). Транзакционный уровень (адреса, конечные точки). Логический уровень (виды каналов, передача данных по периодам). Дескрипторы и классы устройств. Краткий обзор спецификаций USB.
Практика. Передача данных с ПК на контроллер по USB c использованием CDC класса.
Тема Д4. Операционные системы реального времени
Теория. Операционные системы мягкого и жёсткого реального времени, а также их особенности. Диспетчеризация задач. Синхронизация задач. Операционная система Free RTOS . Некоторые функции для управления задачами во Free RTOS .
Практика. Настройка Free RTOS и создание многозадачной программы для управления светодиодами.
Программа курса (весенний семестр)
- Тематические лекции
- Дополнительные разделы программирования микроконтроллеров
- Выполнение курсовой работы по программированию
Отчетность
Осенний семестр — зачет
Весенний семестр — зачет с оценкой
— В конце осеннего семестра в течение 4 занятий выполняется зачетная работа.
Примеры тем зачетных работ:
- Измерение частоты внешнего сигнала с выводом результата на дисплей.
- Генерация ШИМ сигнала с регулировкой частоты и скважности.
- Измерение ёмкости конденсатора путём анализа формы отклика RC -цепи на периодический сигнал.
- Измерение индуктивности путём анализа формы отклика RL -цепи на периодический сигнал.
- Генерация гармонического сигнала путём модуляции одиночными импульсами.
- Измерение расстояния между акустическим излучателем и микрофоном с помощью измерения задержки распространения звука.
- Измерение скорости звука импульсным методом
- Стабилизация напряжения в RC цепи с обратной связью. Напряжение задаётся с компьютера и выводится на дисплей.
— В течение весеннего семестра выполняется курсовая работа.
По согласованию с научными руководителями курсовая работа по программированию может быть совмещена с курсовой работой по физике. Для этого нужно, чтобы работа в значительной мере была посвящена автоматизации эксперимента или другим задачам, подразумевающим программированию микроконтроллеров.
Источник: