Новый чип ESP32-PICO-D4

Совмещенные чип и модуль Bluetooth/Wi-Fi производства Espressif Systems

№ 3’2017
PDF версия
В статье рассмотрены особенности совмещенных Bluetooth/Wi-Fi-чипов и модулей ESP32, а также основные характеристики, представленные в технической документации, опубликованной компанией Espressif Systems в 2017 г.

Структура чипа ESP32 и работа его основных блоков

Пример маркировки на корпусе чипа серии ESP32

Рис. 1. Пример маркировки на корпусе чипа серии ESP32

Китайская фирма Espressif Systems Pte. Ltd, это полупроводниковая фаблесс-компания с головным офисом в парке высоких технологий Шанхая (Shanghai Zhangjiang High-Tech Park, КНР), хорошо известная во всем мире как один из ведущих производителей простых, бюджетных чипов Bluetooth и Wi-Fi, а также модулей и отладочных комплектов, созданных на базе этих чипов. Фирма не имеет собственных производственных мощностей и производит свою продукцию под торговой маркой Espressif на OEM-предприятиях, например Taiwan Semiconductor Manufacturing Company (TSMC). На российском рынке официальной поставкой и технической поддержкой занимается компания Макро Групп.

Последняя разработка Espressif, поступившая в массовую продажу в конце 2016 г., представляет собой однокристальный совмещенный Wi-Fi/Bluetooth-чип ESP32. Он изготовлен на заводе TSMC с использованием технологии 40 нм. Доступные для заказа модели ESP32 (по данным на 10.08.2017) перечислены в таблице 1.

Таблица 1. Доступные для заказа модели ESP32

ESP32-D0WDQ6

Dual core

No embedded flash

Wi-Fi b/g/n + BT/BLE

Dual Mode

QFN 6×6

ESP32-D0WD

Dual core

No embedded flash

Wi-Fi b/g/n + BT/BLE

Dual Mode

QFN 5×5

ESP32-D2WD

Dual core

16-Mbit embedded flash

Wi-Fi b/g/n + BT/BLE

Dual Mode

QFN 5×5

ESP32-S0WD

Single core

No embedded flash

Wi-Fi b/g/n + BT/BLE

Dual Mode

QFN 5×5

Благодаря двухъядерному процессору, высокой степени интеграции, поддержке интерфейсов SPI, SDIO, I2C, I2S, UART, Ethernet, IrDA, программируемому усилителю мощности и другим уникальным свойствам, на базе чипов серии ESP32 можно с минимальными затратами создавать законченные, полностью готовые Bluetooth/Wi-Fi-устройства для самых различных приложений.

Общие технические характеристики чипов серии ESP32 приведены в таблице 2. Далее будут даны пояснения к этой таблице.

Таблица 2. Общие технические характеристики чипов серии ESP32

Wi-Fi

802.11 b/g/n

Bluetooth

v4.2

Микропроцессор

2×240 МГц Tensilica LX6

ROM, кбайт

448

SRAM, кбайт

520

SRAM (RTC), кбайт

16

QSPI flash/SRAM, Мбайт

4×16

Напряжение питания, В

2,3–3,6

Антенна

PCB-антенна или IPEX-разъем для внешней антенны

Вводы/выводы

34×GPIO

UART

Ethernet

MAC-интерфейс с поддержкой DMA и IEEE 1588

SPI

4

I2S

2

АЦП, бит

12 (SAR до 18 каналов)

ЦАП, бит

2х8

I2C

2

SDIO

Master/Slave, 50 МГц

Поддержка SDIO

Хост-контроллер SD/SDIO/eMMC/

SDIO/SPI

1 Slave

IrDA

Модуль удаленного контроля RMT (Remote Control)

ШИМ

Модуль ШИМ для управления двигателем, контроллер LED_PWM

LED PWM

до 16 каналов

LNA

Низкошумящий аналоговый усилитель для работы с внешними датчиками

Магнитометр

Встроенный датчик Холла

Измерение температуры

Встроенный температурный датчик

Датчики касания

10 вводов для емкостных датчиков касания

RTC

Блок часов реального времени для управления режимами энергосбережения

Таймеры общего назначения

4 встроенных 64-разрядных

Сторожевые таймеры

3 встроенные, программируемые

Синхронизация CPU

Генератор 160 МГц

Синхронизация периферии

Тактовый генератор для периферии I2S, кварцевый генератор 8 МГц

Карты памяти

Поддержка интерфейса SD-card

Безопасность

WEP, WPA/WPA2 PSK/Enterprise

Криптографическое аппаратное ускорение

AES/SHA2/Elliptical Curve Cryptography/RSA-4096

OTP

1024 бит, в том числе 768 бит для прикладных задач

Максимальная выходная мощность Wi-Fi, дБм

19,5 (802.11b), 16,5 (802.11g), 15,5 дБм (802.11n)

Минимальная чувствительность
приемника, дБм

–98

Энергопотребление в режиме глубокого сна, мкА

5

Диапазон рабочих температур, °C

–40…+125

Конструктив и габариты, мм

QFN 6×6, QFN 5×5

Небольшие размеры и расширенные режимы энергосбережения позволяют использовать чипы серии ESP32 в миниатюрных устройствах с батарейным питанием, а также в некоторых сегментах IoT, таких, например, как умный дом, охранные системы и т. д. В серию чипов ESP32 входят модели ESP32-D0WDQ6, ESP32-D0WD, ESP32-D2WD, ESP32-S0WD.

В последней версии технической документации на ESP32 (V1.7) [1] отмечается, что в августе 2017 г. для заказа доступны модели, перечисленные в таблице 1.

Пример маркировки на корпусе чипа серии ESP32 показан на рис. 1. Приведем расшифровку символов. Первый означает ядро: «D» – Dual Core, «S» – Single Core. Второй относится к памяти: «0» – нет встроенной Flash-памяти, «2» – встроенная Flash-память 16 Мбит. Третий и четвертый символы определяют стандарты Wi-Fi и Bluetooth: «WD» – Wi-Fi b/g/n + BT/BLE Dual Mode; «AD» – Wi-Fi a/b/g/n + BT/BLE Dual Mode; «CD» – Wi-Fi ac/c/b/n/g + BT/BLE Dual Mode. Пятый и шестой символы обозначают конструктив: «Q6» – QFN 6×6, отсутствие символов – QFN 5×5.

