2021年5月18日火曜日

V/AプローブにSPIインターフェースが実装できた

 鋭意開発中の「V/Aプローブアダプター」、
RS-422タイプの差動非同期シリアルインターフェースは実装できたのですが、
もう1種類のインターフェースであるSPIインターフェースの実装に難儀してました。

もうかなりの手探り状態になってしまった為、
一時はSPIインターフェースの実装は棚上げしようかと考えたほど。
実際、RS-422インターフェースだけで十分仕様できるので、
SPIインターフェース無しでも実害は少ない感じかと。

とはいえ基板上の実装部品がムダになってしまうので、
可能ならば実装したいと格闘を続けておりまして、結果なんとかなった模様。

結論から言えば、SPIスレーブモードでの動作時は、
1byte単位でデーター転送する必要があるようです。

私が通常、SPIバスを使う際はマスターモードで動かします。
チップセレクトはイネーブルのまま、クロックを連続送出することで、
何byteでも送受信することが可能だったんですね。

ところが今回、V/Aプローブではスレープモードでの動作。
端末側からクロックを送ってやっても、なぜか1byteしかデーターを送れない!!
SPIバスのSS信号は今回不使用。
ならばクロックを送った分だけデーターが送れるはずなのだが・・・・・・

試行錯誤の結果、端末側からV/Aプローブに対するチップセレクト信号を使い、
1byte転送毎にSPIモジュールをリセットするようにしてみたらバッチリ。

結果として端末側ユニットの制御プログラムが複雑になってしまいますが、
やむをえないところですね。
いよいよ面倒な内容になりそうならばRS-422インターフェースを使ってもらえばいいわけですし。

そんなわけで、当面の最大の山は乗り越えました。