MicroPython:Библиотеки/esp32: различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Нет описания правки
Нет описания правки
Строка 79: Строка 79:
Более подробно читайте в [https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/peripherals/rmt.html документации к модулю RMT для ESP-IDF от Espressif].
Более подробно читайте в [https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/peripherals/rmt.html документации к модулю RMT для ESP-IDF от Espressif].


{{Спойлер|Внимание! В реализации модуля ''RMT'' в [[MicroPython]] нет некоторых функций оригинала (самая заметная из которых – это получение импульсов). Рассматривайте ''RMT'' как бета-инструмент, интерфейс которого в будущем может поменяться.}}
{{Блок/Инфо4
|1=Внимание
|2=В реализации модуля ''RMT'' в [[MicroPython]] нет некоторых функций оригинала (самая заметная из которых – это получение импульсов). Рассматривайте ''RMT'' как бета-инструмент, интерфейс которого в будущем может поменяться.}}


=== Конструктор ===
=== Конструктор ===

Версия от 20:33, 7 мая 2022

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Модуль esp32 – функционал ESP32[1]

Модуль esp32 содержит функции и классы, предназначенные исключительно для работы с микроконтроллерами ESP32.

Функции

Класс Partition – разделы flash-памяти

Этот класс предоставляет доступ к разделам flash-памяти устройства и содержит методы для беспроводных (over-the-air или OTA) обновлений.

Конструктор

Методы

Константы

Модуль RMT

Модуль RMT (от «remote control», т.е. «дистанционное управление»), использующийся исключительно для ESP32, изначально был создан для отправки и получения инфракрасных сигналов дистанционного управления. Но благодаря гибкой структуре и генерированию импульсов высокой точности (вплоть до 12.5 нс) его также можно использовать для передачи и получения многих других типов цифровых сигналов:

import esp32
from machine import Pin

r = esp32.RMT(0, pin=Pin(18), clock_div=8)
r  # RMT(channel=0, pin=18, source_freq=80000000, clock_div=8)

# для использования несущей частоты:
r = esp32.RMT(0, pin=Pin(18), clock_div=8, carrier_freq=38000)
r  # RMT(channel=0, pin=18, source_freq=80000000, clock_div=8, carrier_freq=38000, carrier_duty_percent=50)

# разрешение канала – 100 нс (1/(source_freq/clock_div)):
r.write_pulses((1, 20, 2, 40), start=0)  # отправьте «0» для 100 нс,
                                         # «1» для 2000 нс,
                                         # «0» для 200 нс,
                                         # «1» для 4000 нс

Входящая частота модуля RMT составляет 80 МГц (возможно, в будущем ее можно будет менять, но сейчас она фиксированная). Значение в clock_div – это делитель входной частоты, который задает разрешение RMT-канала. Число, заданное в write_pulses, умножается на разрешение – результат задает, какими будут импульсы.

Значение в clock_div – это 8-битный делитель (0-255), и каждый импульс можно задать, умножив разрешение, полученное с помощью делителя, на 15-битное число (0-32,768). Всего каналов восемь (0-7), и у каждого из них может быть свой делитель частоты.

Чтобы активировать у ESP32 функцию несущей частоты, задайте в carrier_freq что-то вроде «38000» – это стандартная несущая ИК-частота.

Итак, в примере выше частота 80 МГц делится на 8. В результате получается разрешение (1/(80МГц/8)) 100 нс. Поскольку начальный уровень (start) – это «0», и с каждым новым «тиком» сигнал переключается, получается битовый поток 0101 с сигналами продолжительностью 100 нс, 2000 нс, 200 нс, 4000 нс.

Более подробно читайте в документации к модулю RMT для ESP-IDF от Espressif.

Внимание

В реализации модуля RMT в MicroPython нет некоторых функций оригинала (самая заметная из которых – это получение импульсов). Рассматривайте RMT как бета-инструмент, интерфейс которого в будущем может поменяться.

Конструктор

Методы

ULP-сопроцессор

Константы

См.также

Внешние ссылки