こちらの記事について、内容・翻訳・視点・長さなど、皆様のご意見をお送りください。今後の記事製作の参考にしたいと思います。
Thank you! Your feedback has been received.
There was a problem submitting your feedback, please try again later.
こちらの記事の感想をお聞かせください。
SPI通信のデバッグ
組込み開発でマイコンでペリフェラル制御を行おうとするとSPI通信の中身をみたい時がある。ポータブル計測器「Analog Discovery 2(134-6480)」なら、回路上の様々な混合信号を計測することはもちろん、視覚化、生成、記録、制御が可能だ。またアナログだけではなく、デジタル用の16チャンネル入出力があり、PCソフトの Digilent Waveformsを介してロジックアナライザーとして使うことができる。今回、このロジアナ機能を使い、SPI通信のプロトコルデバッグに活用してみる。
その方法を示すサンプルプロジェクトがある。 プロジェクトでは、Digilent Pmod MIC3(master)とDigilent Basys 3(slave)を使用してSPI通信する回路を作成する。 ハードウェアが正しくセットアップされた後。 Analog Discovery 2を使用してSPI通信をデバッグしてみよう。
たとえば、ロジックアナライザーでCS、SCK、MOSI、MISO、SCKおよびSPIプロトコルを含む個々の信号を同時に作成して、通信の各信号を確認できる。
SPIプロトコルの追加
デジタル信号を追加
波形でロジックアナライザーを使用して、SPI通信を視覚化できる。
ロジックアナライザーのタイミング図
このプロジェクトの詳細なチュートリアルは、Digilent Project Pageで入手できる。
そもそもSPI通信とは
Serial Peripheral Interface (SPI)は、主に組み込みシステムで短距離通信に使用される二重同期シリアル通信インターフェース仕様だ。通常、フラッシュメモリ、センサー、リアルタイムクロック(RTC)、A / Dコンバーターなどとの通信に使用される。 SPIは複数のslaveデバイスを持つこともサポートできるが、追加のslave選択(SS)信号を追加する必要がある。 Digilent learn materialsにて,さらに詳しくSPIがどのように機能するかを知ることができる。
SPI通信プロトコルは、電源ピンと接地ピンに加えて4つの通信ピンを使用する。一般に、互いに通信する「master」デバイスと「slave」デバイスがある。 「master」は、slave select(SS)通信ラインを使用して「slave」の1つを選択し、通信することを「slave」に示す。masterとslaveは、MOSI(master出力slave入力)およびMISO(master入力slave出力)データラインで同時に通信する。masterとslaveは両方とも、実際のデータが送信される前に1ビットを互いに送信して、SPIが機能することを確認する。データは、最上位ビット(MSB)または最下位ビット(LSB)から送信できる。
通信を開始するには、masterデバイスはチップセレクト(CS)ラインを低電圧状態にし、通信セッション全体を通してその低電圧状態を維持する必要がある。masterデバイスとslaveデバイスの両方がビットを互いに送信して、SPI通信を機能させる。その後、2つのデバイス間で一度に1ビットずつデータを同時に転送できる。マイクロコントローラプラットフォームは、データ転送のタイミングを制御する。
通常、SPIプロトコルは、シリアルクロック(SCK)信号の立ち下がりエッジで1ビットのデータを転送する。データは、シリアルクロック(SCK)の立ち下がりエッジの前にデータラインに配置する必要がある。シリアルクロック(SCK)ラインも、低電圧状態に「立ち下がる」前に(つまり、立ち下がりエッジの前に)高電圧状態でなければならない。これは、クロック信号を低電圧状態にする前に、データラインの電圧状態を変更することにより、マイクロコントローラーで実行できる。
データラインのビット値(電圧)を変更し、シリアルクロック(SCK)ラインにパルスを送るサイクルは、必要なすべてのビットが転送されるまで続く。チップセレクト(CS)ラインは高電圧状態になる。次に、マイクロコントローラは通信が完了したことを認識し、別のセッションの準備をする。
SPI通信のタイミング図を以下に示す。
SPI time diagram from Digilent learn materials