第五回 ソフトウェア開発者によるハードウェア開発のすすめ
こんにちは、ピーバンドットコムの廣瀬です。
今回はBitEngineers藤田さんの連載企画、
ソフトウェア開発者によるハードウェア開発のすすめ
の第五回です。
↓藤田さんのnoteはこちら
前回に続き、ESP32を使用したLチカ基板をKiCadで作る際の流れを、藤田さん目線で解説していただいてます。
今回はマイコンのPull up/downの概念の説明なども交えつつ、ESP32周りの回路の接続を進めている内容になっています。
質問などあればコメントいただければ幸いです!
第五回
ESP32 の接続を進めていきます。
3.3V Regulator
電源まわりから、3.3V と GND を接続します。
上図の説明はすでに不要だと思うので先へ進みます。
+3.3V が登場しました。回路上 +3.3V はどこでも生成されていないので +3.3V の出力部を作成します。
+3.3V固定出力のRegulator を使用します。このボードでは、電源入力は USB からの +5V (一定)となり、Regulator を通すと出力が +3.3V (一定) を得ることができます。AMS1117 という電流 1A を出力できるもので、ESP32 を用いた開発ボードでよく使用されている IC を追加します。
UART
次にUSB Interface IC と UART で接続します。PC からファームウェアを書き込むときや、アプリケーションのログの出力などに使用できます。
前回の作業でグローバルラベルを付与しているので、対向するピンに上図のようにグローバルラベルを追加します。ラベルの形状で向きが表されているのでわかりやすいかと思います。
これで USB Interface IC とのデータ通信は確立されました。このままでもログの出力はできますが、ファームウェアの書き込みを行うにはさらに ESP32 の Booting Mode を制御するピンも繋がないとなりません。
Strapping Pins
ESP32 のBooting Mode には
Firmware の書き込みモード(Download Boot)
既に書き込んでいるファームウェアの実行モード(SPI Boot)
があり、このモードの切り替えには Strapping Pins を使用しています。
仕組みとしては電源投入後、IC が起動準備をしている段階でのピンの電圧状態 (High/Low) により切り替わる仕組みとなってます。起動後にはこれらのピンは自由に使用できます。
以下にオフィシャルデータシートより抜粋したものを添付します。
上記のようにデフォルトでピンがプルアップされているかプルダウンされているかが決まっています。
“プルアップ・プルダウン” とはピンが未接続でも電圧が HIGH・LOWになるように配慮されている事を言います。
そのため、デフォルトでは
内部 LDO は3.3V基準
SPI Boot
U0TXD で Debug Log Print が出力
RE Sampling/RE Output
となってます。
Booting Mode の切り替えに “GPIO0”, “GPIO2”を、加えて Strapping Pins が起動時にセットされるので “EN” ピン(リセットピン) を含めて3ピンが関係していることがわかりました。ただ、”GPIO2” はデフォルトがプルダウンなのでそのまま未接続でも問題ありません。
ここでは “GPIO0” と “EN” を使用します。グローバルラベル “EN”, “BOOT” を追加します。
この “EN” と “BOOT” ピンはデフォルトの挙動としての “SPI Boot” とファームウェアを書き込む際の “Download Boot” を切り替える必要があります。 “BOOT” ピンは既に内部でプルアップされているので、ここでは “EN” のみプルアップしておくことでデフォルト HIGH にしておきます。”EN” は入力ピンであり電圧の HIGH/LOW 判定でしか使われていないので +3V3 側に抵抗を挿み、GND 側にコンデンサを配置しています。
“HIGH” である 3.3V と “EN” の間に抵抗 R を挿んでプルアップしています。加えて GND との間にも コンデンサ C を置きました。RC を直列に繋いだものです。RC 回路と呼ばれるものでよく使われます。”EN” のグローバルラベルが付いたところは “HIGH” になります。
これらピンの HIGH -> LOW, LOW -> HIGH とスイッチする回路はまた別途追加するので、先へ進みます。
Debug Pin
DEBUG 用ピンも接続します。MTDI,MTDO,MTCK,MTMS をそれぞれグローバルラベルで追加していきます。このピンは仕様で決められているものなので同じように接続してください。
Debugger に繋げばコードや変数を追えるので開発用基板では重宝すると思います。PCと接続するためのピンも立てておきます。
ピンアウトは 10-pin JTAG/SWD コネクタの配置にしておきます。
LED
続いて L チカのメイン部品となる LED を繋げていきます。使用するピン数は単色の LED であれば 1つ、RGB 3色を扱う LED であれば 3つあれば良いです。RGB の方が色を変更できるのでファームウェアの応用の幅が増えるのでピンは 3つ使用することにします。
LED を扱う時の考慮点としてピンを流れる電流の量と向きがあります。データシートを見るかぎり電流を ESP32 のピンから出力する場合
パワードメインがVDD3P3_CPUかVDD3P3_RTCのピンであれば
40mA まで
パワードメインがVDD_SDIOのピンであれば
20mA まで
とあります。一方、電流を引き込む場合
28mA まで
とあります。
https://espressif.com/sites/default/files/documentation/esp32_datasheet_en.pdf
DC characteristic より抜粋
それほど大きな電流を流すつもりはないですが、LED を流れる電流値によって明るさが変わるのでここではより幅の大きい 40mA を選択します。つまり、カソードコモン (共通の GND と接続するピンをもつもの) の RGB シンボルを使用します。
“コンポーネントの追加” で “LED_” と検索してみると、
候補となるシンボルがたくさんあります。
この中の “Cathode” ピンのあるものから BGKR を選んで接続してみました。このシンボルはのちに部品を決定する時に変更する可能性が高いです。ここには RGB である以外に要件はないのでそれほど気にしないで良いと思います。
グローバルラベル “LED_RED”, “LED_GREEN”, “LED_BLUE” はESP32 のどのピンに繋ぐかのか、ですが、
ESP32 のデータシートの “Appendix A - ESP32 Pin Lists” - A.4. IO_MUX” にそれぞれのピンがどの “Power Domain” なのかの記述があります。
この中で “VDD3P3_CPU”, “VDD3P3_RTC” のものから選択すると 40mA までの電流出力が可能なので、ここでは “IO25”, “IO26”, “IO27” を使用します。
第五回まとめ
今回追加した回路は以下となります。
全体図は以下となります。
散らかって見えるので、整えます。
“繋がった図形ラインを追加”, “テキストを追加” で見やすくしてみました。
主要な部品はほぼ揃った状態となりました。
次回、
ファームウェア書き換え用のスイッチ回路追加
部品の値(静電容量、抵抗値など)決め
部品のリファレンス指定子の付与
エレクトリカルルール実行
部品表出力
など進めていきます。