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

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

19.5.2. マスターにおけるMicrowireシリアル転送

図 94. Microwireシリアル

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

  1. SPIマスターが有効になっている場合は、SPIENRに0を書き込み、無効にします。
  2. 転送に対してSPIコントロール・レジスターをセットアップします。これらのレジスターは任意の順序で設定することが可能です。
    • CTRLR0に書き込み、転送のパラメーターを設定します。転送がシーケンシャルで、SPIマスターがデータを受信する場合は、転送におけるフレーム数から1を引いた値をCTRLR1に書き込みます。例えば、4つのデータフレームを受信する場合は、このレジスターに3を書き込みます。
    • BAUDRに書き込み、転送のボーレートを設定します。
    • TXFTLRおよびRXFTLRに書き込み、FIFOバッファーのしきい値レベルを設定します。
    • IMRレジスターに書き込み、割り込みマスクを設定します。

    SERレジスターを書き込み、選択するターゲットスレーブを有効にすることができます。ここでスレーブが有効になっている場合は、送信FIFOバッファーに有効なデータエントリーが1つ提供されると、転送はすぐに開始します。DRレジスターに書き込みを行う前にスレーブが有効になっていない場合は、スレーブが有効になるまで転送は開始されません。

  3. SPIENRレジスターに1を書き込み、SPIマスターを有効にします。
  4. SPIマスターがデータを送信する場合は、制御およびデータワードを送信FIFOバッファーに書き込みます (DRに書き込む)。SPIマスターがデータを受信する場合は、制御ワードを送信FIFOバッファーに書き込みます。この時点においてSERレジスターでスレーブが有効になっていない場合は、スレーブを有効にすることで転送を開始します。
  5. BUSYステータスをポーリングし、転送の完了を待機します。Transmit FIFO Empty Interrupt要求が行われた場合は、送信FIFOバッファーに書き込みを行います (DRに書き込む)。Receive FIFO Full Interrupt要求が行われた場合は、受信FIFOバッファーを読み出します (DRを読み出す)。
  6. 送信FIFOバッファーが空になると、シフト制御ロジックは転送を停止します。転送モードがシーケンシャルで、SPIマスターがデータを受信する場合は、指定されているフレーム数が受信されると、シフト制御ロジックは転送を停止します。転送が完了すると、BUSYステータスは0にリセットされます。
  7. SPIマスターがデータを受信する場合は、受信FIFOバッファーが空になるまで読み出しを行います。
  8. SPIENRに0を書き込み、SPIマスターを無効にします。