インテル® Agilex™ ハード・プロセッサー・システムのテクニカル・リファレンス・マニュアル

ID 683567
日付 1/19/2023
Public
ドキュメント目次

19.4.5. SPIスレーブ

SPIスレーブは、シリアル・マスター・ペリフェラル・デバイスによって開始および制御される転送でシリアル通信を処理します。

  • sclk_in - SPIスレーブへのシリアルクロック †
  • ss_in_n - SPIスレーブへのスレーブ選択入力 †
  • ss_oe_n - SPIマスターまたはスレーブの出力イネーブル †
  • txd - SPIマスターまたはスレーブの送信データライン †
  • rxd - SPIマスターまたはスレーブの受信データライン †

SPIシリアルスレーブが選択されると、そのスレーブのtxdデータがシリアルバスに向けて有効になります。シリアルスレーブとの間のデータ転送はすべて、SPIマスターデバイスから駆動されるシリアル・クロック・ライン (sclk_in) で制御されます。データは、シリアル・クロック・ラインの一方のエッジでシリアルスレーブから伝播され、反対側のエッジでサンプリングされます。†

選択されていないSPIシリアルスレーブは、シリアルマスターと他のシリアルスレーブ・デバイス間のデータ転送に干渉しないようにする必要があります。選択されていない際に、そのシリアルスレーブのtxd出力はバッファーされるため、SPIマスターのrxdラインでハイ・インピーダンス駆動が起こります。SPIスレーブの図に示されているバッファーは、SPIコントローラーの外部にあります。spi_oe_nは、SPIスレーブ出力イネーブル信号です。†

データ転送を制御するシリアルクロックは、シリアルマスター・デバイスによって生成され、sclk_inでSPIスレーブに入ります。スレーブは、バスマスターによって選択されるまでアイドル状態で維持されます。データをアクティブに送信していない場合に、スレーブでは、所有するtxdラインをハイ・インピーダンス状態で保持し、他のスレーブデバイスへのシリアル転送に干渉しないようにする必要があります。SPIスレーブ出力イネーブル (ss_oe_n) 信号は、txd出力バッファーの制御に使用することが可能です。スレーブは、選択されている限りマスターデバイスとの間でデータの転送を継続します。マスターがすべてのシリアルスレーブに送信する場合は、SPI Control Register 0 (CTRLR0) の制御ビット (SLV_OE) をプログラミングし、txdラインからデータで応答する必要があるかをスレーブに通知することができます。†

図 86. SPIスレーブ

コントロール・レジスターのslv_oeビットは、SPIスレーブ・インターフェイスがFPGAにルーティングされている場合にのみ有効です。マルチ・マスター・システム、もしくはSPIスレーブのTXDをトライステートにする必要があるシステムでSPIスレーブを使用するには、次の内容に従います。

  • SPIスレーブでTXDのトライステートを制御する場合は、FPGAにまずルーティングし、FPGA IOを使用する必要があります。
  • FPGAにルーティングしない場合は、すでに含まれているコードを使用してHPS GPIO入力を介して制御し、TXD (トライステート) のソフトウェア制御を実行する必要があります。ピン接続ガイドラインを参照し、対応するGPIOピンとHPSのSPIスレーブSSポートの組み合わせを確認してください。