mirror of
https://github.com/MPSU/APS.git
synced 2025-09-15 09:10:10 +00:00
* Корректировки конспектов лекций * Корректировка конспекта лекции 5 * Корректировка конспекта лекции 8 * Корректировка конспекта лекции 9 * Корректировка конспекта лекции 10 * Корректировка конспекта лекции 11 * Корректировка конспекта лекции 12 * Корректировка конспекта лекции 13 * Корректировка конспекта лекции 12 * Корректировка конспекта лекции 14 * Корректировка конспекта лекции 16 * Корректировка конспекта лекции 17 * Корректировка конспекта лекции * Корректировка конспекта лекции 20 * Корректировка конспекта лекции 21 * Корректировка конспекта лекции 22 * Корректировка конспекта лекции 23 * Корректировка конспекта лекции 13 * Корректировка конспекта лекции 12 * Корректировка конспекта лекции 20
232 lines
19 KiB
Markdown
232 lines
19 KiB
Markdown
# Лекция 21. Микроконтроллеры
|
||
|
||
## Содержание
|
||
|
||
- [Лекция 21. Микроконтроллеры](#лекция-21-микроконтроллеры)
|
||
- [Содержание](#содержание)
|
||
- [Микроконтроллеры на примере PIC](#микроконтроллеры-на-примере-pic)
|
||
- [PIC16F18313](#pic16f18313)
|
||
- [Микроконтроллеры на примере ARM](#микроконтроллеры-на-примере-arm)
|
||
- [Программа для микроконтроллера stm32f10x на языке C](#программа-для-микроконтроллера-stm32f10x-на-языке-c)
|
||
- [Основные материалы лекции](#основные-материалы-лекции)
|
||
- [Дополнительные материалы к лекции](#дополнительные-материалы-к-лекции)
|
||
|
||
> *Микроконтроллер* — это устройство, которое объединяет в себе процессор и ряд периферийных устройств и занимается управлением.
|
||
|
||
Электронные устройства можно условно разделить на несколько категорий:
|
||
|
||
1. Различные встраиваемые системы (которые куда-то встраиваются; например, встроенные в микроволновку, холодильник или телевизор)
|
||
2. Системы общего назначения (персональные компьютеры, ноутбуки, мобильные телефоны)
|
||
|
||
В 70-х годах компанией Texas Instruments произведен первый патент на тему микроконтроллеров: "Организация микро-ЭВМ на одной микросхеме". Фактически контроллер является микро-ЭВМ (системой, которая объединяет процессор, периферийные модули, память команд, память данных).
|
||
|
||
Контроллеров выпускается на порядок больше, чем процессоров общего назначения.
|
||
Микроконтроллеры используются везде (в игрушках, микроволновках, клавиатурах, мышках и т.д.).
|
||
Микроконтроллеры есть в устройствах, которые производятся серийно, поэтому стараются сделать так, чтобы контроллер умел выполнять свои задачи и каждый его элемент стоил минимальную цену.
|
||
|
||
Контроллеры бывают различной разрядности.
|
||
|
||
- 8-битные. Они используются для решения простых задач (например, для сравнения каких-то параметров);
|
||
- 16-битные. Они используются для более сложных задач, чем 8-битные, где нужна большая точность (например, для управления каким-то двигателем);
|
||
- 32-битные контроллеры выполняют какие-либо вычисления: решают алгоритмы, проводят анализ сигналов.
|
||
|
||
Чтобы проверить, подходит ли данный контроллер для устройства, можно купить его и самому проверить, а можно купить отладочный комплект (starter kit или учебный комплект).
|
||
|
||
## Микроконтроллеры на примере PIC
|
||
|
||
Существуют различные семейства микроконтроллеров PIC. Они отличаются специализацией под определенные устройства и задачи.
|
||
|
||
Например в контроллерах семейства PIC16F19197 предусмотренно управление LCD-дисплеем.
|
||
|
||
Рассмотрим семейство PIC16F18446 (используется для подключения сенсоров, имеет низкое потребление энергии, маленький форм-фактор). Контроллеры данного семейства устанавливаются в маленькие устройства (может быть с батарейным питанием), которые получают значения с датчиков.
|
||
|
||
Помимо процессорного ядра на микросхеме находятся различные периферийные устройства. Например:
|
||
|
||
1. 12-битные аналого-цифровые преобразователи (для преобразования непрерывного во времени аналогового сигнала, в котором информация кодируется в виде уровня напряжения, в цифровой сигнал, который кодируется ноликами и единичками);
|
||
2. Компараторы (сравнивают аналоговые сигналы друг с другом);
|
||
3. Конфигурируемые логические ячейки (CLC или Configurable Logic Cell);
|
||
4. Флеш память программ, основная память;
|
||
5. EEPROM (электрически перезаписываемая программируемая память);
|
||
6. PWM (Pulse-width modulation или широтно-импульсная модуляция);
|
||
7. Waveform generator (генерирует сигналы);
|
||
8. Цифро-аналоговый преобразователь (ЦАП или DAC) и другие.
|
||
|
||
Микроконтроллеры внутри рассматриваемого семейства отличаются размером памяти, количеством ножек, аналогово-цифровых преобразователей и максимальной аналогово-цифровой разрешающей способностью.
|
||
|
||
### PIC16F18313
|
||
|
||
Рассмотрим микроконтроллер PIC16F18313. В [документации](https://ww1.microchip.com/downloads/aemDocuments/documents/MCU08/ProductDocuments/DataSheets/40001799F.pdf) можно узнать, что это за контроллер и что он умеет.
|
||
|
||
Например:
|
||
|
||
- это RISC контроллер, поддерживающий 48 инструкций;
|
||
- его входная тактовая частота — 32 MHz, минимальный тактовый цикл — 125 ns (величина критического пути);
|
||
- Он имеет C-компилятор, систему прерываний, 16-уровневый стек для вызова подпрограмм, четыре 8-битых таймера, Watchdog Timer (когда таймер досчитывает до конца, он сбрасывает микроконтроллер, то есть перезапускает его. Он нужен для того, чтобы избежать зависаний во время работы) и т.д.
|
||
|
||
Данный микроконтроллер имеет 3 конфигурации: с 8-ю, 14-ю и 16-ю ножкам.
|
||
|
||

|
||
|
||
*Рис. 1. Микроконтроллер PIC16F18313 с 8-ю ножками.*
|
||
|
||
Для каждой конфигурации имеется табличка, в которой расписано, для чего может использоваться каждый конкретный вывод.
|
||
|
||

|
||
|
||
*Рис. 2. Таблица подключения периферийных устройств для микроконтроллера PIC16F18313 с 8-ю ножками.*
|
||
|
||

|
||
|
||
*Рис. 3. Схема микроконтроллера PIC16F18313.*
|
||
|
||
У данного контроллера мы видим CPU (центральный процессор), Timing Generator, который формирует сигналы тактирования.
|
||
Микроконтроллер выполнен по Гарвардской архитектуре, то есть у него разделена память команд и память данных.
|
||
Порты ввода-вывода, периферийные устройства и память данных подключены к CPU общей шиной данных.
|
||
|
||
Для подключения микроконтроллера PIC16F18313 нужно между пинами питания (VDD (высокий потенциал) и VSS (нулевой потенциал или земля)) поставить конденсатор C2, а на вход MCLR собрать схему (Note 1).
|
||
|
||

|
||
|
||
*Рис. 4. Рекомендуемое минимальное подключение микроконтроллера PIC16F18313.*
|
||
|
||

|
||
|
||
*Рис. 5. Тракт данных ядра (микроархитектура).*
|
||
|
||
Память программ, на которую указывает PC. Из нее выходит 14-битная инструкция, которая попадает в регистр инструкций. Данные из регистра используются для адресации в RAM и в устроистве управления (Instruction Decode and Control), которое формирует управляющие сигналы для всех блоков процессора.
|
||
|
||
Также мы видим аккумуляторную архитектуру, то есть один из входов АЛУ — это регистр аккумулятор (W Reg).
|
||
|
||
Управление системой происходит по обращению к конкретным адресам:
|
||
|
||

|
||
|
||
*Рис. 6. Адреса регистров.*
|
||
|
||

|
||
|
||
*Рис. 7. Форматы кодирования для микроконтроллера PIC16F18313.*
|
||
|
||
Пример программирование 32-битного контроллера PIC. Для этого, после подключения питания (Bypass capacitors), подаем тактирование (SG636PCE 40MHz oscillator), подключаем микроконтроллер к программатору (RJ11 ICD3 Jack).
|
||
|
||

|
||
|
||
*Рис. 8. Схема подключения PIC32.*
|
||
|
||
Программатор одной стороной подключается к микроконтроллеру, а другой к компьютеру.
|
||
|
||

|
||
|
||
*Рис. 9. Программатор.*
|
||
|
||

|
||
|
||
*Рис. 10. Пример кода, для отладки микроконтроллера.*
|
||
|
||
## Микроконтроллеры на примере ARM
|
||
|
||
Посмотрим 32-битный ARM микроконтроллер [STM32H723VE](https://www.st.com/en/microcontrollers-microprocessors/stm32h723ve.html).
|
||
|
||
Видим, что у данного контроллера ядро Cortex-M7, он работает на частоте 550 MHz, имеет 1 MB флэш-памяти, 564 KB оперативной памяти.
|
||
|
||

|
||
|
||
*Рис. 11. Характеристики микроконтроллера STM32H723VE.*
|
||
|
||
Ядро умеет работать с числами с плавающей запятой.
|
||
|
||
Контроллер может работать с графикой, имеет режим low power (низкого энергопотребления), аналоговую периферию, 4 DMA (прямой доступ к памяти), 24 таймера, термометр, генератор случайных чисел.
|
||
|
||

|
||
|
||
*Рис. 12. Схема микроконтроллера STM32H723VE.*
|
||
|
||
В верхнем левом углу видим ядро, у которого отдельные кэш данных и кэш инструкции. Из него выходят наружу интерфейсы JTAG и ETM.
|
||
|
||
К ядру подключены 2 блока памяти данных, память инструкций.
|
||
|
||
У микроконтроллера много различных шин, работающих на разных скоростях, что необходимо для увеличения эффективности питания и работы. Например, периферия работает на более низких скоростях, а значит для нее нет необходимости делать лишние тактирования, которые происходили бы на высокоскоростной шине.
|
||
|
||
### Программа для микроконтроллера stm32f10x на языке C
|
||
|
||
Данная программа управляет миганием светодиода, подключенного к 5 разряду порта B:
|
||
|
||
```C
|
||
#include "stm32f10x.h" //библиотека, созданная производителем микроконтроллеров
|
||
|
||
int main() {
|
||
int i = 0;
|
||
RCC->APB2ENR |= RCC_APB2ENR_IOPBEN // включили тактирование порта B
|
||
GPIOB->CRL &= ~GPIO_CRL_CNFS; // сконфигурировали порт, как выходной
|
||
GPIOB->CRL |= GPIO_CRL_MODES_0; // задали скорость переключения порта
|
||
|
||
while(1){
|
||
i = 5000;
|
||
while(i--); // уменьшает i до нуля
|
||
GPIOB->BSRR = GPIO_BSRR_BS5; // установить 5 разряд порта B в единицу
|
||
i = 5000;
|
||
while(i--);
|
||
GPIOB->BSRR = GPIO_BSRR_BR5; // установить 5 разряд порта B в ноль
|
||
}
|
||
}
|
||
```
|
||
|
||

|
||
|
||
*Рис. 13. Структурная организация ARM7.*
|
||
|
||
ARM7 — это классический представитель ядер для микроконтроллеров.
|
||
|
||
Он включает в себя:
|
||
|
||
- Конвейер команд, подключенный к декодеру команд, который управляет всеми блоками тракта данных процессора;
|
||
- 32-битное АЛУ, которое может записывать в регистровый файл либо выдавать свое значение на регистр адреса, чтобы обращаться к основной памяти;
|
||
- Регистровый файл, один из регистров которого счетчик команд (PC), второй подключен к АЛУ.
|
||
|
||
У ARM7 старая архитектура. Она развивалась и появились новые ядра. Например, ARM9.
|
||
|
||
В него входят:
|
||
|
||
- Регистровый файл;
|
||
- Множество мультиплексоров, которые выбирают откуда и что пойдет на АЛУ;
|
||
- АЛУ;
|
||
- Shifter.
|
||
|
||

|
||
|
||
*Рис. 14. Структурная организация ARM9.*
|
||
|
||
Cortex-A9 — более современное, чем ARM7 и ARM9, ядро. Он еще может встречаться в контроллерах.
|
||
|
||
У Cortex-A9 есть:
|
||
|
||
- Кэш команд;
|
||
- Блок предсказания переходов:
|
||
- Глобальный буфер истории (Global history register);
|
||
- Кэш конечных адресов перехода (Branch target buffer). В нем кэшируется адрес, куда будет произведен переход;
|
||
- Стек адресов возврата;
|
||
- Блок переименования регистров(переименование нужно для суперскалярности, устранения конфликтов read-after-write, write-after-write);
|
||
- Окно диспетчеризации (очередь команд общая и она диспетчеризует куда пойдет следующая инструкция);
|
||
- Исполнительные устройства (АЛУ с умножением, АЛУ, FPU — Floating Point Unit и другие).
|
||
|
||

|
||
|
||
*Рис. 15. Схема работы Cortex-A9.*
|
||
|
||
Современные реализации микроконтроллеров могут включать в себя несколько ядер.
|
||
|
||

|
||
|
||
*Рис. 16. Cortex-A7 и Cortex-A15.*
|
||
|
||
При использовании двух ядер, одно может быть менее производительным чем другое, но при этом потреблять меньше энергии и использоваться в сценариях, где не нужна высокая эффективность. Переключения между ядрами позволяет балансировать между затратами на энергию и производительностью.
|
||
|
||
## Основные материалы лекции
|
||
|
||
1. [Ссылка](https://www.youtube.com/watch?v=Z0ohQdYn2VU&list=PL0def37HEo5KHPjwK7A5bd4RJGg4djPVf&index=21) на видеозапись лекции.
|
||
|
||
## Дополнительные материалы к лекции
|
||
|
||
1. [Ссылка](https://www.microchip.com/en-us/products/microcontrollers-and-microprocessors/8-bit-mcus/pic-mcus) на сайт производителя микропроцессоров PIC.
|
||
2. [Ссылка](https://onedrive.live.com/?authkey=%21AIXUSz0MyutL6hs&cid=1FF28DEC684C2C56&id=1FF28DEC684C2C56%2181801&parId=1FF28DEC684C2C56%2181696&o=OneUp) на статью, в которой описана сборка однотактного процессора с архитектурой PIC.
|