Обсудить все технические детали и характеристики чипа ESP32 в данной статье не представляется возможным. Их подробное описание можно найти в документах, которые доступны свободно на сайте Espressif [1]. Мы рассмотрим только общие принципы работы основных его блоков. На рис. 2 показана структурная схема ESP32 [2]. Каналы Wi-Fi и Bluetooth выполнены в виде отдельных аппаратных блоков, работающих под управлением конфигурируемых процессоров Xtensa производства фирмы Tensilica.

Структурная схема чипа ESP32

Рис. 2. Структурная схема чипа ESP32

Радиочастотный блок чипов ESP32 (рис. 2) содержит следующие элементы:

  • приемник 2,4 ГГц;
  • передатчик 2,4 ГГц;
  • тактовый генератор;
  • узлы локального электропитания;
  • переключатель сбалансированных линий с согласованным импедансом.

В приемнике (RF receive) чипа ESP32 используется квадратурное преобразование исходного RF-сигнала на нулевую промежуточную частоту с дальнейшей цифровой обработкой. Предварительная селекция сигнала осуществляется полосовым фильтром. Смеситель трансформирует полезный сигнал на фиксированную промежуточную частоту. Далее, в низкочастотной области спектра, сигнал оцифровывается с помощью двух АЦП с высоким разрешением. В приемнике использованы аппаратные средства автоматического контроля усиления и смещения нуля АЦП, обеспечивающие прецизионную обработку принимаемых сигналов.

В передатчике (RF transmit) используется метод оцифровки с повышением частоты, в котором цифровой широкополосный сигнал конвертируется в цифровой сигнал промежуточной частоты. Конвертер ЦАП, на который поступает сигнал, преобразует цифровой сигнал в аналоговый и передает на выходной усилительный каскад. Высокоточный усилитель мощности обеспечивает линейность во всем диапазоне передаваемых частот.

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

Тактовый генератор (Clock generator) вырабатывает квадратурные тактовые сигналы 2,4 ГГц, необходимые для работы приемника и передатчика чипа. Он содержит цепи калибровки и автоматического самоконтроля, разработанные и запатентованные Espressif Systems. Следует подчеркнуть, что все необходимые компоненты, обеспечивающие полноценную работу генератора, интегрированы в чип.

Микропроцессорный блок (Core and memory) содержит процессор и память (ROM, SRAM). Модель ESP32-S0WD имеет один микропроцессор. Остальные чипы серии ESP32 представляют собой двухъядерную систему с двумя микропроцессорами Harvard Architecture Xtensa 32 bit LX6. При этом один процессор можно использовать для работы в реальном времени, а второму поручить обработку коммуникационных протоколов и приложений. Поэтому два процессора чипа ESP32 получили названия PRO_CPU (protocol) и APP_CPU (application). Каждый из двух процессоров Harvard Architecture Xtensa LX6 использует 32-битовую адресацию, которая дает возможность доступа к физическому адресному пространству объемом 4 Гбайт, общему для программ и данных. При этом адресные пространства симметричны между двумя процессорами. Для большинства простых задач, не требующих особого быстродействия, оба процессора являются взаимозаменяемыми. Чип ESP 32 может работать как в качестве центрального процессора с поддержкой Open CPU, так и в качестве подчиненного устройства в режиме slave device, которое управляется внешним микроконтроллером.

Процессор Harvard Architecture Xtensa 32 bit LX6 чипа ESP32 обладает следующими характеристиками:

  • семиступенчатая конвейерная обработка с тактовой частотой до 240 МГц (160 МГц для модели ESP32-S0WD);
  • производительность до 600 dmips;
  • 16/24-битный набор инструкций, обеспечивающий высокую плотность кода;
  • поддержка режима работы с плавающей точкой;
  • поддержка DSP-команд, например 32-разрядный умножитель, 32-разрядный делитель, 40-разрядный MAC-адрес;
  • поддержка 32 адресов обработчика прерываний из 70 источников;
  • интерфейсы RAM/ROM Xtensa для инструкций и данных;
  • интерфейс локальной памяти Xtensa для быстрого доступа к периферийному регистру;
  • прерывание с внешними и внутренними источниками;
  • отладочный интерфейс JTAG на выводах IO12, IO13, IO14, IO15, предназначенный для разработчиков ПО.

Применение в чипе ESP32 двух мощных микропроцессоров Xtensa позволяет использовать для его программирования множества различных архитектур. Так, например, специалисты Espressif адаптировали известный отладчик OpenOCD (Open On-Chip Debugger) с открытым исходным кодом для чипов ESP32 и написали дополнительные специальные утилиты, которых не было в исходном тексте этого ПО. Кроме того, Espressif применила многозадачную операционную систему реального времени FreeRTOS в микропроцессорной архитектуре нового чипа ESP32. На сайте Espressif представлено подробное описание базового программно-аппаратного обеспечения, предназначенного для отладки ESP32 с помощью OpenOCD, xtensa-esp32-elf-gdb и FreeRTOS.

Система FreeRTOS, поставляемая с отладочным комплектом ESP-IDF v2.0 [3], позволяет программировать одновременную работу двух процессоров, разделяя задачи по сложности и оперативности. Кроме собственных разработок Espressif, для программирования чипов ESP32 можно использовать такие известные программные приложения, как Mongoose OS, MicroPyhon, NodeMcu, Arduino, Platformio.org. Такой подход предоставляет пользователям ESP32 возможность создавать свои собственные приложения с применением GCC 5.2.0 и C++ в минимальные сроки и с минимальными затратами [4].

Структурная схема распределения памяти чипов ESP32 и ее взаимодействия с процессорами показана на рис. 3 [5].

Структурная схема распределения памяти чипов ESP32 и ее взаимодействия с процессорами

Рис. 3. Структурная схема распределения памяти чипов ESP32 и ее взаимодействия с процессорами

Внутренняя память серии чипов ESP32 включает в себя:

  • 448 кбайт ПЗУ (ROM, рис. 2) для загрузчика и основных функций;
  • 520 кбайт СОЗУ (SRAM, рис. 2) для данных и инструкций;
  • 8 кбайт SRAM в блоке RTC для работы с процессором в режиме глубокого сна (RTC SLOW Memory);
  • 8 кбайт SRAM в блоке RTC для хранения данных и работы основного процессора во время загрузки при выходе из режима глубокого сна (RTC FAST Memory);
  • 256 бит для системы (MAC-адрес и конфигурация микросхемы);
  • 768 бит зарезервированы для клиентских приложений, включая Flash-Encryption и Chip-ID.

