2021/03/27(土)LPC55xx I2S : FIFO buffer configurations and usage

参照: NXP LPC55S1x RM R1.3, 37.8.4項 *1

FIFO buffer configurations and usage

Flexcomm Interfaceは、処理されるデータのサイズに応じて、いくつかのデータパック/アンパックの実現性をサポートしています。
FIFOの使用方法の詳細は、I2S Configuration register 1(CFG1)レジスタのDATALENフィールドの値と、その他のコンフィギュレーションビットによって決定されます。

DATALENに4~16のデータビット数を指定した場合

  • FIFOは幅32ビット、深さ8エントリで構成されます。
  • バスとFIFO間の各データ転送は、32ビットワードに収まる左右の値のペアになります。左と右のデータの順序は、RIGHTLOWコンフィギュレーションビットで選択できます。
  • ONECHANNEL = 1でチャネルペアを構成した場合、転送されるのは1つの値のみで、公称では左の値となります。

DATALENに17~24のデータビット数を指定した場合

  • この場合、FIFOは幅48ビット、深さ8エントリで構成されます。
  • バスとFIFO間のデータ転送は、PACK48コンフィギュレーションビットおよびDMAが有効かどうかによって異なります。
    • DMAが有効な場合、すべての転送はFIFOWRまたはFIFORDで行われます。DMAが有効でない場合は、I2S機能で選択されたデータ方向に応じて、FIFOWRまたはFIFORDとFIFOWR48HまたはFIFORD48Hで交互に転送されます。
    • いずれの場合も、2回の転送で左右の値のペアが構成されます。左と右のデータの順序は、RIGHTLOWコンフィギュレーションビットで選択できます。
  • PACK48 = 0の場合、2つの転送はいずれも17~24ビットのデータを定義します。PACK48 = 1の場合、最初の転送では32ビットのデータが提供され、2回目の転送では定義されたペアデータを完成させるために必要な残りのデータが提供されます。
  • チャネルペアがONECHANNEL = 1で構成されている場合は、FIFOWRまたはFIFORDレジスタを使用して左の値のみが転送されます。

DATALENに25~32のデータビット数を指定した場合

  • この場合、FIFOは幅32ビット、深さ8エントリで構成されます。
  • バスとFIFOの間の各データ転送は、左から右の順に1つの値となります。
  • ONECHANNEL = 1でチャネルペアを構成した場合は、1つの値のみが転送されます。

*1 : この記事は筆者が私的利用のためにReference Manualを抜粋、翻訳したものです。いかなる問題に対しても責任は負いません。