トップページ | 組込みソフト | Linux搭載ボード | Raspberryにカラー液晶(リベンジ) |
Raspberryにカラー液晶(リベンジ) |
aitendoさんでL32-2PYを購入しました。こじ研(小嶋研究室)さんの記事を参考にさせていただきました。結果は、ほぼうまくいきました。しかし、不可解な不具合がありました。 しかし、問題がある。 電源をいれて最初に sudo ./lcd (lcdはCで作成した実行ファイル) をやると上記のちゃんとした表示。 もう一度、 sudo ./lcd をやると次のような画面。 なんだ、こりゃ! 同じプルグラムを実行させて1回目と2回目以後の表示がちがう。2回目以後はダメ表示。なんでだ? 結局原因不明です。 よくありそうなこと、 ソフトでいえば初期化をきちんとしていない。 たとえば、構造体の初期化であるデータを初期化し忘れたけれど、確率でほぼうまくいく。ときどき不正なデータになって不具合となる。 ハードでいえば配線し忘れたポートが不定になるがたまたまうまく動いてくれる。ただしときどき誤動作する。 などが考えられます。 現状を検証するよりもう一度作り直してしまえ!どうせならデータバス8ビットでどうなるかやってみよう。シフトレジスタを使わないでIOエクスパンダをつかったらいいかも?と思ったのですが、結局シフトレジスタの方がシンプルでデータ送信の効率が良さそうということでシフトレジスタにしました。(IOエクスパンダの方がシフトレジすらより安いのですが、残念です。)8ビットなら今までよりシフトレジスタ1個が節約できます。シフトレジスタ買ったとき300円くらいです。 |
自身のない人はやらないでください |
データバスを8ビットにするには、チップ抵抗を付け替える改造が必要です。 この小さいR4を外してR5に付け替えます。たぶん失敗すると思いR4の抵抗値を計ってみると0オームです。つまりジャンパー線のようなものです。それならR4を紛失しても電線で繋げばOKです。案の定、抵抗を外すのに四苦八苦。外れたらどこかに行ってしまいました。予想が的中です。電線でR5をショートするだけなのですが、これまた大変。小さすぎます。とりあえずテスターでは繋がっているようですが、本当か?よくわかりません。 |
結果は? |
うまくいきました。 前回の不具合は起きませんでした。 こんな風に完成です。 秋月さんで買ったCPUファンを付けています。気温の高いときにフリーズすることが激減しました。また、液晶の表示は自作のテストプログラムです。思ったように表示しています。 Raspberry Piの立ち上がり画面です。 小さいですが、コンピュータです。 |
わかったこと |
フレームバッファのデータはリトルエンデアンのようです。16ビットのときは素直にデータをSPIで送ればよかったのですが、今回は上位8ビット、下位8ビットを入れ替えて送ります。最初色がパソコンモニタとこのLCDで違っていたので、何で?と思っていましたがこれが原因でした。 LCDについて、タッチパネル付きという表現があります。よーーーく気をつけないと痛い目にあいます。 1.タッチパネルが付いているだけ (タッチパネルのインターフェース回路を自分で作ることになります) 2.タッチパネルインターフェース付き (タッチパネルのインターフェース回路が実装されています) ちなみにこのLCDは1です。 タッチパネルの機能を簡単に使いたい人はこのLCDはやめてください。 |
回路図とソースファイル 2014/6/20 公開 |
こじ研(小嶋研究室)さんから変わっています。 新たに半田付けしたボードを作りました。 配線がすごくすっきりしました。 回路図は部品の実装した図面を示します。(回路図と実装図の両方描くが面倒なので実装図だけにしました。これなら実際製作するときチェックが楽です。) ソースファイルは、 gpio.h gpio.cpp SPI.h SPI.cpp lcd.h lcd.cpp lcd_app.cpp です。 クラスlcdですでに公開しているGPIO、SPIのクラスを使っています。 最初に1秒間テストパターンを表示します。 つぎに、Linuxの画面を表示します。 startx とやればX-Windowを表示します。 インターフェースの回路を作るのは簡単だと思います。それよりこのLCDはフラットケーブルの半田付け、抵抗の付け替えがすごく大変です。半田付けの技術がそれなり必要です。 お約束の言葉: 製作は自己責任でお願いします。 |