В серии ESP32 модель ESP32-D2WD имеет встроенную Flash-память объемом 16 Мбит, которая подключена через выводы GPIO16, GPIO17, SD_CMD, SD_CLK, SD_DATA_0 и SD_DATA_1. Другие модели этой серии в настоящее время не имеют встроенной Flash-памяти.

Кроме того, чипы ESP32 поддерживают до 16 Мбайт внешней QSPI Flash-памяти, а также SRAM с аппаратной защитой, использующей метод AES, предотвращающий несанкционированный доступ к программам и данным пользователя.

До 16 Мбайт внешней Flash-памяти могут быть использованы для работы с процессором при 16- и 32-разрядной адресации. До 8 Мбайт внешней Flash-памяти и SRAM можно использовать для 8-, 16-, 32-разрядной адресации. Чтение данных возможно как из Flash-памяти, так и из SRAM. Запись данных организована в память SRAM.

В качестве примера внешней памяти, совместимой с чипами серии ESP32, можно привести SPI Flash W25Q80NE производства Windbond. Эта память с питанием 1,2 В емкостью 8 Мбайт оптимально подходит для чипов ESP32 [6]. Встроенная память, внешняя память и периферийные устройства в серии ESP32 подключены к общей шине данных и шине команд процессора. При этом в двухъ­ядерных чипах оба процессора используют одни и те же адреса для доступа к одной и той же памяти. Периферийные устройства чипа могут получать доступ к встроенной памяти также через DMA.

Блок Cryptographic hardware acceleration (рис. 2) поддерживает на аппаратном уровне ускорение следующих алгоритмов шифрования:

  • симметричный Advanced Encryption Standard (AES FIPS PUB 197);
  • безопасный хэширования Secure Hash Algorithm (SHA FIPS PUB 180-4);
  • криптографический с открытым ключом (Rivest, Shamir, AdlemanRSA);
  • генератор случайных чисел (Random Number Generator, RNG).

Блок аппаратного ускорения чипа ESP32 поддерживает независимую арифметику, например большое целочисленное умножение и большое целочисленное модульное умножение. Максимальная длина операции для RSA, ECC, Big Integer Multiply и Big Integer Modular Multiplication составляет 4096 бит. Аппаратное ускорение значительно улучшает время обработки и снижает сложность программного обеспечения. Кроме того, благодаря шифрованию кода и динамическому дешифрованию снижает до минимума несанкционированный доступ к Flash-памяти.

Блок часов реального времени (RTC, рис. 2) включает в себя: сопроцессор с ультранизким энергопотреблением (Ultra Low Power, ULP); память восстановления (Recovery memory), предназначенную для хранения загрузочных данных, параметров периферии и работы с центральными процессорами в режиме глубокого сна; блок управления электропитанием (PMU).

Сопроцессор ULP используется в режиме глубокого сна (deep sleep), когда отключены основные процессоры. Он может быть запущен либо внешним событием или таймером, либо комбинацией этих событий при сохранении минимальной мощности потребления. Сопроцессор ULP и Recovery memory остаются включенными во время deep sleep. Запущенный сопроцессор будет иметь доступ к периферийным устройствам, внутренним таймерам и встроенным датчикам. В зависимости от состояния этих периферийных устройств сопроцессор либо восстановит полную работоспособность чипа, либо оставит его в состоянии deep sleep.

Последовательность операций работы ULP

Рис. 4. Последовательность операций работы ULP

На рис. 4 показаны эпюры последовательности операций работы ULP, включающей следующие этапы:

  1. Программное обеспечение включает таймер ULP, используя бит RTC_CNTL_ULP_CP_SLP_TIMER_EN.
  2. Таймер ULP заканчивается, и сопроцессор ULP запускает программу SENS_PC_INIT.
  3. Программа ULP выполняет инструкцию HALT, сопроцессор останавливается, а таймер перезапускается.
  4. Программа ULP выполняет инструкцию SLEEP и изменяет регистр периода таймера спящего режима.
  5. Программа отключает таймер ULP, используя бит RTC_CNTL_ULP_CP_SLP_TIMER_EN.

Для электроснабжения чипа необходимы внешние раздельные шины питания цифровой и аналоговой части.

Схема внешнего электропитания чипа ESP32 показана на рис. 5.

Схема электропитания основных блоков чипа ESP32

Рис. 5. Схема электропитания основных блоков чипа ESP32

Питание цифровой части реализуется по следующим цепям:

  • VDD3P3_RTCпитание для RTC и CPU;
  • VDD3P3_CPUпитание для CPU;
  • VDD_SDIO подключается к выходу внутреннего LDO, вход которого VDD3P3_RTC (когда VDD_SDIO подключен к той же плате PCB вместе с VDD3P3_RTC, внутренний LDO отключается автоматически).

Выводы Pin19 и Pin37 служат контактами питания для RTC и CPU соответственно. Источник питания цифровой части должен работать в диапазоне 1,8-3,6 В. Внутренний LDO VDD_SDIO можно использовать в качестве источника питания 1,8 В с максимальным током около 40 мА.

Выводы Pin1, Pin43 и Pin46 служат для питания низкоточной аналоговой части чипа. Выводы Pin3 и Pin4 используются для питания усилителей мощности.

Линия CHIP_PU предназначена для перезагрузки чипа ESP32, который отключается, когда эта линия удерживается на низком уровне (ниже 0,6 В) в течение интервала не менее 200 мкс.

Следует особо подчеркнуть, что правильная организация электропитания чипа во многом обеспечивает его надежную работу. Поэтому фирма Espressif гарантирует заявленные в технической документации параметры исключительно при соблюдении рекомендаций, приведенных в [2, 5, 7]. В частности, можно использовать схему электропитания модуля ESP-WROOM-32, приведенную в [8].

Узел управления (PMU) в блоке RTC (рис. 2) поддерживает пять режимов электропитания: active, modem sleep, light sleep, deep sleep, hibernation. Состояние основных блоков чипа ESP32 в различных режимах экономного электропитания приведено в таблице 3.

Таблица 3. Состояние основных блоков чипа ESP32 в различных режимах экономного электропитания

Блок

Режим энергосбережения

Active

Modem sleep

Light sleep

Deep sleep

Hibernation (работают только RTC timer и RTC GPIOs)

CPU

ВКЛ

ВКЛ

ПАУЗА

ВЫКЛ

ВЫКЛ

Wi-Fi/Bluetooth,

RF-узел

