1.8 インチ TFT LCD シールド (1)

STmicroelectronics 社製の STM32 マイコンの評価ボード「Nucleo」シリーズは、秋月価格で 1500 円 〜 1800 円と安価 (Nucleo-32、Nucleo-64 の場合) で提供されています。
しかし、「プログラマ/デバッガ」である ST-LINK/V2-1 にターゲット MPU の「ブレークアウト・ボード」を組み合わせた程度の構成であるため、オンボードペリフェラルとしては LED 1 個、押しボタンスイッチ 1 個しかありません。
その他のペリフェラルArduino コネクタ / ST morpho コネクタを介して外部の基板に実装しなければなりません。
そのため、「標準」と言えるハードウェアは LED/SW しかないのですが、Adafruit 製の Arduino 用の 1.8 インチ TFT LCD シールドとの組み合わせについては、STM32Cube ライブラリの BSP (Board Support Package) でサポートされています。
このシールドにはマイクロ SD カード・スロット、小型ジョイスティック、1.8 インチ TFT グラフィック LCD が実装されており、STM32Cube の BSP でも、そのすべてを利用できます。
Adafruit のサイトで回路図も公開されており、それを参考に自作することも可能です。
Adafruit の回路では、コントローラに ST7735R を使用した LCD を採用していますが、それとは違うコントローラ (S6D0151) を使った手持ちの 1.77 インチ LCD (aitendo TFT2P0327E-A) で自作シールドを作成してみました。
LCD コントローラが違うので、当然 LCD ライブラリの一部を書き換える必要があります。
Nucleo 用のデモプログラムが動作する程度には書き換えが進みました。 Arduino (AVR) 用にはまだ着手していません。
秋月「B タイプ」のユニバーサル基板上に組んだシールドの写真を示します。 (2017 年 5 月 25 日追記: LCD モジュールを外した写真を追加しました)
Arduino コネクタの変則的な 50 mil オフセットを 100 mil グリッドに乗せかえるためだけの目的で、間にユニバーサル・シールドを 1 段挟んでいます。
ジョイスティックはタクト・スイッチ 5 個に置き換えています。


Nucleo-F411RE 用のデモンストレーション・プログラムを実行させて表示される最初の画面を撮影しています。
手持ちの (Arduino コネクタを持つ) Nucleo-64 ボードは F401RE、F411RE、F446RE の 3 種ですが、TFT LCD シールドを使ったデモ・プログラムが用意されているのがこの 3 種の中では F411RE だけだったので、F411RE を使用しています。
TFT2P0327E-A 基板での、LCD 回りに限った回路図を下に示します。 マイクロ SD 部とジョイスティック部の回路は省略しています。

Adafruit のシールドでは、シールド上に自前の 3.3 V レギュレータを設けていますが、簡単のため、Arduino コネクタの 3.3 V をそのまま利用しています。
SD カードの動作時には 100 mA 程度のラッシュ電流が流れるので、Arduino 側の 3.3 V レギュレータがその負荷変動に耐えられる必要があります。
LCD モジュールとしての電源電圧はスペック上は標準 2.8 V、最小 2.7 V、最大 2.9 V となっていますが、2.7 V 程度を加えた場合と、3.3 V の場合とで表示される画像に差がなかったので、3.3 V を直接加えています。 (コントローラ S6D0151 本体の電源電圧は最大 3.3 V)
aitendo の TFT2P0327E 用の LCD キャリーボードには「-A」と「-B」の 2 種があって、「-B」基板では LED バックライト用の LED ドライブ回路が実装されていますが、「-A」基板には存在していないので、手持ちの安定化 +12 V 出力のチャージ・ポンプ IC MAX662A (Maxim 製) を使って LED バックライトを点灯させています。
「-A」基板では、LCD コントローラの MCU バス・インターフェース・モード切替の IM3 〜 IM0 信号が基板上にハンダ・ブリッジのパターンとして引き出されており、任意に設定が可能ですが、「-B」基板では「4-wire SPI モード、IM0 = 0」専用となっています。 (ただし、「MISO」 信号に相当する「SDO」信号は引出されておらず、LCD からのデータ読み出しは不可)
「-B」基板に置き換えた場合でも使えるように、「-A」基板上での設定を IM[3:0] = 0100 として、「-B」基板と同じ「4-wire SPI モード、IM0 = 0」としています。
4-wire SPI モードでは、「-A」基板の「WR」端子に SPI の SCLK 端子、「SDI」端子に SPI の MOSI 信号を接続します。
「-B」基板では、それぞれ「SCLK」、「MOSI」に接続すれば良いはずですが、実際はシルク印刷が入れ違っていて、「SCLK」端子に SPI の MOSI、「MOSI」端子に SPI の SCLK を接続する必要があるようです。