期待をこめて電源ON。画面は白いラスターのままである。何と、これでも動かない。期待が大きかっただけに、がっくりくる。2台とも不良ということは、いくらチャイナクオリティだと馬鹿にしていても、ちょっとありえない話で、これは、こちらの初期化の失敗とみるのが順当なところである。メモに症状をもういちど書き直して、対策を練る。データシートをダウンロードして、いちから調べ直しだ。STM32の方は、オリジナルのGPIOEポートをGPIODに変更しているが、全く問題ないことを確認した。あやしいのは、8ビットモードがILI932xで最初、定義できなかったことだ。強引にピンを割り当てたが、プログラム中での16/8ビットモードの書き分けが心配だ。ソースコードをしらみつぶしにして、#ifdefで分けていないか探す。コマンドを出す関数で1ヶ所、変更されていないところを見つけた。これだ!これにちがいない。喜び勇んでビルドし直し、テストする。いや、やっぱりだめだ。同じような白ラスターが出るだけである。リセットしたときのような点滅もない。なったら、コントローラーの動きを最初からチェックして、少しづつ正しくコマンドがコントローラーに送られていることを確認するしかないか。ロジアナで派手に波形を出しても正常。暗礁に完全に乗り上げる(10/9/2014)ロジックアナライザーに目いっぱいのプローブをつけて動作解析である。液晶の制御ピンに5ピン、データバス8ピンにグランド、合わせて14ピンがジャンパーケーブルに群がる。このロジアナ(ZEROPLUS)のプローブは出来が良く、着実にピンを捉えるので使いやすい。救いはJTAG関係が好調で何度でも簡単にビルドしてテストが続けられることだ。ロジアナで所望の波形はすぐ得られた。最初、データバスのenable信号WRが出ていないところを発見し、これだ!と色めいたのだが、サンプリングが遅すぎることに気が付き、戻したらちゃんと波形が出ていてがっかりする。初期化は順調にやっている。8ビットコードで2回WRやRDを出していることも確認できた。制御信号を送っているではないか。on)も、所定通りのビットが立っている。これで完全に暗礁に乗り上げた。ディバイスコードが正常に戻っていて、波形も正常。信じたくはないが、客観的な状況はそれを物語る。有り得ない話で、3台目を買いに行こうという気にはならない。やることがなくなって、とうとう、また、ねむいさんに助け舟のメールを出した。返事は来ないだろうから、少し頭を冷やす良い機会と、TFT液晶とARMのソースの解析を続ける。BRRレジスター、IDR、CRLレジスター)や、ディスプレイコントローラのロジックなど、こういう機会でなければ勉強する機会がなかったところに、すっかり詳しくなった。ことでTFT液晶が動いた。カラーバーが眩しい(10/14/2014)ほどなく、ねむいさんから丁寧な返事が来て、色々な助言を頂いた。こちらの状況を報告しながら、少しづつ言われた処理を試していく。メールのやりとり数度、しかし、事態は好転しない。ブログの記事も、もう一か月近くご無沙汰だ。出さないと書き溜めた記事が古くなってしまうと思っていた矢先、問題は一挙に解決した。これが面白いことに、ねむいさんがソースの不具合に気づいて知らせてくれたのと、自前で暫定的に初期化に成功したのと1時間も差がないというドラマティックな展開となった。いやあ、みなさんから時々、波瀾万丈とか七転八倒とからかわれるけれど、まさしく今度も劇的な結末となった。発見の端緒は、CS(チップセレクト)ピンの不審な挙動である。初期化の途中、なぜかCSがdisableになってしまっている。始め気が付かなかったが、長いスパンで波形を見ていた時発見した。ねむいさんにはこれを知らせてあったので、これをヒントに不具合を見つけられたのだと思うが、ロジアナの波形には、はっきり映っている(添付のロジアナ画像の丸で囲んだところ)もしかしたら、CSの結線がされていないからかもしれない、と最初は思った。Highにするとdeviceコード読み取りそのものが動かなくなるので、CSが効いていることは間違いない。初期化の途中で何故CSが上がるのか。試しに、コマンドの中に、CSをset/resetするコードを加えて動かしてみる。これで大部分は、その通りになったが、まだごく一部でCSが暴れる。おやあ、TFT画面を見ていると何か少し変化したぞ。ふーむ、ピンへの出力がパワー不足か。ピンをプルダウンしてみる。前のように全く無反応ではなく、画面がほんのわずかだが暗くなった(ような気がする)。それではいっそのこと、CSピンを強制的にグランドに落としてはどうか。STM32のGPIOピンに悪影響があるかもしれないが、まあ壊れることはないだろう。乱暴だが入力ピンをはずして、液晶のCS端子をグランドに落として(enable)、リセットする。あっあっあ、画面が真っ暗になった。ほー、初期化に成功した。念のため、clearを赤でしてみる。見事、画面が赤くなった。