現場監督の仕事が退屈なので、空いている時間に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を接続してみる。上手く行けば、ループバックする
はずなので、マスタ出力と同じものがスレーブからのデータとなるはず。
とりあえず、ループバックテストは上手く行っているようだ。
とりあえず、今回はこの辺まで。。。