SPI通信(送信?)を可視化してみた。

秋月ArduinoクローンをとHC595を使い、SPI通信を可視化(とはいえオシロスコープで見ただけ)してみました。



74HC595(実際に使ったのはAHCだけどほぼ同じ)はシフトレジスタでRCK信号入力の信号の立ち上がりで出力が更新されるので、ソコにSPI通信で使うスレーブセレクト(SS)信号を入れました。
Arduinoのスケッチ自体は動画後半にあるので、Youtubeで動画を大きくして見ると読めると思います。

細かい説明等々は「HC595 Arduino」と検索すれば回路図とか詳しい説明は出てくると思うのでそちらを参考にしてください。
この作動は、LEDのカソード側をHC595に繋いだHC595の出力を「シンク」としてあります。LEDのアノード側は+5Vに繋がってます。

ArduinoのSPI通信は、SPI..tranferに送りたい8bitの数値を放り込むと始まります、が、スレーブセレクト信号は送信命令をしても動かないので、送信命令の前後にdigital.write命令で、操作しなければなりません。

動画では、そもそもスレーブセレクト信号をオシロスコープに入力してませんが、エッジが有るとしたら、画面の外側になります。。

また、上の動画はHC595を2つ使用して、データ線を直列に配線(ディジーチェーン)して16bit、としました。
ので、SPI.transfer1回で8bitの送信ですから、スレーブセレクトの操作の間に2回の送信命令があります。

オシロスコープの上の信号がデータ信号(MOSI)で、下の信号がクロック信号です。
解りやすく観察したかったので、LEDの点灯と、データ信号動きが同じように動いてます、が、オシロスコープの位置の方が1クロック信号分早いはず。。
また、HC595から出て、SPIマスターに戻る信号線(MISO)は1クロック信号分遅れているはずです。



電気は見えないので実際にこうやって観察してみるとよく解ります。


また、調子こいてこんな事も。。



単純にビットシフトとか、計算をしてデータを変更して作動させてます。
コレも、基本一番上の動画と同じでオシロスコープで観察すると、データ信号が同じように動いているはず。。


よくあるナイトライダー風の点灯パターンも割りと簡単に。。



また、SPI通信のテストとして、HC595を8つ、8bitX8で、64bitでの通信もしてみました。



コレも、HC595の出力はシンク接続として、7セグLEDのカソード側と出力を繫いであります。
この場は8bit単位でのシフトレジストをしているので、右から左へ1つずつ数字がズレていきます。

この状態で、点灯しているセグメントのデータは、その時送られているデータの一つ前の8bitで、現在送られてるデータは次の点灯パターンのデータです。
シフトレジスタの面白いところは、クロックに合わせてデータが入ってくると、次々と、データが移動してく所で、入り口から、クロックに合わせてデータを入れると、次々とデータが出ていきます。。


L6470等々、SPI通信で動くステッパドライバの設定や駆動コマンドの送信、各種センサのデータ取得や設定等々SPI通信が使われることが多いので試してみました。。






スポンサーサイト

テーマ : 自作・改造
ジャンル : コンピュータ

コメントの投稿

非公開コメント

ライセンス
アクセスカウンター
プロフィール

あきらひとし。

Author:あきらひとし。
木工用CNCルーターフレームと、ステッピングモータードライバを作ってみました。
たぶん記事は一般的な人には殆ど必要のない事ばかりなの、かも。

モーターは回るだけでも楽しい。制御(速度、トルク、位置)できるともっと楽しい!

メールフォーム

名前:
メール:
件名:
本文:

リンク
最新記事
カテゴリ
スポンサードリンク
スポンサードリンク 
スポンサードリンク
オンラインカウンター
現在の閲覧者数:
検索フォーム
RSSリンクの表示
最新トラックバック
最新コメント
月別アーカイブ