ESP32. Урок 4. Способы управления периферийными устройствами ESP32. Порты ввода-вывода (GPIO). Режимы, электрические характеристики.
Общие принципы управления периферийными устройствами ESP32
Существуют различные определения понятия микроконтроллер. Я представляю себе микроконтроллер, как некое устройство, выполненное на одном кристалле (в виде одной микросхемы), которое состоит из процессора и периферийных устройств.
- Процессор включает в себя вычислительное устройство, оперативную и постоянную память. В нем хранится и выполняется программа. Процессор производит вычисления, реализует логические и математические алгоритмы. Но непосредственного доступа к внешним по отношению к микроконтроллеру устройствам он не имеет.
- Периферийные устройства это аппаратные узлы микроконтроллера, через которые процессор управляет внешними устройствами, подключенными к микроконтроллеру. Это порты ввода-вывода, АЦП, ЦАП, ШИМ-генераторы, различные интерфейсные контроллеры и т.п.
Смысл работы программы микроконтроллера и заключается в том, чтобы управлять подключенными к нему элементами через собственные периферийные устройства. Кому нужна программа, которая что-то вычисляет, но никуда не выводит, ничем не управляет.
Периферийные устройства имеют регистры, в которых хранятся различные данные, определяющие их режимы работы или необходимые для связи с внешними устройствами.
Эти регистры подключены к шине данных процессора, а их адреса спроецированы в его адресное пространство. Процессор обращается к регистрам через команды доступа к своей памяти.
- Таким образом, первый (самого низкого уровня) вариант управления периферийными устройствами это непосредственное обращение к их регистрам. Этот способ самый быстрый, требует минимума команд. Но для его использования необходимо глубокое понимание работы периферийных узлов на уровне каждого управляющего бита.
- Для упрощения этого процесса разработчики микроконтроллеров предоставляют программный интерфейс API. API (программный интерфейс приложения) это набор различных функций, классов, процедур, констант, с помощью которых можно управлять периферией микроконтроллера. При этом нет необходимости разбираться с назначением управляющих регистров, а достаточно вызвать функцию с определенными параметрами.
- Разработчики ESP32 предоставляют программистам библиотеку более высокого уровня esp-iot-solution. В ней большое число различных драйверов периферийных устройств, кодов реализации различных протоколов и сценариев IoT. Что такое IoT (интернет вещей) я писал в первом уроке.
- Никто не мешает создавать свои библиотеки-компоненты для работы с периферией ESP32 и внешними устройствами. Тоже определенный уровень управления.
- Стандартным программным компонентом для многих приложений ESP32 является многозадачная операционная система реального времени FreeRTOS. Она входит в пакет esp-idf.
Планирую строить уроки, не привязываясь к последовательному обучению этим способам работы с периферией ESP32.
Если начну, например, с работы только через API, то буду вынужден долго перебирать все периферийные устройства ESP32. А потом придется возвращаться к работе с ними через IoT-библиотеку и т.д.
Буду стараться привязывать уроки к периферии ESP32 и применению ее в задачах высокого уровня. А способы работы с периферийными устройствами постараюсь связать ссылками навигации на отдельных страницах. Сам пока не знаю, как это будет выглядеть.
И еще. Прямое обращение к регистрам трогать не буду. Может, в крайних случаях, когда необходимо высокое быстродействие. Регистров периферии ESP32 очень много. На их изучении можно свихнуться.
Порты ввода-вывода (GPIO)
Для связи с внешними устройствами у микроконтроллера существуют порты ввода-вывода. Они могут работать в режиме универсальных портов ввода-вывода или выполнять альтернативные функции. Второй вариант их применения будем изучать в уроках, посвященных конкретным периферийным устройствам.
В этом уроке разбираемся с использованием портов в режиме универсальных дискретных входов и выходов, состоянием которых можно управлять программно.
В системе ESP32 есть 34 физических вывода портов. Каждый из них может быть использован как универсальный вывод или подключен к внутреннему периферийному устройству.
Упрощенная схема коммутации сигналов портов ввода-вывода выглядит так.
Мультиплексор 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 В.
Похожие запросы по теме:
|