ВКЛ

ВЫКЛ

ВЫКЛ

ВЫКЛ

ВЫКЛ

Память и периферия

блока RTC

ВКЛ

ВКЛ

ВКЛ

ВКЛ

ВЫКЛ

Сопроцессор ULP

ВКЛ

ВКЛ

ВКЛ

ВКЛ/ВЫКЛ

ВЫКЛ

В таблице 4 приведены примеры энергопотребления для некоторых режимов работы чипа ESP32. Подробное описание потребления в нормальном и энергосберегающем режимах для приема и передачи Wi-Fi и Bluetooth на разных скоростях приведено в [2, 5].

Таблица 4. Примеры энергопотребления для некоторых режимов работы чипа ESP32

Режим энергосбережения

Описание

Потребление

Active

Tx: 802.11b, DSSS 1 Мбит/с, 19,5 дБм

240 мА

Rx:802.11b/g/n

100 мА

Tx: BT/BLE, POUT = 0 дБм

130 мА

Rx: BT/BLE

100 мА

Modem sleep

CPU включен

Максимальная скорость 240 МГц:
30–50 мА

Нормальная скорость 80 МГц: 20–25 мА

Низкая скорость 2 МГц: 2–4 мА

Light sleep

 

0,8 мА

Deep sleep

Работает только сопроцессор ULP

150 мкА

Работает только контрольная периферия ULP

100 мкА

Работают только таймер и память

10 мкА

Hibernation

Работает только таймер RTC

5 мкА

В чипе ESP32 поддерживаются АТ-команды. Программное обеспечение AT-команд чипа ESP32 разработано на основе платформы Espressif IoT DevelopmentESP-IDF.

Новый чип ESP32-PICO-D4

Рис. 6. Новый чип ESP32-PICO-D4

Все АТ-команды чипа ESP32 разбиты на пять функциональных групп: Basic AT Commands, Wi-Fi AT Commands, TCP/IP-Related AT Commands, AT Commands with Configuration Saved in the NVS Area. Каждая группа команд отвечает за определенный режим работы. Так, например, AT+CWMODE переводит чип в режим работы Wi-Fi. Команда AT+GSLP включает режим глубокого сна и т. д. Подробное описание всех АТ-команд, а также примеры их использования приведены в [9]. Следует обратить внимание на то, что в этом документе отсутствуют АТ-команды для Bluetooth. Для работы с каналом Bluetooth фирма Espressif разработала программу EspBlufi, которая функционирует в настоящее время только в среде Android. Подробнее об этом будет сказано в следующих разделах.

По умолчанию, в заводской конфигурации чипы ESP32 поставляются с прошивкой, которая не поддерживает АТ-команды. Для их поддержки нужно загрузить дополнительное ПО. Система AT-команд Espressif Systems оформлена в виде файла libat_core.a, который включен в прошивку AT BIN. Подробная инструкция о том, где можно скачать ПО, поддерживающее АТ-команды чипа, и как его установить, приведена в [9].

Первого сентября 2017 г. фирма Espressive анонсировала новый чип ESP32-PICO-D4 (рис. 6), содержащий в одном корпусе базовый чип ESP32, 4 Мбайт SPI Flash, кварцевый генератор и большинство развязывающих конденсаторов. Размеры чипа 7×7×0,94 мм. ESP32-PICO-D4 поддерживает все перечисленные выше функции чипа ESP32.

 

Интерфейсы и периферия чипа ESP32

GPIO

Пользовательские вводы/выводы GPIO подключены к 34 контактным площадкам на корпусе чипа ESP32. Часть GPIO могут быть сконфигурированы как внешние интерфейсы с помощью регистров встроенных мультиплексоров IO_MUX, RTC IO_MUX и коммутатора сигналов процессора GPIO matrix, которые отвечают за маршрутизацию сигналов от выводов периферии до контактных площадок на корпусе чипа.

На рис. 7 показана схема формирования пользовательских вводов/выводов с помощью регистров мультиплексоров IO_MUX и RTC IO_MUX. С помощью этих регистров встроенных в чип модулей можно реализовывать различные комбинации, объединяющие 162 периферийных входа и 176 выходных управляющих сигналов, а также комбинации быстрых периферийных контрольных сигналов.

Схема формирования пользовательских вводов/выводов с помощью регистров мультиплексоров IO_MUX и RTC IO_MUX

Рис. 7. Схема формирования пользовательских вводов/выводов с помощью регистров мультиплексоров IO_MUX и RTC IO_MUX

Мультиплексор IO_MUX содержит регистры для каждого конкретного ввода/вывода, которые определяют направление сигнала и функциональность IO. Контактные площадки на корпусе чипа могут быть соединены с соответствующими выводами процессора либо через коммутатор GPIO Matrix, либо напрямую, минуя коммутатор. Так, например, быстродействующие интерфейсы Ethernet, SDIO, SPI, JTAG, UART подключаются непосредственно к процессорам в обход GPIO Matrix.

В зависимости от назначения, по рассмотренной схеме можно реализовывать несколько видов GPIO: только цифровые, аналоговые, емкостные сенсорные. При этом аналоговые и емкостные сенсорные GPIO могут быть настроены как цифровые GPIO.

Большинство цифровых IO имеют дву­направленную, неинвертирующую схему с тремя устойчивыми состояниями, включая входной и выходной буферы. Эти GPIO можно использовать для реализации таких интерфейсов, как, например, SDIO, UART, SPI и др. При переключении в режим энергосбережения имеется возможность сохранения состояний GPIO.

Подробно процедура формирования GPIO чипа ESP32 описана в [5].

UART

Универсальные асинхронные приемо-передатчики UART (3 шт.: UART0, UART1 и UART2) чипа ESP32 обеспечивают асинхронную связь по последовательному интерфейсу RS-232 со скоростью до 5 Мбит/с. Кроме того, UART поддерживают протоколы IrDA (Infrared Data Exchange), а также параллельного интерфейса RS-485. Встроенные UART обеспечивают аппаратное управление сигналами CTS и RTS и управление потоком программного обеспечения XON и XOFF. Связь с этими интерфейсами может быть реализована напрямую с помощью CPU или через контроллер DMA.

Скорость передачи данных задается программно и может быть определена с помощью функции самотестирования. Для буферной памяти трех UART (Tx/Rx-FIFO) отведено 1024×8 бит RAM. Размер данных может быть 5, 6, 7, 8 бит. Все три UART поддерживают бит четности. Стоповые биты: 1/1,5/2/3/4. Подробное описание UART чипа ESP32 приведено в [5].

