2018年6月23日土曜日

Nano Pi NEOにSPI LCD

Nano Pi NEOはarmbianをインストールしてある。なので、armbian-configで、使用するデバイスを追加する。

そのままだと、SPI (host)はoverlayに追加はされるけども有効にならないので、 /boot/armbianEnv.txtに次の行を追加してリブート。
param_spidev_spi_bus=0
param_spidev_max_freq=40000000

参考にさせていただいたサイト:
https://zigsow.jp/item/335215/review/337814
https://qiita.com/toyoshim/items/84c026e97f6be200cb19

あとでUSBも拡張しようと思ってるのでそっちもついでに有効にしておく。さてこれで準備はできた。

使おうとしているSPI LCDは、M028C9341SDと言う型番になっている。ようは、2.8inch LCDで、ILI9341を使っていてSPIで動作するようになっているもの。ILI9341は、いわゆる「スレーブバス」(マイコンなどのメモリバスにつなげて使う)用のパラレルI/Fがあり、Arduino用にそれを用いたLCDもある。そちらも持っているのだが、何せNano Pi NEOではGPIO線数が足らない(8bitパラレルデータ+LCD制御信号)。

このLCDの裏面を見ると、端子名が表記されていて、表側にマークがある1ピン側からVcc, Gnd, SPICS, Reset, DC, MOSI, SPICK, LED, MISOとなる。このうちLEDはバックライト電源なので、+3.3Vに直結で動かす。本当は、デジトラ通して、GPIOでバックライトOn/Offを制御するべきなんだろうけど、後回し。
電源3.3VとGND、SPI系は素直につなげばよいが、それ以外については次のように接続している(参考サイトから)。
Reset -> PG11 (GPIO203)、DC -> PA1(GPIO1)

ドライバは、fbtftを使うので:
・/etc/modules-load.dにfbtft.confとして、fbtft_deviceと記したファイルを用意。
・/etc/modprobe.dにfbtft.confとして、
 options fbtft_device custom name=fb_ili9341 speed=16000000 rotate=270 gpios=reset:203,dc:1
としたファイルを用意。

シャットダウンしてLCDをつなぎ、電源投入すると、意外とすんなり動いてくれる。

さて、…


/dev/fb0で動いてくれるので、グラフィックスできるはず。
さすがにQVGA液晶でX11系のデスクトップ出しても仕方ない。
どうやって転用すっかな…。





(9/29 追記)

仕事でこれ使う計画を立てているのだけども、そちらで用意したセットはなにか具合が悪い。fbは立ち上がるがしばらくすると落ちてしまう。
原因がわからず、再度、自宅でこの構成をして確認…の状態からしばらく作業できず、3週間強も経過してしまいました。

さてさて。
再現に際して、ピン位置的な使いやすさを優先しようとして、resetとdcに、プライマリには他の機能が割り当てられている端子を使ってみようとしました。つまり、プライマリな機能を有効にしないまま使おうとしたとき、GPIOとして動作することを期待したわけです。WiringNPではoutとなっていて、出力設定されているようですが、GPIOとしては機能してくれない様子。GPIOがプライマリになっていない端子はやはりdt書かないとダメだということですね。
# おっと。ということは、BBBでうまくいってない部分もそこだ、きっと…。

ということで、上記と同じ設定になおしてみると、fps=33とレポートされます。確認を簡単にするために、キーボードとマウスをUSBにつないで、インストールしたxserverもちゃんと稼働してくれたところを見ると、どうも配線上の問題臭いですね…。そこから見直すことにします。

xserverの動作確認して、止めたところ。(xterm開いてても何だかわからないでしょ?)


(10/8追記)

 仕事で使ってる方は、何かとジャンパでは都合が悪いため、ユニバーサル基板を加工してベースボード的なものを作成し、NanoPiを搭載してあります。そもそもはSPIポートを他の目的で使うために、ピンヘッダへと引き出した上で、そこにジャンパでLCDを配線していたんです。

配線直すか…ということで、ピンヘッダおよびNanoPi端子からピンヘッダまでの配線を撤去して直接LCDモジュールへと配線して見たところ、悲しいことに状況変わらず。
上記、自宅で動いていた同じLCDを持ち込んで配線して見た結果は何時間でも動いてる。
「モジュール不良」という結論だね、こりゃorz。

あ”~、またLCD調達しにいかないと…。


0 件のコメント:

コメントを投稿