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

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

16.5.10.2. カードの読み出ししきい値のプログラミング・シーケンス

SDHCやSDXCなどのほとんどのカードは、カードで指定されているブロックサイズ、もしくは512バイトの固定ブロックサイズをサポートします。SDIO、MMC、および部分的なブロック読み出しをサポートする標準容量SDカード (カードデバイスのCSDレジスターでREAD_BL_PARTIALが1に設定されている) の場合、ブロックサイズは変更可能であり、アプリケーションで選択することができます。

カードの読み出ししきい値の機能を効果的に使用し、カードからのデータブロック読み出しの途中でFIFOがフルの状態になりカードクロックが停止しないようにするには、次の手順に従います。

  1. 4バイトの倍数でブロックサイズを選択します。
  2. カードの読み出ししきい値の機能を有効にします。カードの読み出ししきい値は、該当する転送のブロックサイズがFIFOバッファーの合計深度以下である場合にのみ有効にすることができます。

    (ブロックサイズ / 4) ≤ 1024

  3. カードの読み出ししきい値の値を選択します。
    • (ブロックサイズ / 4) ≥ 512の場合、cardrdthresholdは次のように選択します。
      • cardrdthreshold ≤ バイト単位の (ブロックサイズ / 4)
    • (ブロックサイズ / 4) < 512の場合、cardrdthresholdは次のように選択します。
      • cardrdthreshold = バイト単位の (ブロックサイズ / 4)
  4. fifothレジスターのdw_dma_multiple_transaction_sizeフィールドを、1つのDMAトランザクションを構成する転送数に設定します。例えば、サイズが1の場合は4バイトを移動することを意味します。サイズに使用可能な値は、1、4、8、16、32、64、128、または256転送です。サイズは、値 (ブロックサイズ / 4) が均等に分割されるように選択します。
  5. fifothレジスターのrx_wmarkフィールドを、サイズから1を引いた値に設定します。

例えば、使用するブロックサイズが512バイトの場合は、dw_dma_multiple_transaction_sizeおよびrx_wmarkの有効な値は次の表のとおりです。

表 163.  ブロックサイズ = 512の場合におけるdw_dma_multiple_transaction_sizeとrx_wmarkの有効値
ブロックサイズ dw_dma_multiple_transaction_size rx_wmark

512

1

0

512

4

3

512

8

7

512

16

15

512

32

31

512

64

63

512

128

127