CoCoNet液晶工房でこの間買っておいたnokiaの
5110液晶(白黒)。
ブレッドボード用のアクセサリを先日作ったので、
あとで試してみようと思ってPCD8544のデータシート
を眺めてみる…。
そもそもがSPIで制御できるっていう理解で買って
きたので、それほど苦労は無いだろうと思って
眺め始めたんですが…あれ?読んでも頭に入って
こないぞ???
信号名が違うからか?いや、タイミングチャートが
やっぱりSPIとはなんか違う…
なんだかんだで頭からお尻まで30分くらい何度も
何度も眺めてしまった…
ちょこっと眺めて、適当なデータをぶっこんで
何か表示させて満足満足…って行くはずだったのに…。
(TへT)
よーく眺めてみて、ようやくピンと来た。
SPIプラスαの信号なんだな。これ。
クロック信号、マスターイン、マスターアウト、
スレーブセレクトに相当する信号に加えて、
もう1個信号があるんだな。送信中のビット列が
データなのかコマンドなのかを判別するビットが。
ここが引っかかってたんだな。
D/C信号ってやつ。解った。解った。
で、D/C以外の信号はまさにSPIそのまま。
SPIモード0ってやつだ。
(クロック立ち上がりで取り込み、クロック位相
は正論理)
こうなると、次はプログラムの構想に。
例によって山根さんの本を引っ張り出す。
SPIのページ。
I2Cと違ってやっぱ簡単だな。
それにしても、AVRのSPIは送り出しの
順番が「MSBから」だけでなく、「LSBから」
にもできるんだなぁ。
あまり他では聞いたことが無い気がするなぁ。
まぁいいや。
とにかく、SPIをモード0で使って、MSBから
順に送り出して、8ビット目のクロックとあわせて
データ/コマンドを識別するビットをいっしょに
送ればいいわけだな。
といっても、SPIはハードウェア処理させたいから、
1バイト送り出す事前にデータかコマンドかのビットを
設定しておくっていうのが現実的な方法だな。
これはこれでヨシと。
もう1点微妙なところ。データシート見てると
ページによってはVddには2.7~3.3V、
ページによっては定格7V(入力端子はVdd+0.5V)
って書いてあるんだけど、どっちなんだろう?
5Vで使いたいんだけどなぁ。
LEDの方は適当でもいいとして、コントローラー
の電圧と入力信号の電圧って、5VがOKなのか
どうなのか… 5Vつないだ途端に画像じゃなくて
煙が出たら嫌だからな…
arduinoにPCD8455用ライブラリが公開されている
からこれも試してみたんだけど、arduinoは
5Vのしか持ってないからな…
3.3Vだけだとしたら、3.3V用のarduinoを
使えってことなのかな?
http://www.arduino.cc/playground/Code/PCD8544
こっちにはやっぱり3.3Vって書いてあるみたい…
うーん。
|
aitendoさんのは、以前使ったことがあります。ロジックレベルは3.3Vです。これを内部で昇圧してLCDの電源にしています。なので3.3Vを入れてやります。5V系との接続はレベル変換しないといけないはずです。
3.3Vですか。
すると、arduinoのライブラリ(非公式ライブラリ)で使っている環境もきっと3.3Vのarduino用なのでしょうね。
うーん、どうやってレベル変換しようかな…
74LCX541を幾つか買いこんであるんですが、sopなのでブレッドボードでちょっと…ってわけにはいきませんからねぇ…
またブレッドボード用のアクセサリを1個作ろうかな… arduinoを3.3Vに接続するための…。
もしくは3.3V動作のマイコンで実験した方が早いかな…。うーん。
あ、抵抗の分圧っていう手も!
通信速度を落とせばこれでも何とかなるんじゃないかなぁ…
spec的に内蔵発振のAVRにぴったりです。
転送速度のmaxが4Mbpsで、8MHz AVRのSPIも最高速度4Mbpsで3.3V動作というあたりです。SPIモジュールのあるATMega88とか168あたりがよさそうです。
制御に使うのが5本なので、ぴったりのICがないですね。
おっしゃる通り、3.3Vの8Mhzだとシリアルクロックが丁度4Mhzでピッタンコですね。
簡単なプログラムをでっち上げて、とりあえず映ることだけでも確認してみようと思います。
デッドストック状態のMEGA8がいいかな…