Урок 4. Способы управления периферийными устройствами ESP32. Порты ввода-вывода (GPIO). Режимы, электрические характеристики.

Уроки ESP32

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

Предыдущий урок     Список уроков     Следующий урок

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

 

Общие принципы управления периферийными устройствами ESP32.

Существуют различные определения понятия микроконтроллер. Я представляю себе микроконтроллер, как некое устройство, выполненное на одном кристалле (в виде одной микросхемы), которое состоит из процессора и периферийных устройств.

  • Процессор включает в себя вычислительное устройство, оперативную и постоянную память. В нем хранится и выполняется программа. Процессор производит вычисления, реализует логические и математические алгоритмы. Но непосредственного доступа к внешним по отношению к микроконтроллеру устройствам он не имеет.
  • Периферийные устройства это аппаратные узлы микроконтроллера, через которые процессор управляет внешними устройствами, подключенными к микроконтроллеру. Это порты ввода-вывода, АЦП, ЦАП, ШИМ-генераторы, различные интерфейсные контроллеры и т.п.

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

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

Эти регистры подключены к шине данных процессора, а их адреса спроецированы в его адресное пространство. Процессор обращается к регистрам через команды доступа к своей памяти.

  • Таким образом, первый (самого низкого уровня)  вариант управления периферийными устройствами это непосредственное обращение к их регистрам. Этот способ самый быстрый, требует минимума команд. Но для его использования необходимо глубокое понимание работы периферийных узлов на уровне каждого управляющего бита.
  • Для упрощения этого процесса разработчики микроконтроллеров предоставляют программный интерфейс API. API (программный интерфейс приложения) это набор различных функций, классов, процедур, констант, с помощью которых можно управлять периферией микроконтроллера. При этом нет необходимости разбираться с назначением управляющих регистров, а достаточно вызвать функцию с определенными параметрами.
  • Разработчики ESP32 предоставляют программистам библиотеку более высокого уровня esp-iot-solution. В ней большое число различных драйверов периферийных устройств, кодов реализации различных протоколов и сценариев IoT. Что такое IoT (интернет вещей) я писал в первом уроке.
  • Никто не мешает создавать свои библиотеки-компоненты для работы с периферией ESP32 и внешними устройствами. Тоже определенный уровень управления.
  • Стандартным программным компонентом для многих приложений ESP32 является многозадачная операционная система реального времени FreeRTOS. Она входит в пакет esp-idf.

Планирую строить уроки, не привязываясь к последовательному обучению этим способам работы с периферией ESP32.

Если начну, например, с  работы только через API, то буду вынужден долго перебирать все периферийные устройства ESP32. А потом придется возвращаться к работе с ними через IoT-библиотеку и т.д.

Буду стараться привязывать уроки к периферии ESP32 и применению ее в задачах высокого уровня. А способы работы с периферийными устройствами постараюсь связать ссылками навигации на отдельных страницах. Сам пока не знаю, как это будет выглядеть.

И еще. Прямое обращение к регистрам трогать не буду. Может, в крайних случаях, когда необходимо высокое быстродействие. Регистров периферии ESP32 очень много. На их изучении можно свихнуться.

 

Порты ввода-вывода (GPIO).

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

В этом уроке разбираемся с использованием портов в режиме универсальных дискретных входов и выходов, состоянием которых можно управлять программно.

В системе ESP32 есть 34 физических вывода портов. Каждый из них может быть использован как универсальный вывод или подключен к внутреннему периферийному устройству.

Упрощенная схема коммутации сигналов портов ввода-вывода выглядит так.

Схема портов GPIO ESP32

Мультиплексор IO_MUX выбирает для каждого разряда порта режим универсального ввода-вывода или альтернативную функцию.

Матрица мультиплексоров GPIO matrix коммутирует сигналы периферийных устройств на выводы портов.

Для нас главное, что для каждого вывода можно:

  • выбрать режим универсального ввода-вывода;
  • задать режим альтернативной функции;
  • задать конкретную альтернативную функцию, т.е. выбрать сигнал периферийного устройства.

Каждый дискретный вывод может быть установлен в режим:

  • входа;
    • без подтягивающего резистора;
    • с подтягивающим резистором на питание;
    • с подтягивающим резистором на землю;
  • активного выхода;
  • выхода с открытым стоком.

Режимы и возможности, в принципе, такие же, как у портов STM32. И там, и здесь разработчики реализовали все возможные варианты. Но у ESP32 практически неограниченный выбор коммутации сигналов альтернативных функций на выводы.

 

Электрические параметры портов ввода-вывода.

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

Обозначение Параметр Мин.
значение
Типовое
значение
Макс.
значение
Единица
измерения
VIH Входное напряжение высокого уровня 0,75*VDD - VDD + 0,3 В
VIL Входное напряжение низкого уровня - 0,3 - 0,25*VDD В
IIH, IIL Входной ток - - 50 нА
VOH Выходное напряжение высокого уровня 0,8*VDD - - В
VOL Выходное напряжение низкого уровня - - 0,1*VDD В
IOH Вытекающий ток вывода - 40 - мА
IOL Втекающий ток вывода - 28 - мА
RPU, RPD Сопротивление подтягивающего резистора - 45 - кОм

Я выделю главное.

  • Дискретные входы воспринимают за низкий уровень сигналы с напряжением не выше 0,825 В, а за высокий уровень – не ниже 2,475 В.
  • Напряжение на дискретном выходе не менее 2,64 В при высоком состоянии сигнала, и не более 0,33 В при низком состоянии.
  • Максимально допустимый выходной вытекающий ток выводов 40 мА, а втекающий - 28 мА.

Это значения параметров при напряжении питания микроконтроллера 3,3 В.

Про GPIO-порты писать больше нечего.

 

В следующем уроке научимся работать с портами ввода-вывода через функции API. Начнем разрабатывать первые программы для ESP32.

 

Предыдущий урок     Список уроков     Следующий урок

0

Автор публикации

не в сети 15 часов

Эдуард

219
Комментарии: 1754Публикации: 178Регистрация: 13-12-2015

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить" Вы даёте свое согласие на обработку введенной персональной информации в соответствии с Федеральным Законом №152-ФЗ от 27.07.2006 "О персональных данных".