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

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

19.4.4.3. マスターにおけるSPIシリアル転送およびSSPシリアル転送

「Motorola SPI Protocol」および「Texas Instruments Synchronous Serial Protocol (SSP)」において、SPIシリアルプロトコルとSSPシリアルプロトコルについてそれぞれ説明しています。†

転送モードが「送受信」 (TMOD = 0) もしくは「送信専用」 (TMOD = 1) の場合、送信FIFOバッファーが空になると、シフト制御ロジックは転送を終了します。継続的なデータ転送を実現するには、データがすべて送信される前に送信FIFOバッファーが空にならないことを保証する必要があります。Transmit FIFO Threshold Level (TXFTLR) を使用してプロセッサーに早期割り込み (Transmit FIFO Empty Interrupt) を行い、送信FIFOバッファーが空に近い状態であることを示すことができます。†

DMAをSPIマスターと組み合わせて使用している場合は、Transmit Data Level (DMATDLR) を使用してDMAコントローラーに早期に要求を行い、送信FIFOバッファーが空に近い状態であることを示すことができます。FIFOバッファーがデータで再度満たされることにより、シリアル転送を続行することができます。また、ユーザーは、シリアルスレーブを有効にする前に、データのブロック (少なくとも2つのFIFOバッファーエントリー) を送信FIFOバッファーに書き込むことができます。これにより、連続する転送を構成するデータフレームの数が送信FIFOバッファーに入るまで、シリアル送信が開始しないことを保証します。†

転送モードが「受信専用」 (TMOD = 2) の場合は、シリアルスレーブが選択されている際に、送信FIFOバッファーに1つの「ダミー」データワードを書き込むことでシリアル転送を開始します。SPIコントローラーからのtxd出力は、シリアル転送の間、一定の論理レベルに保持されます。送信FIFOバッファーは最初に1回だけポップされ、シリアル転送の間は空のままにすることができます。シリアル転送の終わりは、Control Register 1 (CTRLR1) の「Number of Data Frames」 (NDF) フィールドで制御されます。†

例えば、シリアルスレーブ・ペリフェラルから24のデータフレームを受信する場合は、NDFフィールドを値23でプログラミングする必要があります。受信ロジックは、受信したフレームの数がNDFの値に1を加えた数に等しくなるとシリアル転送を終了します。転送中に送信FIFOバッファーはサービスを必要としないため、この転送モードではシステムバスの帯域幅が向上します。受信FIFOバッファーでFIFO Full Interrupt要求が生成されるたびに受信FIFOバッファーを読み出し、オーバーフローを防ぐ必要があります。†

転送モードが「eeprom_read」 (TMOD = 3) の場合は、シリアルスレーブ (EEPROM) が選択されている際に、オペコードまたはアドレスを送信FIFOバッファーに書き込むことにより、シリアル転送を開始します。オペコードとアドレスは、EEPROMデバイスに送信されます。その後、読み出しデータをEEPROMデバイスから受信し、受信FIFOバッファーに格納します。シリアル転送の終わりは、Control Register 1 (CTRLR1) のNDFフィールドで制御されます。†

注: SPIコントローラーがSSPモードにコンフィグレーションされている場合は、EEPROM読み出しモードはサポートされません。†

Receive FIFO Threshold Level (RXF TLR) を使用し、受信FIFOバッファーがフルに近い状態であることを早期に示すことができます。DMAを使用している場合は、Receive Data Level (DMARDLR) を使用してDMAコントローラーに早期に要求を行い、受信FIFOバッファーがフルに近い状態であることを示すことができます。†