祈る気持ちでUSBプラグを差す。TFTの画面が白くなる。パイロットのLEDが点灯。モニター端末からは何の反応もない。画面も白いままである。初めから動くとは考えていない。電源を切って、あちこち触り、どこも熱を持っていないことを確かめる。モニター端末が動かないのは、見当がついている。AitendoのSTM32基板は、RS232Cインターフェースを持っており、標準のUART1とUART2を選べるようになっているが、オリジナルのねむいさんのソースは、UART2がリマップされているので、これが使えない。リマップした理由は、SDカードのSPIのSSピンと被るかららしいが、SSピンはSDカードのインターフェースでは使っていないので大丈夫だと判断し、リマップを止めて正規のUART2に戻してある。それが良くないようだ。リマップするからには何か理由があるはずだ。ここはやっぱりリマップされたPD5とPD6をUARTに出した方が良い。ピンヘッダーを出してPD5、6を取り出す。コンパイルし直して、ピンにUART線をつなぎ再度テスト。よーし良いぞ、端末に文字が出た。おう、TFTの画面にも何か出ている。中央部だけだが、これも完全に字が乱れている。ふーむ、何かクロックが違うような症状だ。クリスタルは指定どおり25Mhzになっているが、それがおかしいのだろうか。このあたりは8ビットプロセッサーと違って、非常に複雑なところでとてもソースを追いきれない。仕方がないので、ロジアナを持ち出して、シリアルのパルス幅を計測することにした。ソースの指定は230kbpsになっている。出てきたパルスの時間間隔を測る。8ビットが34.705μs。230kbpsは、正確には230400bpsで、この8ビットは34.722μs。ふーむ、0.1%以下の誤差だ。クロックは問題ないようだが、それでも字が化ける。バイナリー端末のAcknowrichを動かしてみた。何い、こいつは230kbpsはサポートしていない。うーむ、そうか、PCにも厳しい速度のようだ。こんなに早くなくても良い筈だ。ビットレートを落としてみよう。当研究所のシリアルの定番の早さ38400bpsにして再ビルドする。TFT液晶(YHY024006A)が正常に表示された(2/17/2012)良いぞ。端末にソースコード通りのメッセージが戻ってきた。RTCも動いているようだ。ソースコードはなるべくいじらないようにした効果が出たようだ。SDカードからデータを読んでとりあえずはファイラーまでは動いた。TFT画面は中央部に乱れた文字らしいものが出るだけだ。これもクロック関係の不具合に見えるが、ソースがこれだけ動いているのだから、やはり配線間違いが一番疑われる。夕食後、気を落ち着けて、TFT基板とマザー基板の間の結線をひとつひとつ確認していく。有力な疑いは、16ビットモードでなく、8ビットモードでTFTが動いている疑いである。このTFTは情報によればデフォルトでは16ビットモードとあるが、本当にそうなのか確認する術がない。いちど雑誌記事(トラ技2011年2月号)や、著者のサイトを見ているうち気になるところが見つかった。IM0というピンは雑誌では結線されていないが、データシートを見ると16ビットモードではグランドに落とすことになっている。モジュール基板では、既にグランドに落とされているので雑誌のように未結線で良いと解釈していたが、本当にグランドに落ちているのか調べてみることにした。