秋月300円液晶用フレームバッファー
TOPページへ

<参考サイト>(感謝)
なる研さん
xcrOSgS2wYさん
長船さん
GO2さん

 秋月電子から400x96グラフィックLCDが300円(インバータ付1000円)で発売されてから色々な所で解析されて既にフレームバッファーをCPLD等を使って作りマイコンでの表示を楽しんでおられる方が大勢いるようです。

 これらの解析結果に感謝しつつ、私もひとつ造って見ようと思いましたが、ハードウェアーロジックを使用するのは、このHPの趣旨に反するので(人様にお見せできるような力量が無いので orz)、ここでもPICを使って見ました。

 とは言え、ある程度の表示レートを確保するにはそこそこのスピードが必要なのでdsPICを高速マイコンとして使用してみました。リフレッシュレート15frm/s辺りが目標です。


ハードウェアーの製作
回路図
 使用する品種は手持ちのdsPIC30F6014A-30I/PFです。スタンドアローンで使えれば上出来ですが残りのポート数や動作の制約(割込みを禁止出来ないとかシャドーレジスタが使えないとか)もあるので外部I/Fも加えています。
 外部からは単なるSRAMのように見えた方が使い易いのですがポート数が足りないので外部制御はSPI通信を使用する事にします。

 秋月からインバータ付LCDが到着しFFCコネクタを見て確信しました。私には、ここから電線を引出すことは不可能である。さらにdsPICもSRAMも表面実装品ですし...基板を業者にお願いする事にしました。

 dsPIC30F6014Aは16bit連続しているポートが2つしか無く、その内の1つにはドットクロック使用予定のOC-OUTPUTが並んでいます。
 この時点で16bitカラーだと1ドット表示の度にSRAMを2回リードする必要があり速度の点で心配なので後から8bitカラーへ改造し易くする為、発注する基板にFFCコネクタを実装せずに2.54mmピッチのランドを設け外部でFFCコネクタへの変換基板を使う事によって接続換えが簡単になるようにしました。

 まずはLCD側の改造...?
 40PのFFCケーブルしか入手出来なかったのでLCD側の36Pコネクタを40Pコネクタに取り替えました...ここまで加工してから思いつきました orz

 これで良かった...(涙。この間抜け具合は一生直らないでしょう...
 今回は戒めの意味を込めて上のLCDで実験する事にしました。

 完成した画像で右上は、まだ電源だけの状態です。LCDへの±12Vは手持ちのDCDCを使用しましたが実際の電流を測って見た所+側9.3mA、-側10.2mAだったのでチャージポンプIC等で十分でしょう。

 右下の基板がPICだけ欠品しているのは残り3個あったはずのPICがI/PFが1個、I/PTが2個でした。基板はI/PF(14x14mm)で作成してしまったので実装するPICが有りません(涙。
 PICを購入する予定が今の所無いので、何方か図書券と交換しませんか?


ソフトウェアーの製作
 先人の解析結果を元にPICから図のタイミングで信号を出しています。590.4 688.8KHzのドットクロックで動作出来れば15frm/s、393.6 459.2KHzだと10frm/sとなります。

 右の黄色部分が水平、垂直ブランキング期間となります。垂直ブランキングは有りません。

2008-8:V-SYNCを表示領域の外へ出した。

 15frm/sのクロックの場合、立上がりの割込み開始からLCDがデータを取込む立下りまで800nSチョイしかありません。割込みのオーバーヘッドもあり、PICに残されたサイクル数は20程になります。

 このサイクル数内にV,H-SYNCとSRAMから画素データを読み出すのは至難の業なのでデューティ比を増やして使用できるサイクル数を増やしました。これでも時間内に処理を終える事が難しい状況になったのでリフレッシュレート10fram/s、デューティ66%で、とりあえず表示を見て「チラつくようなら又考える」事にして進めました。8bitカラーにすると5サイクル程節約出来ますが、そんなレベルでは無くなっています。

 下波形は割込みへ入口でHigh、割込み出口でLowにしているポート出力です。HCLKがHighの間に、辛うじて処理が完了しています。
 横軸は??nS/divです。orz 忘れました...

 やっと動いたぁー。プログラムメモリーだけは沢山余りそうなので「8x8恵梨沙フォント」を入れて表示して見ました。かな漢字混じりだと8x8でも何とか読めるのが驚きです。
 画面は多少のうねり感?がありますが15frm/sとあまり変わらないので、これで進めようと思っています。(基板にFFCコネクタを実装しておけば良かった orz)

 外部I/Fをまだ作っていないので現在はPICのみのスタンドアローンですがこの状態でも予想通りに遅く描画速度は4〜5画面/s程度、VRAMを単純に定数で埋める場合でも13画面/sでした。外部I/F越しだと、これより早く描画出来ないなぁ。

 座標と色は乱数(笑、直線、四角、塗り潰し四角を各1000個書いてます。oso!


恵梨沙フォントに感謝! ソースファイルは出せない??


マザーボードの製作だけどPICで作るの止めようかなぁ
 で結局、dsPIC30F4013で回路図書かずに作りました。SDカードから400x96 24bitカラーのBMPファイルを表示しています。ファイル読出しも含めて1画面書くのに2秒弱掛かり激遅ですが初めてのカラーLCDなので感動しています。

 BMPファイルのデータは画像左下から始まっているのが多いですが、それを左上から描画しました。なので上下左右が逆になってます(汗
 何の役にも立たないことで遊んでいると仕事してる時より疲れるのは何故だろう?気が付くまで夢中で止めないから?


 スタンドアローン(やっぱワンチップで)で現在第2弾を製作中...dsPIC33をフルスピードで動かせばLCD以外に20Mipsぐらい残らんかなぁー?最初の目標(根拠は無いけれど)15frm/sも実現したいし...


TOPへ戻る