Changes between Version 4 and Version 5 of esp32_tips


Ignore:
Timestamp:
May 6, 2017 12:10:35 AM (2 years ago)
Author:
kishida
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • esp32_tips

    v4 v5  
    11= ESP-WROOM-32に関するTIPS =
    22
    3 ESP-WROOM-32(以下、ESP32と省略)は、Xtensa Dual-Core 32-bit LX6 マイクロプロセッサを搭載する、上海のESPRESSIF社が開発した無線モジュールです。WiFiとBluetooth v4.2に対応しています。 開発ボードはスイッチサイエンスでも販売されている(要追記)他にも、ESPRESSIF社からESP32-DevKitCなどが発売さています。
     3ESP-WROOM-32は、Xtensa Dual-Core 32-bit LX6 マイクロプロセッサを搭載する、上海のESPRESSIF社が開発した無線モジュールです。WiFiとBluetooth v4.2に対応しています。 開発ボードはスイッチサイエンスでも販売されている(要追記)他にも、ESPRESSIF社からESP32-DevKitCなどが発売さています。
    44
    55本ページでは、無線モジュール ESP-WROOM-32の各種機能をArduinoとして使うにあたってのサンプルスケッチや注意点などを解説します。
     6ESP32と呼ぶときはコントローラーそのもの、無線モジュール全体を指すときはESP-WROOM-32と記述しています。
     7
    68----
    79
     
    7072ただし、以下の制約があります。
    7173* GPIO 34~39 ピンは出力には使えない
    72 * GPIO 0,2 ピンはブートモードの設定に利用される
    73 * GPIO 12 は内蔵LDOの電圧設定に利用される
    74 * GPIO 15 はU0TXDピンのデバッグログの設定に利用される
    75 * Ethernet, SDIO, SPI, JTAG, UARTなどの高速信号は、パフォーマンス低下を回避するためにGPIOマトリクスを介さないで接続でき、その場合は出力ピンが固定される。
     74* GPIO 0,2 ピンは回路的にブートモードの設定に利用されることがあり、実際ほぼこの通り使われていると考えます
     75* GPIO 1,3 ピンは回路的にUART通信(U0RXD、U0TXD)に利用されることがあり、実際ほぼこの通り使われていると考えます
     76* GPIO 12 は内蔵LDOの電圧設定に利用されることがある
     77* GPIO 15 はU0TXDピンのデバッグログの設定に利用されることがある
     78* Ethernet, SDIO, SPI, JTAG, UARTなどの高速信号は、パフォーマンス低下を回避するためにGPIOマトリクスを介さないで接続可能なものがあり、その場合は出力ピンが固定される
     79* GPIO 6~11 はESP-WROOM-32モジュール内部では既にFLASHメモリと接続されている
     80
     81特に、GPIO 0,2に関しては電圧を固定してしまうと以降ArduinoIDEなどからのスケッチの書き込みができなくなるため、注意が必要です。更には、ESP-WROOM-32モジュールには内蔵FLASHメモリのために幾つかの回路が配線済みであるため、SDIO Slaveの機能やParallel QSPIといった機能は使えません。
    7682
    7783== SPI通信 ==
     
    7985=== 内部の仕様について ===
    8086
    81 ESP32に搭載されているコントローラーにはSPIモジュールが3つ内蔵されています。それぞれ、
     87ESP-WROOM-32に搭載されているコントローラーにはSPIモジュールが3つ内蔵されています。それぞれ、
    8288
    8389* SPI
     
    8591* VSPI
    8692
    87 の名称がつけられています。このうち、SPIに関しては上記ピンアサインの項目の通りFSPIとして内蔵FLASHとの接続に使われています。よって、普段周辺機器を接続する際にはHSPIもしくはVSPIの回路を利用することになります。
     93の名称がつけられています。このうち、SPIに関しては上記ピンアサインの項目の通りFSPIとして内蔵FLASHとの接続に使われています。よって、普段周辺機器を接続する際にはHSPIもしくはVSPIの回路を利用することになります。この2つに関しては、SlaveとMasterどちらも利用可能です。
    8894
    8995一方で、ArduinoのSPIライブラリは、[https://github.com/espressif/arduino-esp32/blob/3cbc405edf2448cf1d77b0a30a5e62ddab806a85/libraries/SPI/src/SPI.cpp#L277 ライブラリ中]に定義されるように、VSPI回路を利用します。更に、独自にSPIクラスをインスタンス化すると、[https://github.com/espressif/arduino-esp32/blob/3cbc405edf2448cf1d77b0a30a5e62ddab806a85/libraries/SPI/src/SPI.h#L53 こちら]にあるようにHSPIが利用されます。
    9096
    91 各SPIモジュールのピンアサインは以下の通りです。
     97各SPIモジュールのピンアサインは以下の通りです。ただし、GPIOマトリックスの項目で説明した通り、比較的自由にリマッピング可能です。
     98* HSPI - SCK,MISO,MOSI,SS = 14,12,13,15
     99* VSPI - SCK,MISO,MOSI,SS = 18,19,23,5
     100
     101=== サンプルスケッチ ===
     102
     103以上の仕様と、GPIOマトリックス機能を合わせると、ものによってはブレッドボードに上手く挿すだけでジャンパワイヤなしに通信が可能です。
    92104
    93105
     106== I^2^C通信 ==
    94107
     108== GPIO ==
     109
     110== ADC ==
     111
     112== DAC ==
     113
     114== PWM ==
     115
     116== ホールセンサ ==
     117
     118== 温度センサー ==
     119
     120== タッチセンサ ==