I2C

Два интерфейса I2C чипа ESP32, в зависимости от настроек, могут быть использованы как ведущий (Master) или как ведомый (Slave).

Основные технические характеристики I2C чипа ESP32:

  • скорость передачи в Standard mode100 кбит/с;
  • скорость передачи в Fast mode400 кбит/с;
  • частота до 5 МГц (ограничена сверху за счет SDA);
  • адресация 7 и 10 бит, а также Dual addressing mode;
  • возможность управления через командный регистр.

I2S

Два стандартных интерфейса I2S встроены в чип ESP32. Они могут быть использованы в качестве ведущего или ведомого в полудуплексном режиме и в режиме полного дуплекса. Интерфейсы I2S могут работать с разрешением 8/16/32/40/48 бит в выходных и входных каналах. В этих интерфейсах поддерживается тактовая частота (BCK) в диапазоне от 10 кГц до 40 МГц. Оба интерфейса имеют контроллеры DMA. Они также поддерживают интерфейсы PDM и BT PCM.

SPI

Последовательный периферийный интерфейс (Serial Peripheral Interface, SPI) чипаESP32 состоит из четырех контроллеров (SPI0, SPI1, SPI2, SPI3), предназначенных для работы с внешними устройствами, поддерживающими этот интерфейс по линиям D, Q, CS0-CS2, CLK, WP, HD. Контроллер SPI0 используется в качестве буфера для доступа к внешней памяти. Контроллер SPI1 может использоваться как ведущий. Контроллеры SPI2 и SPI3 могут быть сконфигурированы как ведущий или ведомый. При использовании в качестве ведущего каждый контроллер SPI может управлять несколькими CS-сигналами (CS0-CS2) для активации нескольких ведомых устройств. Контроллеры SPI1-SPI3 используют два канала DMA.

Как отмечалось выше, сигнальные линии интерфейса SPI могут быть реализованы с помощь GPIO через модуль IO_MUX или матрицу GPIO-matrix.

Детальное описание интерфейсов SPI чипа ESP32 приведено в [5].

Ethernet

Контроллер Ethernet в чипе ESP32 реализован в соответствии со стандартом IEEE-802.3-2008-compliant Media Access Controller. Для работы с интерфейсом Ethernet к чипу необходимо подключить внешнее устройство со встроенным PHY. Такое соединение возможно с помощью 17-сигнальной линии MII или девятисигнальной линии or nine signals of RMII.

Чип ESP32 поддерживает следующие основные параметры Ethernet MAC:

  • скорость передачи 10 Мбит/с и 100 Мбит/с;
  • прямая адресация (DMA) между SRAM и Ethernet MAC;
  • полудуплексный (CSMA/CD) и полно­дуплексные режимы работы;
  • код CRC (32 бит);
  • индивидуальная и групповая адресация;
  • статусный код (32 бит) для каждого фрейма;
  • встроенная буферная память FIFO (32- бит);
  • точный протокол времени PTP в соответствии с IEEE 1588 2008;
  • вывод тактовых импульсов 25 МГц/50 МГц.

SDIO

Стандарт SDIO (Secure Digital Input/Output), который поддерживается чипом ESP32, позволяет использовать внешние карты памяти семейства SD/MMC в соответствии со спецификацией V2.0. Внешняя память крайне важна для некоторых приложений, в которых могут быть использованы чипы ESP32. Поэтому остановимся на поддержке SDIO несколько подробнее.

Чип ESP32 оснащен встроенным интерфейсом SD-карт (SD device interface). Структурная схема работы чипа ESP32 с внешним SDIO хост-компьютером показана на рис. 8.

Структурная схема работы чипа ESP32 с внешним SDIO хост-компьютером

Рис. 8. Структурная схема работы чипа ESP32 с внешним SDIO хост-компьютером

В этом варианте чип ESP32 используется в качестве ведомого устройства (Slave), подключенного к шине SDIO.

Интерфейс SDIO чипа ESP32 (SDIO Device Interface) обеспечивает эффективную связь с внешним хостом, предоставляя регистры интерфейса SDIO через устройство прямого доступа (DMA) и высокоскоростную шину передачи данных (Advanced High-performance Bus, AHB), не привлекая при этом внутренние процессоры. Обмен данными между ведущим и ведомым устройствами реализуется по стандартному протоколу SDIO V2.0. Поддержка SDIO в чипе ESP32 осуществляется также в соответствии с протоколом v2.0, который предполагает использование SPI/SDIO-совместимых устройств. Некоторые устройства SDIO, предназначенные для работы в режиме передачи байтов, требуют использования общих линий SPI для обработки данных. Модуль SPI ориентирован по байтам и поэтому поддерживает любой пакет в блоке байтов [10]. В чипе ESP32 контроллер ведомого устройства (SDIO/SPI slave controller) поддерживает SDIO SPI, однобитный и четырехбитный режимы обмена данными при тактовых частотах 0-50 МГц. Подробное описание работы SDIO приведено в [5].

SD/SDIO/MMC

Встроенный хост-контроллер SD/SDIO/MMC поддерживает выходную тактовую частоту до 80 МГц и может работать в трех режимах: однобитном, четырехбитном и восьмиюбитном в соответствии со стандартом SDIO Card Specification Version 2.0. Контроллер карты памяти ESP32 обеспечивает аппаратный интерфейс между расширенной периферийной шиной (Advanced Peripheral Bus, APB) и внешним запоминающим устройством. Иными словами, хост-контроллер SD/SDIO/MMC управляет попеременной работой карт Card0 (1/4/8 бит) и Card1 (1 и 4 бит). На рис. 9 показана структура хост-контроллера SD/MMS.

Структура SD/MMS хост-контроллера

Рис. 9. Структура SD/MMS хост-контроллера

Хост-контроллер SD/MMC состоит из двух основных функциональных блоков: интерфейса шины (Bus Interface Unit, BIU), который поддерживает APB, и интерфейса карты (Card Interface Unit, CIU), предназначенного для обработки протоколов интерфейса внешней карты памяти. BIU обеспечивает доступ к регистрам и данным FIFO через модуль интерфейса хоста (Host Interface Unit, HIU). Кроме того, он реализует доступ FIFO к данным через интерфейс DMA. Следует отметить, что интерфейс хоста может быть настроен как интерфейс APB. Модуль CIU обеспечивает адресацию команд и данных, предназначенных для карт SD, MMC, CE-ATA. Модуль CIU, кроме того, обеспечивает управление тактовой частотой. Для отправки и приема данных в контроллере предусмотрена RAM (рис. 8), состоящая из двух областейприем и передача. Кроме того, процесс отправки и получения данных также может быть реализован через CPU и DMA.

