Espressif SystemsのESP32のデータシートを独自に和訳してみました。
まだほんの一部しかありませんが、今後、徐々に追加していく予定です。
あくまで趣味の一環としての素人解釈です。
間違えている可能性もあるので、これを読んだことによるトラブルには一切責任を負いませんのでご了承ください。
2. Pin Definitions
(datasheet ver 3.2)
2.3 Power Scheme
ESP32のデジタルピンは、3つの異なる電源ドメインに分かれています。
•VDD3P3_RTC
•VDD3P3_CPU
•VDD_SDIO
VDD3P3_RTCは、RTCおよびCPUの入力電源でもあります。
VDD3P3_CPUはCPUの入力電源でもあります。
VDD_SDIOは、入力がVDD3P3_RTCである内部LDOの出力に接続します。 VDD_SDIOをVDD3P3_RTCと同じPCBネットに接続すると、内部LDOは自動的に無効になります。電源スキーム図を以下に示します。
Figure 4: ESP32 Power Scheme
内部LDOは1.8 V、またはVDD3P3_RTCと同じ電圧を持つように構成できます。ディープスリープモード中にフラッシュ/ SRAMの電流を最小限に抑えるために、ソフトウェアを介して電源を切ることができます。
CHIP_PUに関する注意:
•次の図は、ESP32の起動とリセットのタイミングを示しています。パラメーターの詳細を表2にリストします。
Figure 5: ESP32 Power-up and Reset Timing
Table 2: Description of ESP32 Power-up and Reset Timing Parameters
•電源レールを切り替えてESP32の電源を繰り返しオン/オフするシナリオで、VDD33レールに大きなコンデンサがあり、CHIP_PUとVDD33が接続されている場合、CHIP_PU電源レールをオフに切り替えてすぐにオンに戻すと、不完全な放電サイクルとチップの適切なリセットの失敗します。
レールVDD33の大きなコンデンサの放電を加速するには、追加の放電回路が必要になる場合があります。これにより、ESP32の電源が再びオンになったときに適切なパワーオンリセットが保証されます。放電回路は、ESP32-WROOM-32データシートの図ESP32-WROOM-32周辺回路図にあります。
•ESP32シリーズのチップおよびモジュールの電源としてバッテリーを使用する場合は、低電圧によるブート障害を回避するために、電源電圧監視プログラムを推奨します。 ESP32の電源が2.3 V未満の場合は、CHIP_PUをLowにすることをお勧めします。リセット回路については、ESP32-WROOM-32データシートの図ESP32-WROOM-32周辺回路図を参照してください。
電源に関する注意:
•ESP32の動作電圧の範囲は2.3 V〜3.6 Vです。単一電源を使用する場合、電源の推奨電圧は3.3 V、推奨出力電流は500 mA以上です。
•VDD_SDIO 1.8 Vを外部フラッシュ/ PSRAMの電源として使用する場合、2kΩの接地抵抗をVDD_SDIOに追加する必要があります。回路設計については、ESP32-WROVERデータシートの図ESP32-WROVER回路図を参照してください。
•3つのデジタル電源を使用して周辺機器、たとえば3.3 Vフラッシュを駆動する場合、周辺機器の仕様に準拠する必要があります。
3. Functional Description
(datasheet ver 3.2)
この章では、ESP32に統合されている機能について説明します。
3.1 CPU and Memory
3.1.1 CPU
ESP32には、次の機能を備えた1つまたは2つの低電力Xtensa®32ビットLX6マイクロプロセッサが含まれています。
●最大240 MHzのクロック周波数をサポートする7ステージパイプライン(ESP32-S0WDおよびESP32-D2WDの場合は160 MHz)
●16/24ビット命令セットは、高いコード密度を提供します
●浮動小数点ユニットのサポート
●32ビット乗算器、32ビット除算器、40ビットMACなどのDSP命令のサポート
●約70の割り込みソースからの32の割り込みベクターのサポートシングル/デュアルCPUインターフェイスには以下が含まれます。
●命令とデータ用のXtensa RAM / ROMインターフェイス
●高速な周辺機器レジスタアクセスのためのXtensaローカルメモリインターフェイス
●外部および内部割り込みソース
●デバッグ用のJTAG
3.1.2 Internal Memory
ESP32の内部メモリには以下が含まれます。
●起動およびコア機能用の448 KBのROM
●データおよび命令用の520 KBのオンチップSRAM
●RTCの8 KBのSRAM。RTCFAST Memoryと呼ばれ、データストレージに使用できます。ディープスリープモードからのRTCブート中にメインCPUによってアクセスされます。
●RTCの8 KBのSRAM。RTCSLOWメモリと呼ばれ、ディープスリープモード中にコプロセッサからアクセスできます。
●1 KビットのeFuse:256ビットがシステムに使用され(MACアドレスとチップ構成)、残りの768ビットはフラッシュ暗号化やチップIDを含む顧客アプリケーション用に予約されています。
●埋め込みフラッシュ
注意:
●ESP32シリーズの製品は、組み込みフラッシュのサポートとそのサイズの点で互いに異なります。
詳細については、部品番号と注文情報を参照してください。
●ESP32-D2WDには、ピンGPIO16、GPIO17、SD_CMD、SD_CLK、SD_DATA_0およびSD_DATA_1を介して接続された16メガビット、40 MHzの組み込みフラッシュがあります。
3.1.3 External Flash and SRAM
(datasheet ver 3.2)
ESP32は、複数の外部QSPIフラッシュおよびSRAMチップをサポートします。詳細については、ESP32テクニカルリファレンスマニュアルのSPI章をご覧ください。 ESP32は、AESに基づくハードウェア暗号化/復号化もサポートし、開発者のプログラムとフラッシュ内のデータを保護します。
ESP32は、高速キャッシュを介して外部QSPIフラッシュとSRAMにアクセスできます。
●最大16 MBの外部フラッシュを、CPU命令メモリ空間と読み取り専用メモリ空間に同時にマッピングできます。
– 外部フラッシュがCPU命令メモリ空間にマッピングされる場合、一度に最大11 MB + 248 KBをマッピングできます。 3 MB + 248 KBを超えるマップが行われた場合、CPUによる投機的読み取りによりキャッシュのパフォーマンスが低下することに注意してください。
– 外部フラッシュが読み取り専用データメモリスペースにマップされる場合、一度に最大4 MBをマップできます。 8ビット、16ビット、および32ビットの読み取りがサポートされています。
●外部SRAMは、CPUデータメモリ空間にマッピングできます。最大8 MBのSRAMがサポートされ、一度に最大4 MBをマップできます。 8ビット、16ビット、および32ビットの読み取りと書き込みがサポートされています。
注意:
ESP32が初期化された後、ファームウェアは外部SRAMまたはフラッシュのCPUアドレス空間へのマッピングをカスタマイズできます。
3.1.4 Memory Map
アドレスマッピングの構造を図7に示します。ESP32のメモリと周辺機器のマッピングを表5に示します。
(補足:MMUとはメモリ管理ユニットのこと)
(補足:Embedded Memoryとは、埋め込みメモリのこと)
3.2 Timers and Watchdogs
3.2.1 64-bit Timers
ESP32には4つの汎用タイマーが組み込まれています。これらはすべて、16ビットのプリスケーラと64ビットの自動リロード可能なアップ/ダウンタイマーに基づいた64ビットの汎用タイマーです。
タイマー機能:
•2〜65536の16ビットクロックプリスケーラ
•64ビットタイマー
•設定可能なアップ/ダウンタイマー:インクリメントまたはデクリメント
•タイムベースカウンターの停止と再開
•アラーム発生時の自動リロード
•ソフトウェア制御のインスタントリロード
•レベルおよびエッジ割り込み生成
3.2.2 Watchdog Timers
ESP32には3つのウォッチドッグタイマーがあります。2つのタイマーモジュールのそれぞれに1つ(メインウォッチドッグタイマー、またはMWDTと呼ばれます)とRTCモジュールに1つ(RTCウォッチドッグタイマー、またはRWDTと呼ばれます)。これらのウォッチドッグタイマーは、アプリケーションプログラムが通常のシーケンスを放棄する原因となる予期しない障害から回復することを目的としています。
ウォッチドッグタイマーには4つの段階があります。ウォッチドッグが供給または無効にされていない限り、プログラムされた期間が終了すると、各ステージは3つまたは4つの可能なアクションの1つをトリガーできます。アクションは、割り込み、CPUリセット、コアリセット、システムリセットです。 RWDTのみがシステムリセットをトリガーでき、以下を含むチップ全体をリセットできます。
RTC自体。タイムアウト値は、各ステージに個別に設定できます。
フラッシュブート中に、RWDTと最初のMWDTが自動的に起動して、ブートの問題を検出し、回復します。
ESP32ウォッチドッグには次の機能があります。
•4つのステージ。それぞれを個別に設定または無効化できます
•各段階のプログラム可能な期間
3.3 System Clocks
3.3.1 CPU Clock
リセット時に、外部水晶クロックソースがデフォルトのCPUクロックとして選択されます。外部水晶クロックソースもPLLに接続して、高周波クロック(通常160 MHz)を生成します。
さらに、ESP32には8 MHzの発振器が内蔵されています。アプリケーションは、外部水晶クロックソース、PLLクロック、または内部8 MHz発振器からクロックソースを選択できます。選択したクロックソースは、アプリケーションに応じて、直接または分周後にCPUクロックを駆動します。
3.3.2 RTC Clock
RTCクロックには、次の5つのソースがあります。
•外部低速(32 kHz)クリスタルクロック
•4分周された外部クリスタルクロック
•内部RCオシレーター(通常約150 kHz、調整可能)
•内部8 MHzオシレーター
•内部31.25 kHzクロック(内部8 MHz発振器を256で除算したものから派生)
チップが通常の電力モードにあり、より高速なCPUアクセスが必要な場合、アプリケーションは4で割った外部高速水晶クロックまたは内部8 MHz発振器を選択できます。チップが低電力モードで動作する場合、アプリケーションは外部低速(32 kHz)水晶クロック、内部RCクロック、または内部31.25 kHzクロックを選択します。
3.3.3 Audio PLL Clock
オーディオクロックは、超低ノイズのフラクショナルN PLLによって生成されます。詳細については、ESP32テクニカルリファレンスマニュアルの「リセットとクロック」の章を参照してください。
4. Peripherals and Sensors
4.1 Descriptions of Peripherals and Sensors
4.1.1 General Purpose Input / Output Interface (GPIO)
ESP32には34個のGPIOピンがあり、適切なレジスタをプログラムすることでさまざまな機能を割り当てることができます。
GPIOには、デジタルのみ、アナログ対応、静電容量式タッチ対応など、いくつかの種類があります。アナログ対応GPIOおよび静電容量式タッチ対応GPIOは、デジタルGPIOとして構成できます。
ほとんどのデジタルGPIOは、内部プルアップまたはプルダウンとして構成するか、高インピーダンスに設定できます。入力として構成されている場合、入力値はレジスタを介して読み取ることができます。入力をエッジトリガーまたはレベルトリガーに設定して、CPU割り込みを生成することもできます。デジタルIOピンの大部分は、トライステート制御を備えた入力および出力バッファを含む、双方向、非反転、およびトライステートです。これらのピンは、SDIO、UART、SPIなどの他の機能と多重化できます(詳細については、付録の表IO_MUXを参照してください)。低電力動作の場合、GPIOはその状態を保持するように設定できます。
4.1.9 SDIO/SPI Slave Controller
ESP32は、業界標準のSDIOカード仕様バージョン2.0に準拠したSDデバイスインターフェイスを統合し、SDIOバスインターフェイスとプロトコルを使用して、ホストコントローラーがSoCにアクセスできるようにします。 ESP32は、SDIOバス上のスレーブとして機能します。 ホストは、SDIOインターフェイスレジスタに直接アクセスでき、DMAエンジンを介して共有メモリにアクセスできるため、プロセッサコアを使用せずにパフォーマンスを最大化できます。
SDIO / SPIスレーブコントローラは、次の機能をサポートしています。
•0〜50 MHzの全クロック範囲にわたるSPI、1ビットSDIO、および4ビットSDIO転送モード
•設定可能なサンプリングおよび駆動クロックエッジ
•ホストによる直接アクセスのための特殊レジスター
•データ転送を開始するためのホストへの割り込み
•SDIOバスデータの自動ロードおよびパディングデータの自動破棄
•最大512バイトのブロックサイズ
•ホストとスレーブ間の割り込みベクター。両方が相互に割り込み可能
•データ転送用のDMAをサポート
Amazon.co.jp 当ブログのおすすめ
コメント
日本語訳、大変感謝してます。ありがとうございました。
icchasさん
記事をご覧いただき、ありがとうございます。
お役に立って良かったです。
ただ、この記事はかなり古いデータシートなので、現在発売されているものはもっと違った仕様かも知れませんのでご注意ください。