ESP WROOM 32 を使いこなす(1)

ESP WROOM 32について、とりあえず英語の仕様書を自分なりにわかるように下記にまとめてみる。雑記なので参考にはならないと思われる・・・・。

 

■特徴

・WifiとBLEのコンボモジュールである(日本の技適取得済み)

・Dual CoreのCPU:動作周波数は80MHz〜240MHz

・CPUの電源を切って周辺のみ動作させる・・・などの停電力動作が可能

・閾値監視の割り込みを使用できる

・容量タッチセンサーをそのまま接続できる端子がある

・ホールセンサ、SDカードI/F、高速SDIO、SPI、UART、I2S、I2Cなどの一般的なI/Fは接続可能

・ESP32のチップ(ICではない)のスリープ消費電流は5uA

・バッテリー駆動可能、ウェアラブルアプリケーション向けくらいしか消費電流食いません

・最大データレートは150Mbps,22dBm

・ESP32用に用意されたFreeRTOS&LWIPがあります

・暗号化も対応、無線によるデータアップデート(OTA)も可能

 

■Wifiについて

・プロトコル:802.11 b/g/n/d/e/i/k/r (802.11n up to 150 Mbps)

■Bluetoothについて

・Bluetooth v4.2 BR/EDR and BLE specification

・Audioプロファイルは自分で準備しないといけないが、SCBとCVSDに対応しているためA2DPなどの音質の高い音を市販イヤフォンと通信できる

■ハードウェア

・一般的な組み込みで使用されるI/Fと+αを備えている

・SD card, UART, SPI, SDIO, I2C, LED PWM, Motor PWM, I2S, I2C, IR

・GPIO, capacitive touch sensor, ADC, DAC, LNA pre amplier

■ソフトウェア

・Wifi:Station/softAP/SoftAP+station/P2P

・Security:WPA/WPA2/WPA2-Enterprise/WPS

・暗号:AES/RSA/ECC/SHA

・ファームウェアアップデート:UART Download / OTA (via network) / download and write firmware via host

・ソフト開発環境:Supports Cloud Server Development / SDK for custom firmware development→クラウドの環境で開発もできるし、SDKも配られてる

・ネットワークプロトコル:IPv4, IPv6, SSL, TCP/UDP/HTTP/FTP/MQTT

・ユーザーの設定:AT instruction set, cloud server, Android/iOS App

 

■Pinグループ

ESP3には5つのグループになっているピンがあります。GPIO_STRAPPINGレジスタを叩くとリードできます。

チッップリセット中のピン状態は、これらすべてのピンがプルアップ、もしくはプルダウンされています。そのため、ピンに接続されているモジュールの端子が高インピーダンスの場合ESP32がリセット中はこのピン状態に左右されるので、接続は注意すること。ただし、この内部PD/PUは弱いです。

Pinグループの値を書き換えるには、外部PD/PUか外部ホストCPUによって特別なブートモードに入れてから電源を入れると良い。特別なブートモード以外では、このPinグループは通常の動作をします。

 

5つのPinは下記になります。

 

■CPUと内部メモリについて

ESP32には2つの低電力Coreが搭載されています。内部メモリにはBoot用に448KByteのROMが載っています。内RAMは520KByteです(SRAMです。当たり前か。)

・RTCスローメモリと呼ばれる、CPUのディープスリープ中に周辺IPからアクセスできるRTC内部の8KByteのRAMが存在します

・RTCファーストメモリと呼ばれる、RTCのストレージとして使用できる8KByteのRAMが存在します。このメモリは、ディープスリープモードから、RCTブート(タイマー割り込み的なやつ?)されるとCPUからアクセスされます。

・1KBitの電子FUSEがあります。そのうち256bitはシステム(MACアドレスとチップ構成)に使用され、残りはユーザーアプリケーション用に予約されています。

 

■外部フラッシュSRAM

・ESP32は外部の4*16MByteの外部Quad-SPIフラッシュと、開発者のプログラムとデータを守るAES暗号を備えたSRAMをサポートしています。ESP32は高速なキャッシュを使用して外部QSPIをSRAMにアクセスできます。

・最大16MByteの外部フラッシュは、8,16,32bitアクセスが可能です。

・外部SRAMは8.16,32bitアクセスが可能です。

・データの読み出しはどちらも対応しているが、書き込みはSRMAのみサポートしている。

 

QSPIを使用するときは、事前に書き込みが必要?通常QSPIはブートコード入れておくのに使用するはずかな。。。

 

 

■クリスタル発振器

サポートされる水晶の周波数は40MHz,26MHz,24MHzです。JTAGなどのダウンロードツールを使用して開発を行うときは、適切な周波数を選択してください。チップが低消費電力モードに入るとき、アプリケーションは内部のRC発振ではなく外部の32kHzのRTCクロックで正確な時間を測定します。

 

■電力モード

ESP32はPMが可能で下記のPMモードをもっています。

・アクティブモード

チップの無線が動作している状態。送受信共に行うことができます。

・モデムスリープモード

CPUは動作しているけど、無線のベースバンド部分は無効になっています。内部クロックの設定などは変更可能。

・ライトスリープモード

CPUは停止している状態。RTCとローパワー系のコプロセッサが動作しており、wakeupイベント割り込み(MAC,Host,RTC Timer外部割り込み)がチップを起こします。

・ディープスリープモード

RTCの電源のみが供給されています。WifiとBluetoothの接続データ(設定データとかその辺のこと)はRTCに保存される。ローパワー系のコプロセッサは動作可能です。

・ハイバネーションモード

内臓の8MHzRC発振器とローパワー系コプロセッサが無効になります。低速クロック上の1つのRTCタイマーと一部のRTC GPIOのみが有効。RTCタイマとRTC GPIO(外部割り込み)はハイバネーションモードからCPUを起こすことができます。

 

■スリープパターン

スリープパタンは下記の2パターンになります。

・アソシエーションスリープパターン

このスリープパタン中、電力モードが先ほど上に示した①アクティブモード②モデムスリープ③ライトスリープの3つの状態で切り替わります。Wifi/BTの接続をオンにするために、CPU,Wifi,BTがそれぞれ一定間隔で起動します。

・ULPセンサ監視パターン

メインCPUはディープスリープモードです。ローパワー系コプロセッサはセンサーの測定を行い、センサーの値によってはCPUを起こしに行きます。

 

※モジュールの消費電流は、これらの動作モードとその時の作業内容によって変わってきます。下記を参照してください。

 

 

■ピン配置の注意点

機能によって使えるピンが決まっているものと、設定すればどのピンでもその機能で使えるようになるものがある。

・ADC,DAC,TouchSensor,SD.SDIO.MMC Host,QSPI,JTAG,EMAC

上記のものは使用できるピンが決まっているので、使用する際は注意する

 

コメントを残す

メールアドレスが公開されることはありません。