現場監督の仕事が退屈なので、空いている時間にPSOCの続きをやっ


てみた。




SPIテスタ用のスクリプトは、簡単に済ますつもりだったのだけども、、、


実用に耐えるようにと、いろんな昨日を埋め込んだら、思ったよりも3倍


くらいに膨れてしまった。




気が付けば、、、テストスクリプトを解釈して、中間言語形式にコンパイ


ルして、インタプリタで実行? そんな感じになってしまった。とはいって


も、ソースコードは800行くらいなので、それほど大規模でもない。まぁ、


半日で書いたのでアタリマエダノクラッカー!




ソースコードの大部分であるハードウェアに依存しないコマンドパーサー


や、中間言語生成部、インタプリタのほとんどは、PC上VC++のコンソー


ルアプリケーションとして大雑把な機能試験をしてから、PSOC上に移植


した。




で、必要になるのは実際のデータ入力に必要なプローブ、、、と言うか、


ただの配線。




今回は、30分ほどで↓見たいのを作った。




ぽよぽよ侍でござる




P0_0 を SS


P0_1 を SCLK


P0_2 を MOSI


P0_3 を MISO


と接続するための道具。




実際に、ターゲットに接続する時はこんな感じになる。






ぽよぽよ侍でござる



見難いかも知れないけど、まぁ、雰囲気だけ察してくださいませ。




とは言っても、さすがにいきなりターゲットに繋いでテストするわけにも


行かないので、とりあえずターゲットを外してテストを行う。




テストに使用するスクリプトは、こんな感じ、、、




{ 10 SSL 11 22 33 44 SSH WUS 250 SSL { 10 FF } SSH PRN }




ざっと説明すると




{ 10 → 対応するカッコまでの内容を 10回繰り返し実行せよ


SSL → SSラインをLOWにせよ(いわゆるチップセレクト動作)


11 22 33 44 → SPIに 11H, 22H, 33H, 44Hの4バイトを出せ


SSH → SSラインをHIGHにせよ(いわゆるセレクト解除動作)


WUS 250 → 250マイクロ秒ウエイトせよ


SSL → SSラインをLOWにせよ(いわゆるチップセレクト動作)


{ 10 FF } → FFHを10回出力せよ


SSH → SSラインをHIGHにせよ(いわゆるセレクト解除動作)


PRN → これまでのI/O履歴をダンプせよ




まぁ、こんな感じ




まずは、MISOラインをGNDに繋いで、適当なコマンドを実行してみる。




ぽよぽよ侍でござる



MISOがGNDレベルの場合は、スレーブからの出力が全て0になるので


スレーブからのデータは全て00Hになる。




どうやら、ここまでは上手く動いているようだ・・・




次に、MISOをVDDに繋いでテストしてみる。




ぽよぽよ侍でござる



MISOがVDDレベルの場合は、スレーブからの出力が全て1になるので


スレーブからのデータは全てFFHになる。




どうやら、ここまでも上手く動いているようだ・・・



今度は、MOSIとMISOを接続してみる。上手く行けば、ループバックする


はずなので、マスタ出力と同じものがスレーブからのデータとなるはず。






ぽよぽよ侍でござる




とりあえず、ループバックテストは上手く行っているようだ。








とりあえず、今回はこの辺まで。。。