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

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

19.5.3. スレーブにおけるSPIおよびSSPシリアル転送

図 95. スレーブにおけるSPIまたはSSPシリアル転送でのソフトウェア・フロー

シリアルマスターからSPIスレーブへの連続シリアル転送を完了するには、次の手順に従います。

  1. SPIスレーブが有効になっている場合は、SPIENRに0を書き込み、無効にします。
  2. 転送に対してSPIコントロール・レジスターをセットアップします。これらのレジスターは任意の順序で設定することが可能です。
    • CTRLR0に書き込みます (SPI転送では、SCPHおよびSCPOLをマスターデバイスと同じように設定します)。
    • TXFTLRおよびRXFTLRに書き込み、FIFOバッファーのしきい値レベルを設定します。
    • IMRレジスターに書き込み、割り込みマスクを設定します。
  3. SPIENRレジスターに1を書き込み、SPIスレーブを有効にします。
  4. 転送モードが送受信 (TMOD= 0)、または送信専用 (TMOD= 1) の場合は、マスターに送信するデータを送信FIFOバッファーに書き込みます (DRに書き込む)。転送モードが受信専用 (TMOD= 2) の場合は、送信FIFOバッファーにデータを書き込む必要はありません。送信シフトレジスターの現在の値が再度送信されます。
  5. この段階で、シリアル転送に対するSPIスレーブの準備は整っています。シリアルマスター・デバイスがSPIスレーブを選択すると、転送は開始します。
  6. 転送の進行中に、BUSYステータスをポーリングして転送ステータスを返すことができます。Transmit FIFO Empty Interrupt要求が行われた場合は、送信FIFOバッファーに書き込みを行います (DRに書き込む)。Receive FIFO Full Interrupt要求が行われた場合は、受信FIFOバッファーを読み出します (DRを読み出す)。
  7. 転送は、シリアルマスターがSPIスレーブに対する選択入力を解除すると終了します。転送が完了すると、BUSYステータスは0にリセットされます。
  8. 転送モードが送信専用ではない場合 (TMOD != 1) は、受信FIFOバッファーが空になるまで読み出しを行います。
  9. SPIENRに0を書き込み、SPIスレーブを無効にします。