Из других важных особенностей встроенного хост-контроллера SD/SDIO/MMC чипа ESP32 отметим следующие:

  • поддержка SD Memory Card standard v3.0, 3.01;
  • поддержка MMC v4.41, 4.5, 4.51;
  • поддержка CE-ATA v1.1;
  • поддержка режимов 1/4/8 бит (Card0).

Модуль RMT

Модуль удаленного контроля RMT (Remote Control) изначально был спроектирован для отправки и приема сигналов инфракрасного дистанционного управления, которые используются при включении и выключении несущей частоты. Поэтому в ранних вариантах технической документации этот модуль назывался Infrared Remote Controller (IRC). Однако благодаря универсальности своей конструкции модуль RMT может использоваться для генерации сигналов различных типов. В частности, может быть использована модуляция с помощью несущей частоты.

Передатчик RMT считывает код необходимого сигнала, сохраненного в RAM, модифицирует его и передает в эфир. Приемник тестирует входной сигнал и демодулирует его. При этом в RAM сохраняются параметры сигнала и график его активности. Модуль RMT имеет восемь каналов и собственные управляющие регистры. Каждый канал имеет передатчик и приемник, которые могут функционировать попеременно. Работа каналов синхронизируется по тактовому сигналу шины APB либо с помощью REF_TICK.

Модуль MCPWM

Модуль широтно-импульсной модуляции (ШИМ) для управления двигателем (Motor Control Pulse Width Modulator, MCPWM) предназначен для управления двигателем. Также этот модуль может быть использован для управления мощными выходными каскадами с переменной нагрузкой. Модуль MCPWM [3, 5] обеспечивает шесть выходных каскадов ШИМ, которые могут быть настроены для работы в нескольких топологиях. В качестве примера можно привести схему управления H-мостом для контроля направления и скорости вращения двигателя постоянного тока.

Структура модуля MCPWM показана на рис. 10.

Структура модуля MCPWM, встроенного в чип ESP32

Рис. 10. Структура модуля MCPWM, встроенного в чип ESP32

В составе модуля MCPWM есть два основных блока: таймеры ШИМ (PWM timer) и операторы ШИМ (PWM operator). Таймер обеспечивает определенный тип синхронизации, который может свободно использоваться различными устройствами, в том числе и другими таймерами. Любой таймер имеет свой выделенный восьмибитный предварительный делитель частот и 16-разрядный счетчик, который может работать в режиме прямого и обратного отсчета, а также в комбинированном режиме.

Всякий оператор может быть настроен так, чтобы использовать синхронизацию любых таймеров. На основе сигналов синхронизации операторы ШИМ вырабатывают сигналы управления необходимой формы. Каждый из операторов имеет все необходимые ресурсы для генерации пар сигналов, контролирующих один канал ШИМ. Оператор PWM имеет два выхода ШИМ: PWMxA и PWMxB, которые могут работать независимо, в симметричной и асимметричной конфигурации.

Периферийная сеть MCPWM также содержит специальный блок захвата (Capture submodule), который используется в системах, где принципиальную роль играет точное значение реального времени внешних событий. Чип ESP32 содержит два периферийных узла модуля MCPWM: MCPWM0 и MCPWM1. Их контрольные регистры расположены в блоках памяти 4 кбайт, начиная с адресов памяти 0x3FF5E000 и 0x3FF6C000 соответственно. Управление модулем MCPWM осуществляется одним из встроенных микропроцессоров чипа.

Контроллер LED_PWM

Контроллер LED_PWM предназначен для управления системами питания светодиодных матриц и табло [5]. Однако он может применяться также и в других системах с ШИМ. Он имеет 16 каналов, каждый из которых может генерировать сигналы для управления светодиодными устройствами, и оснащен восемью высокоскоростными и восемью низкоскоростными генераторами ШИМ. Они управляются с помощью высокоскоростных и низкоскоростных таймеров. При этом высокоскоростные и низкоскоростные каналы могут контролироваться с помощью любого из этих таймеров.

Контроллер PWM также имеет возможность автоматически увеличивать или уменьшать рабочий цикл постепенно, позволяя избежать импульсных наводок, влияющих на работу процессоров. Все 16 каналов работают с тактовой частотой 80 МГц шины APB. Восемь каналов могут также использовать частоту 8 МГц кварцевого генератора. Любой канал контроллера имеет возможность управляться одним из четырех 20-битных таймеров. При этом процессор может передавать управление другим таймерам. Кроме того, каждый канал поддерживает пошаговую работу с плавным изменением мощности, что крайне полезно для систем питания светодиодных экранов.

Счетчик импульсов

Счетчик импульсов (Pulse Counter) предназначен для анализа времен нарастания и спада фронтов импульсных входных сигналов. Он имеет восемь независимых узлов, называемых PULSE_CNT_Un. Каждый узел счетчика импульсов имеет два идентичных по функциональности канала ch0 и ch1. Эти каналы оснащены двумя входамирабочим, на который подаются анализируемые импульсы, и контрольным, на который подаются управляющие сигналы. Для каждого канала устанавливаются границы времен нарастания и спада импульсного сигнала. Все узлы счетчика имеют свой собственный регистр, объемом 16 бит, в который данные могут записываться как в режиме суммирования, так и в режиме вычитания. Таким образом, счетчик импульсов определяет количество импульсов с заданными временами нарастания и спада фронтов. При достижении граничного значения вырабатывается сигнал прерывания. Подробно работа этого модуля описана в [5].

АЦП

Аналого-цифровой преобразователь чипа ESP32 выполнен по схеме 12-разрядного АЦП последовательного приближения (SAR ADC). Такие преобразователи позволяют в течение одного периода тактового сигнала получить один двоичный разряд. АЦП обрабатывает аналоговые сигналы в 18 каналах, для которых имеются специальные выводы. Такие выводы могут быть использованы для реализации функций программируемого усилителя, предназначенного для работы с малыми аналоговыми сигналами от чувствительных сенсоров.

ЦАП

Два встроенных 8-разрядных ЦАП предназначены для преобразования двух независимых цифровых сигналов в соответствующие аналоговые напряжения. Эти сигналы можно использовать, например, в качестве опорного напряжения в схемах управления системой электропитания чипа.

