Raspberry Piにaitendoで購入したノキア携帯5510の液晶を接続して文字表示をさせてみました。
この液晶パネルはSPIインタフェースだったのでまじめにSPIで接続して・・・と思ったのですが、 Command/DataやChip EnableなどSPI以外の追加の制御信号があるので面倒になって直接ポートでSPI相当の信号を作ることにしました。
プログラムの冒頭には相変わらずGPIOを直接叩くプログラムを使っています。 その後に6x8のANKフォントデータ、最後にLCDを制御する部分です。プログラムをアップロードしておきます。
LCDをGPIOで直接叩いているので、特に工夫した部分はありません。データシートの通りに叩いているだけです。初期化の部分ではコントラスト調整やバイアス調整がありますが、これは試行錯誤してそれなりに表示されたので、その時の値をそのまま使っています。これが適正値なのかはわかりません。
プログラムをしばらく動かしていると、たまにデータ抜けがあるようです。タイミングは無駄ループで作っているのですが、無駄ループをあまり多くすると意味もなくCPU時間を消費するし、かといって短くするとアクセスが正常にできなくなってしまいますから悩ましいところです。
オシロスコープで見ると十分にタイミングに余裕はあるはずなので、単なるタイミングの問題ではないはずです。適当な空中配線ですので、ひょっとしたらその辺が影響しているのかもしれません。