Лабораторная работа №13. Работа с LED PWM контроллером
13.1 Цели и задачи
Цель работы - изучить порядок работы со средой создания программного обеспечения, освоить правила настройки портов ввода-вывода микроконтроллера ESP32-C3. Задачи:
- Изучить архитектуру микроконтроллера ESP32-C3
- Освоить работу с среде VSCode для разработки микроконтроллерных приложений.
- Разработать программу для управления контактами GPIO.
Презентация к блоку "Микроконтроллеры RISC-V"
13.2 Основные теоретические сведения о работе с микроконтроллерами для RISC-V
В настоящее время на рынке представлены микросхемы микроконтроллеров с архитектурой RISC-V различных производителей, например, 32 разрядные контроллеры SweRV Core (Western Digital); FE310 (SiFive); RV32M1 (NXP); MHS001 Huangshan (HUAMI); GD32VF103 (GigaDevice); CH32V103 (WCH); К1986ВК025 (Миландр); ESP32-C3 (Espressif); MIK32 (Микрон).
Перечисленные ядра, исполняющее инструкции RISC-V, разных производителей отличаются: глубиной конвейера, размерами и организацией кэша данных и команд, реализацией схем предсказаний переходов. При этом все ядра используют общую ISA (Instruction Set Architecture).
Описание использованного ядра RISC-V
Предлагаемый практикум ориентирован на работу с микроконтроллером ESP-RISC-V (ESP32-C3) компании Espressif Systems. Архитектура микроконтроллера показана на Рис. 13.1.
CPU and Memory. Процессорное ядро ESP-RISC-V представляет собой 32-разрядное ядро, основанное на RISC-V ISA, называемой "I" с префиксом RV32 или RV64 в зависимости от ширины целочисленного регистра. Эта базовая ISA реализует целочисленные вычислительные инструкции, целочисленные инструкции загрузки, сохранения и управления и является обязательной для всех реализаций RISC-V. Кроме того в ядре реализованы стандартные расширения: инструкций целочисленного умножения и деления ("M") и расширение набора сжатых инструкций стандарта RISC-V ("C"). Для реализации операций умножения и деления предусмотрены соответствующие 32-битные модули. Ядро имеет 4-х ступенчатый скалярный конвейер, оптимизированный по площади, мощности и производительности и поддерживающий тактовую частоту до 160 МГц. В состав процессорного ядра входят контроллер прерываний (INTC), обеспечивающий обработку 32 векторизованных прерываний с семью уровнями приоритета; модуль отладки (JTAG); и системная шина (SYS BUS) для доступа к памяти и периферийным устройствам.
Внутренняя память ESP32-C3 разделена на три сегмента: внутреннее ПЗУ (384 КБ), внутренняя SRAM (400 КБ) и Real Time Clock (RTC) FAST Memory (8 КБ).
- Внутреннее ПЗУ (384 КБ). ПЗУ содержит программные инструкции и некоторые данные низкоуровневых системных программ.
- Внутренняя память SRAM (400 КБ). Внутреннее статическое ОЗУ- это энергозависимая память, к которой процессор может быстро получить доступ в течение одного такта работы. Часть SRAM может быть настроена на работу в качестве кэша для доступа к внешней памяти. Доступ к некоторым частям SRAM возможен только через шину инструкций процессор, а к некоторым можно обращаться как через шину команд процессора, так и через шину данных процессора.
- Память RTC (Real Time Clock). RTC реализована в виде статического ОЗУ (SRAM), поэтому является волатильной, однако устойчивой в глубоком сне. RTC FAST Memory (8 КБ): к памяти RTC FAST может обращаться только центральный процессор, и она обычно используется для хранения инструкций и данных, которые должны сохраняться во время глубокого сна.
Внутри каждого сегмента могут существовать различные ограничения доступа к шине (например, некоторые части сегмента могут быть доступны только по шине данных процессора), поэтому каждый сегмент также дополнительно делится на части. Части внутренней памяти и диапазоны их адресов на шине данных и/или шине команд приведены в Таблице 13.1.
Тип шины | Границы адресов | Размер | Применение | |
---|---|---|---|---|
Младший адрес | Старший адрес | |||
Data bus | 0x3FF0_0000 | 0x3FF1_FFFF | 128 | Internal ROM 0 |
0x3FC8_0000 | 0x3FCD_FFFF | 384 | Internal SRAM | |
Instruction bus | 0x4000_0000 | 0x4003_FFFF | 256 | Internal ROM |
0x4004_0000 | 0x4005_FFFF | 128 | Internal ROM 1 | |
0x4037_C000 | 0x4037_FFFF | 16 | Internal SRAM 0 | |
0x4038_0000 | 0x403D_FFFF | 384 | Internal SRAM 1 | |
Data/Instruction bus | 0x5000_0000 | 0x5000_1FFF | 8 | RTC FAST Memory |
Общая структура и разделение адресов памяти показаны на Рис. 13.2.
Кэш-память (Cache), доступная только для чтения, представляет собой восьмистороннюю ассоциативную память, ее размер составляет 16 КБ, размер блока - 32 байта. Когда кэш активен, он занимает часть пространства внутренней памяти. Кэш единый для инструкций и данных, но одновременно может реализовывать кеширование либо инструкций, либо данных. При возникновении промаха кэш-памяти контроллер кэша инициирует запрос к внешней памяти по отношению к ядру памяти.
Обращение процессора к внешней памяти через кэш показано на Рис. 13.2. В соответствии с настройками MMU (блок управления памятью) кэш сопоставляет адрес процессора с физическим адресом внешней памяти. Благодаря такому сопоставлению адресов ESP32-C3 может адресовать до 16 МБ внешней флэш-памяти.
Блок Peripherals содержит следующие модули:
- GDMA (General Direct Memory Access) - общий контроллер прямого доступа к памяти, он обеспечивает передачу данных от периферийных устройств в память без участия центрального процессора, что позволяет снизить нагрузку на ЦП.
- ESP32-C3 имеет 22 вывода GPIO, которым можно назначить различные функции путем конфигурирования соответствующих регистров. Некоторые GPIO могут использоваться для аналоговых функций, например, для подключения входного сигнала АЦП. Все GPIO имеют возможность выбора внутреннего подтягивания или отвода, или могут быть установлены в высокоимпедансное состояние. Когда GPIO сконфигурированы как входные, входное значение может быть считано программно через регистр. Входные GPIO также могут быть настроены для генерации прерываний процессора по фронту или по уровню. Все цифровые выводы ввода-вывода являются двунаправленными, неинвертирующими и трехпозиционными, включая входные и выходные буферы с трехпозиционным управлением. Эти выводы могут быть мультиплексированы с другими функциями, такими как UART, SPI и т.д. Для работы с низким энергопотреблением GPIO могут быть переведены в состояние удержания. Для маршрутизации сигналов от периферийных устройств к выводам GPIO используются IO MUX и матрица GPIO, обеспечивая высококонфигурируемый ввод/вывод.
В кристалле реализованы контроллеры последовательных интерфейсов.
SPI (Serial Peripheral Interface) - синхронный последовательный интерфейс, используемый для связи с внешними периферийными устройствами. В ESP32-C3 интегрированы три контроллера SPI: SPI0, SPI1, предназначенные в основном для внутреннего использования и SPI2 (GP-SPI2 или General Purpose SPI2), обладающий широкими возможностями коммуникации. На рис. 13.3 показаны варианты организации обмена данными с устройствами SPI.
ESP32-C3 имеет два контроллера универсального асинхронного приемника/передатчика UART: UART0 и UART1, контроллер интерфейса I2S и шины I2C (Inter-Integrated Circuit). Для автомобильных и промышленных приложений в кристалл ESP32-C3 встроен двухпроводной автомобильный контроллер TWAI®. Для программирования флэш-памяти системы, для чтения выходных данных программы, а также для подключения отладчика в кристалле ESP32-C3 встроен контроллер USB Serial/JTAG, объединяющий функциональность USB-последовательного преобразователя и адаптера USB-to-JTAG, что исключает необходимость внешних адаптеров. В кристалле имеется устройство дистанционного управления RMT (Remote Control Peripheral), поддерживающее два канала инфракрасной дистанционной передачи и два канала инфракрасного дистанционного приема.
Для обработки аналоговых сигналов в микроконтроллере предусмотрены два 12-битных аналого-цифровых преобразователя ADC (Analog-to-Digital Converter) последовательного приближения (SAR ADC), которые могут обрабатывать аналоговые сигналы с шести выводов.
ШИМ-контроллер LED LED PWM может генерировать независимые цифровые сигналы по шести каналам. ШИМ контроллер используется для управления свечением светодиодов, при котором при котором длительность единичного широтно-импульсно-модулированного сигнала определяет яркость свечения за счет мерцания. Контроллер может генерировать цифровые сигналы с настраиваемыми периодами и рабочим циклом с точностью до 18 бит, поддерживая плавное увеличение или уменьшение рабочего цикла. При этом можно использовать несколько источников синхронизации, включая внешний кристалл. Контроллер может работать даже тогда, когда процессор находится в спящем режиме.
Температурный датчик (Temperature Sensor) предназначен для определения температуры внутри микросхемы. Температура определяется такими факторами, как тактовая частота микроконтроллера или нагрузка на входы/выходы. Выходной сигнал датчика представляет собой напряжение, которое преобразуется АЦП в цифровое значение.
Для реализации различных вариантов контроля времени в микросхеме предусмотрен широкий набор таймеров.
Блок Security содержит модули, реализующие защиту: контроль разрешений на доступ к внутренней и внешней памяти; модули шифрования и дешифрования памяти; средства криптографического аппаратного ускорения, реализованные на алгоритме симметричного шифрования AES (Advanced Encryption Standard), алгоритме безопасного хеширования SHA (Secure Hash Algorithm ) и криптографическом алгоритме с открытым ключом RSA (Rivest, Shamir и Adleman), генератор случайных чисел RNG (Random Number Generator) и средства проверки подлинности сообщений, использующий односторонние хеш-функции HMAC (Hash-based Message Authentication Code).
Блок Wireless digital circuit содержит следующие модули, обеспечивающие передачу данных по радиоканалам. Приемник 2,4 ГГц, демодулирующий радиочастотный сигнал 2,4 ГГц в квадратурные сигналы базовой полосы и преобразующий их в цифровую форму с помощью двух высокоскоростных АЦП высокого разрешения. В приемник интегрированы ВЧ-фильтры, средства автоматической регулировки усиления сигнала, схемы подавления смещения по постоянному току и фильтры базовой полосы. Передатчик 2,4 ГГц модулирующий квадратурные сигналы базовой полосы в радиочастотный сигнал 2,4 ГГц и управляющий антенной с помощью мощных фильтров. Встроенные средства цифровой калибровки дополнительно улучшают линейность усилителя мощности. Тактовый генератор, вырабатывающий квадратурные тактовые сигналы 2,4 ГГц как для приемника, так и для передатчика.
Модуль Wi-Fi MAC реализует полный MAC-протокол Wi-Fi 802.11 b/g/n, поддерживая базовый набор услуг (BSS) STA и SoftAP под управлением функции распределенного управления.
Модуль Bluetooth поддерживает оба существующих протокола: классический с базовой скоростью и повышенной скоростью передачи данных Bluetooth 4.2 BR/EDR (Basic Rate / Enhanced Data Rate) и Bluetooth LE (Low Energy) с низким энергопотреблением. Для подключения и настройки радиомодулей используются функции API Wi-Fi, предоставляемые производителем микроконтроллера.