LNA

Встроенный малошумящий предусилитель LNA используется для работы с аналоговыми датчиками (контакты SENSOR_VP и SENSOR_VN). Выход LNA соединен со входом АЦП. Коэффициент усиления регулируется внешними конденсаторами. Максимальное значение усиления составляет 60 дБ. На вход LNA можно подать, например, сигналы от встроенного в чип датчика Холла.

Температурный датчик

Встроенный температурный датчик рассчитан на диапазон -40…+125 ºC. Следует иметь в виду, что размещенный внутри чипа температурный датчик подключается ко входу АЦП. Показания АЦП при этом могут меняться для разных моделей и партий чипов и не отражают адекватные значения температуры. Кроме того, температура кристалла чипа зависит от режима его работы. Поэтому для приложений, в которых требуются точные значения температуры, необходимо проводить предварительные дополнительные калибровки.

Датчики касания

Контактные выводы для тач-сенсоров (GPIO4, GPIO0, GPIO2, MTDO, MTCK, MTD1, MTMS, GPIO27, 32K_XN, 32K_XP) отведены специально для емкостных датчиков касания. Эти выводы можно использовать с самыми различными емкостными датчиками прикосновения, которые становятся все более популярными в приложениях IoT.

 

Канал Wi-Fi чипа ESP32

Основные технические характеристики Wi-Fi чипа ESP32 приведены в таблице 5. Канал Wi-Fi реализован в соответствии со стандартами 802.11b/g/n/e/i. О стандартах 802.11b/g/n написано много и подробно. Поэтому нет необходимости в дополнительных комментариях к таблице 5. Отметим только, что 802.11eэто поправки к стандарту IEEE 802.11, которые определяют серию улучшений Quality of Service для приложений, работающих в WLAN. Данные поправки изменяют MAC-уровень стандарта IEEE 802.11.

Таблица 5. Характеристики канала Wi-Fi базового чипа ESP32

Стандарт

802.11 b/g/n/e/i

Индекс модуляции и схемы кодирования
(Modulation and Coding Scheme, MCS)

802.11n, MCS — 1, 2, 3, 4, 5, 6, 7 при ширине каналов 20 МГц и 40 МГц (2,4 ГГц)

Защитный интервал

802.11n, 0,4 мкс

Максимальная скорость передачи в стандарте
802.11 n (2,4 ГГц)

150 Мбит/с

Выходная мощность на порту антенны

Регулируемая, максимум 20,5 дБм

Качество и класс предоставляемых услуг передачи данных

QoS в соответствии со стандартом 802.11e, Wi-Fi Multimedia (WMM, беспроводные мультимедийные расширения)

Объединение пакетов данных

AMPDU (Aggregated MAC Protocol Data Unit) — объединение кадров данных протокола MAC-уровня и пересылка их в одном фрейме

Объединение сервисных сообщений

AMSDU (Aggregated Mac Service Data Unit) — агрегация кадров сервисных сообщений в один кадр и передача его на уровень приложений в виде единого объединенного пакета

Механизм объединения нескольких подтверждений в один кадр

Block ACK (acknowledgments)

Дублирование данных с разным кодированием
по разным пространственным потокам

STBC 2×1 (блочное пространственно-временное кодирование)

Энергосбережение

Режим UAPSD (Unplanned Automatic Power Save) — внеплановое автоматическое включение функции энергосбережения, программируемые режимы энергосбережения, выход в эфир точно по графику

Автоматический мониторинг сети

Полная информация о сети (название, мощность сигнала, наличие шифрования и т. д.)

Безопасность

В соответствии со стандартом 802.11i, алгоритм AES, протоколы WPA/WPA2/WPA2-Enterprise/Wi-Fi Protected Setup (WPS)

Топология

BSS Station mode (Basic Service Set)/SoftAP mode, Wi-Fi Direct (P2P), P2P Discovery, P2P Group Owner mode and P2P Power Management

Открытый интерфейс выбора схемы работы
с верхними уровнями

TLS, PEAP, LEAP, SIM, AKA и др.

Оптимизация выходной мощности и скорости передачи

Адаптивный алгоритм автоматического регулирования с учетом коэффициента шума (SNR) и информации о потере пакетов

Контроль потери пакетов

Автоматическая повторная передача и ответ на MAC-адрес в случаях медленного хоста

Антенный интерфейс

Программный выбор антенны, разнесенные антенны

Стандарт регламентирует, в частности, устойчивость к задержкам таких приложений, как, например, Voice over Wireless IP и Streaming Multimedia.

В основе стандарта IEEE 802.11i, получившего название WPA2, лежит концепция надежно защищенной сетиRobust Security Network (RSN). Базовая идея заключается в использовании алгоритма AES (Advanced Encryption Standard), обеспечивающего более надежную защиту и поддерживающего ключи длиной 128, 192 и 256 бит.

 

Канал Bluetooth чипа ESP32

Чип ESP32 содержит Bluetooth link controller и радиочастотный блок Bluetooth baseband (рис. 2), которые разработаны в соответствии со стандартом Bluetooth v4.2. Чип ESP может работать как в режиме классического Bluetooth BR/EDR, так и в экономном режиме BLE. Основные технические характеристики канала приведены в таблице 6.

Таблица 6. Основные технические характеристики канала Bluetooth чипа ESP32

Стандарт

Bluetooth v4.2 BR/EDR и BLE

Мощность передатчика

Bluetooth Class-1, Сlass-2, Сlass-3 (расширенный контроль выходной мощности до 24 дБ, возможность работы без внешнего усилителя мощности)

Модуляция

π/4 DQPSK и 8 DPSK

Приемник

NZIF (near-zero intermediate frequency), –97 дБ

Способ физического подключения

Синхронное соединение (SCO) и асинхронное подключение без установления соединения (ACL)

Шифрование

AES, симметричный алгоритм блочного шифрования (размер блока 128 бит, ключ 128/192/256 бит)

Подстройка частоты

Адаптивная перестройка частоты с расширенным спектром (Adaptive Frequency Hopping, AFH)

Стандартный протокол HCI (Host Controller Interface)

Поддержка интерфейсов SDIO/SPI/UART, High speed UART HCI, до 4 Мбит/с

Конфигурирование хоста

I2C

Контроль доступных сервисов

SDP (Service Discover Protocol)

Процедура управления связью

GAP (General Access Profile)

