wiki:esp32_tips

Version 2 (modified by kishida, 7 years ago) ( diff )

--

ESP-WROOM-32に関するTIPS

ESP-WROOM-32(以下、ESP32と省略)は、Xtensa Dual-Core 32-bit LX6 マイクロプロセッサを搭載する、上海のESPRESSIF社が開発した無線モジュールです。WiFiとBluetooth v4.2に対応しています。 開発ボードはスイッチサイエンスでも販売されている(要追記)他にも、ESPRESSIF社からESP32-DevKitCなどが発売さています。

本ページでは、無線モジュール ESP-WROOM-32の各種機能をArduinoとして使うにあたってのサンプルスケッチや注意点などを解説します。


ピンアサイン

ESP32 Datasheet(PDF)より抜粋

NameNo.TypeFunction
GND1PGround
3V32PPower supply.
EN3IChip-enable signal. Active high.
SENSOR_VP4IGPIO36, SENSOR_VP, ADC_H, ADC1_CH0, RTC_GPIO0
SENSOR_VN5IGPIO39, SENSOR_VN, ADC1_CH3, ADC_H, RTC_GPIO3
IO346IGPIO34, ADC1_CH6, RTC_GPIO4
IO357IGPIO35, ADC1_CH7, RTC_GPIO5, GPIO32, XTAL_32K_P (32.768 kHz crystal oscillator input), ADC1_CH4,
IO328I/OTOUCH9, RTC_GPIO9, GPIO33, XTAL_32K_N (32.768 kHz crystal oscillator output), ADC1_CH5,
IO339I/OTOUCH8, RTC_GPIO8
IO2510I/OGPIO25, DAC_1, ADC2_CH8, RTC_GPIO6, EMAC_RXD0
IO2611I/OGPIO26, DAC_2, ADC2_CH9, RTC_GPIO7, EMAC_RXD1
IO2712I/OGPIO27, ADC2_CH7, TOUCH7, RTC_GPIO17, EMAC_RX_DV, GPIO14, ADC2_CH6, TOUCH6, RTC_GPIO16, MTMS, HSPICLK,
IO1413I/OHS2_CLK, SD_CLK, EMAC_TXD2, GPIO12, ADC2_CH5, TOUCH5, RTC_GPIO15, MTDI, HSPIQ,
IO1214I/OHS2_DATA2, SD_DATA2, EMAC_TXD3
GND15PGround, GPIO13, ADC2_CH4, TOUCH4, RTC_GPIO14, MTCK, HSPID,
IO1316I/OHS2_DATA3, SD_DATA3, EMAC_RX_ER
SHD/SD2*17I/OGPIO9, SD_DATA2, SPIHD, HS1_DATA2, U1RXD
SWP/SD3*18I/OGPIO10, SD_DATA3, SPIWP, HS1_DATA3, U1TXD
SCS/CMD*19I/OGPIO11, SD_CMD, SPICS0, HS1_CMD, U1RTS
SCK/CLK*20I/OGPIO6, SD_CLK, SPICLK, HS1_CLK, U1CTS
SDO/SD0*21I/OGPIO7, SD_DATA0, SPIQ, HS1_DATA0, U2RTS
SDI/SD1*22I/OGPIO8, SD_DATA1, SPID, HS1_DATA1, U2CTS, GPIO15, ADC2_CH3, TOUCH3, MTDO, HSPICS0, RTC_GPIO13,
IO1523I/OHS2_CMD, SD_CMD, EMAC_RXD3, GPIO2, ADC2_CH2, TOUCH2, RTC_GPIO12, HSPIWP, HS2_DATA0,
IO224I/OSD_DATA0, GPIO0, ADC2_CH1, TOUCH1, RTC_GPIO11, CLK_OUT1,
IO025I/OEMAC_TX_CLK, GPIO4, ADC2_CH0, TOUCH0, RTC_GPIO10, HSPIHD, HS2_DATA1,
IO426I/OSD_DATA1, EMAC_TX_ER
IO1627I/OGPIO16, HS1_DATA4, U2RXD, EMAC_CLK_OUT
IO1728I/OGPIO17, HS1_DATA5, U2TXD, EMAC_CLK_OUT_180
IO529I/OGPIO5, VSPICS0, HS1_DATA6, EMAC_RX_CLK
IO1830I/OGPIO18, VSPICLK, HS1_DATA7
IO1931I/OGPIO19, VSPIQ, U0CTS, EMAC_TXD0
NC32--
IO2133I/OGPIO21, VSPIHD, EMAC_TX_EN
RXD034I/OGPIO3, U0RXD, CLK_OUT2
TXD035I/OGPIO1, U0TXD, CLK_OUT3, EMAC_RXD2
IO2236I/OGPIO22, VSPIWP, U0RTS, EMAC_TXD1
IO2337I/OGPIO23, VSPID, HS1_STROBE
GND38PGround
GND39PGround

*がついているピンはモジュール内部でSPIフラッシュメモリに接続されているため、他の用途での利用は推奨されません。

SPI通信

複雑で、理解が少し困難です。ざっくり結論を述べると、基本的に好きなピンをSPI通信に利用することができます。

内部の仕様について

ESP32に搭載されているコントローラーにはSPIモジュールが3つ内蔵されています。それぞれ、

  • SPI
  • HSPI
  • VSPI

の名称がつけられています。このうち、SPIに関しては上記ピンアサインの項目の通りFSPIとして内蔵FLASHとの接続に使われています。よって、普段周辺機器を接続する際にはHSPIもしくはVSPIの回路を利用することになります。

一方で、ArduinoのSPIライブラリは、ライブラリ中に定義されるように、VSPI回路を利用します。更に、独自にSPIクラスをインスタンス化すると、こちらにあるようにHSPIが利用されます。

Attachments (9)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.