Spresense SDK のNXサンプル(LCDボード表示)をよく理解しないまま、
Spresense SDK で LCD サンプルプログラムを動かしてみた その2(Configuration)
Spresense SDK で LCD サンプルプログラムを動かしてみた その1
の記事を書きましたが、ほんの少し理解が深まったので再度まとめます。
やりたいこと
Spresenseのメインボードで使えるLCD拡張ボードを作ったので、それをSpresense SDKから使いたい。
そもそもArduino IDEでは問題なく使えている
Sony Spresense(IDE) で TFT LCD を動かしてみた
Sony Spresense(IDE) で TFT LCD を動かしてみた 2
メインボードでLCD表示器を使うボードは
SONY Spresense用 TFT LCDドライバーボード
になります。
はまっていたこと
Nuttx のLCDとSPIに関するコンフィグレーションが良く分からない。
ほとんど情報無し(泣)
公式の
Spresense SDK チュートリアルの 10. Graphics チュートリアル
ではサンプルがそのまま動いているっぽい。
ただし、Nuttxでの LCDとSPIに関するコンフィグレーション に関しては言及無し。
このチュートリアルでは拡張ボードでLCDを動かすようになっていたので、
SPIのポートをMainボードのポートに変更して、LCDの制御線関係を合わせれば良いと勝手に解釈。
勘違い(?)
LCDコントローラーIC ILI9341 はCMD/DATAの制御が必要なので
Nuttxのコンフィグレーションで この設定 を有効したら
cxd56_spi3cmddata、cxd56_spi4cmddata、cxd56_spi5cmddata の関数が無いというエラーでコンパイルが通らない。
これに関しては
Spresense SDK で LCD サンプルプログラムを動かしてみた その1
で対策を取って、動くようにはなっていましたが、そもそもCMD/DATAの有効化は必要ないみたいです。
CMD/DATAに関しては、他のボード用のNuttxでも「関数が無いので作った」みたいな情報を見かけたので
そのソースを基に関数を作っていました。
これに関しては正しい情報が欲しいところです(笑)
Spresense用だけがカスタマイズされている?
結局これだけ設定すれば動く
そして宿題
とりあえず表示は出来たもののなんか変。
表裏逆?
公式のページに解説してある
10.1.4. Tips LCD画面のオリエンテーションの変更方法
これで直るのかな。
これは宿題に(笑)。
補足
LCDのドライバーチップを ILI9341 に設定するとコンパイルでエラーとなる。
また、ILI9340 のチェックを外すと、LCD画面のオリエンテーションの変更が出来なくなる。
ILI9340とILI9341の両方にチェックを入れるとコンパイルも通って動くけど
ILI9340だけをチェックした時との違いが分からない。
最後に
なんとかメインボードとLCDドライバーボードでLCDを制御できそうです。
カラーTFT LCDはずいぶん安くなっているので使わない手はないと思っています。
今まではOLEDを使っていましたがモノクロだったので、カラーになると表現力が格段に上がると思っています。