Обеспечение безопасности

SMP (Security Manager Protocol)

Протокол атрибутов

ATT (Attribute Protocol)

Протокол атрибутов профилей устройств

GATT (Generic Attribute Profile) с поддержкой всех базовых профилей

Поддержка компьютерной периферии

HID (Human Interface)

Последовательный порт

SPP (Serial Port Profile)

Автоматическая передача в эфир идентификатора устройства

BLE Beacon

Аудиоинтерфейсы

PCM/I2S

Аудиопрофили

A2DP/AVRCP/SPP, HSP/HFP, RFCOMM

Кодеки

CVSD, SBC, PCM (A-law compression), PCM (µ-law compression)

Топология

Bluetooth Piconet, Scatternet

Подробное рассмотрение Bluetooth v4.2 выходит за рамки данной статьи. Детальную техническую информацию по этому стандарту можно найти на сайте SIG [12].

Необходимо подчеркнуть, что чип ESP32 в заводской конфигурации поддерживает Bluetooth v4.2. аппаратно. Для полноценной работы с ним необходимо дополнительное программное обеспечение, которое можно загрузить с помощью отладочного комплекта ESP-IDF [13]. Примеры программ для работы c Bluetooth (BLE) приведены на сайте [14]. Тексты программ для работы с Bluetooth APIs, GAP API, GATT client, GPIO driver и др. можно найти на сайте [15]. Там же можно скачать коды esp-idf-v2.0-rc1.

В достаточно подробной статье [16] приведена пошаговая инструкция о работе с каналом Bluetooth модуля ESP32. В качестве прикладного программного обеспечения, которое доступно на сайте [18], использован стек BlueKitchen’s BTstack library [17]. Этот стек протоколов поддерживает как Bluetooth Classic, так и Bluetooth Low Energy. Библиотека BlueKitchen’s BTstack library поддерживает много различных платформ, в том числе ESP32, Arduino и другие [19].

Для работы с устройствами на базе Android 4.3 и выше фирма Espressif разработала программное обеспечение EspBlufi [20]. Это ПО дает возможность настройки сети Wi-Fi через канал Bluetooth. Используя протокол Bluetooth, пользователи могут легко обнаруживать соседние устройства через Bluetooth-маяки. Кроме того, пользователи могут передавать данные по Bluetooth на смартфон, даже если маршрутизатор не работает в данный момент. Позже телефон может передать эти данные по Интернету. Таким образом, телефон может подключаться к устройству Bluetooth и отправлять команды напрямую для управления устройством, если сеть Wi-Fi отключена. Программу EspBlufi можно загрузить на сайте [21].

Дополнительную информацию о работе Bluetooth-канала чипа ESP32 можно найти на сайте [3].

 

Модули на базе чипа ESP32

ESP-WROOM-32

Внешний вид модуля ESP-WROOM-32

Рис. 11. Внешний вид модуля ESP-WROOM-32

На базе чипа ESP32 фирма Espressif выпускает полностью готовый к работе модуль ESP-WROOM-32, внешний вид которого показан на рис. 11. Напряжение питания модуля 3,3 В, габариты 25,2×18 мм, диапазон рабочих температур -40…+85 ºC. В корпусе модуля размещены: чип ESP32-D0WDQ6, флэш-память, PCB-антенна, конфигурирующие резисторы и конденсаторы, фильтры электропитания.

Технические характеристики модуля соответствуют параметрам базового чипа, приведенным в таблицах 2-6.

На задней стороне корпуса размещено 38 контактных площадок, подключенных к пользовательским вводам/выводам (GPIO 22 шт.), периферии и интерфейсам: SD-card, UART, SPI, SDIO, I2C, LED PWM, Motor PWM, I2S, IR. Подробное описание модуля приведено в [22].

ESP32-WROVER

Модуль ESP32-WROVER разработан на базе чипа ESP32-D0WDQ6. Основное отличие заключается в том, что WROVER имеет дополнительную встроенную внешнюю память 4 Мбайт SPI Flash. Эта память может быть задействована для кодов CPU с поддержкой адресации 8, 16 и 32 бит.

Также поддерживается отработка кодов. Кроме того, ESP32-WROVER имеет 4 Мбайт SPI Pseudo static RAM (PSRAM). Выпускаются два типа этих модулей. Модель ESP32-WROVER оснащена PCB-антенной. Модель ESP32-WROVER-I имеет IPEX-антенну. Имеются небольшие различия в конструкции корпуса. Габариты ESP32-WROVER 31,4×18 мм. В остальном параметры ESP-WROOM-32 и ESP32-WROVER совпадают. Описание модуля приведено на сайте [23].

Литература
  1. http://espressif.com/en/support/download/documents
  2. http://espressif.com/sites/default/files/documentation/esp32_datasheet_en.pdf
  3. https://media.readthedocs.org/pdf/esp-idf-fork/latest/esp-idf-fork.pdf
  4. http://espressif.com/en/products/software/esp-sdk/overview
  5. http://espressif.com/sites/default/files/documentation/esp32_technical_reference_manual_en.pdf
  6. http://espressif.com/en/media_overview/news/winbond%E2%80%99s-new-low-voltage-nor-flash-memories-designed-around-esp32
  7. http://espressif.com/sites/default/files/documentation/esp32_hardware_design_guidelines_en.pdf
  8. http://espressif.com/sites/default/files/documentation/esp-wroom-32_datasheet_en.pdf
  9. http://espressif.com/sites/default/files/documentation/esp32_at_instruction_set_and_examples_en.pdf
  10. http://www.sdcard.org/developers/overview/sdio/sdio_spec/Simplified_SDIO_Card_Spec.pdf
  11. http://espressif.com/sites/default/files/documentation/esp32-pico-d4_datasheet_en.pdf
  12. http://www.bluetooth.com/specifications/bluetooth-core-specification
  13. http://esp-idf.readthedocs.io/en/latest/
  14. https://github.com/espressif/esp-idf/tree/master/examples/bluetooth
  15. https://github.com/espressif/esp-idf/releases/tag/v2.0-rc1
  16. https://techtutorialsx.com/2017/07/08/esp32-bluetooth-using-the-btstack-library/
  17. http://bluekitchen-gmbh.com/
  18. https://github.com/bluekitchen/btstack
  19. https://github.com/bluekitchen/btstack/tree/master/port
  20. http://espressif.com/sites/default/files/documentation/esp32_bluetooth_networking_user_guide_en.pdf

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

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