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

ID 683567
日付 1/25/2020
Public

このドキュメントの新しいバージョンが利用できます。お客様は次のことを行ってください。 こちらをクリック 最新バージョンに移行する。

ドキュメント目次

16.5.2.3.1. カードのクロック周波数の変更

カードのクロック周波数を変更するには、次の手順を実行します。
  1. クロックを無効にする前に、それまでのデータコマンドによってカードがビジー状態ではないことを確認します。これを行うには、ステータスレジスター (status) のdata_busyビットが0であることを確認します。
  2. clkenaレジスターのcclk_enableビットを0にリセットし、 カードクロックの生成を無効にします。
  3. clksrcレジスターを0にリセットします。
  4. cmdレジスターの次のビットを1に設定します。
    • update_clk_regs_only—クロック更新コマンドを指定します
    • wait_prvdata_complete—進行中のデータ転送が完了するまでクロック・パラメーターが変更されないようにします
    • start_cmd—コマンドを開始します
  5. start_cmdビットおよびupdate_clk_regs_onlyビットが0になるまで待機します。クロックの変更が完了しても、割り込みは発生しません。コマンドの完了時に、コントローラーはrintstsレジスターのcommand_doneビットを設定しません。別のコマンドがすでにキューにある場合、コントローラーはハードウェア・ロック・エラーを通知することがあります。この場合は、ステップ4に戻ります。

    ハードウェア・ロック・エラーについては、「割り込みとエラーの処理」の章を参照してください。

  6. クロック・マネージャーのペリフェラルPLLグループ (perpllgrp) のenableレジスターで、sdmmc_clk_enableビットを0にリセットします。
  7. システム・マネージャーのSDMMCコントローラー・グループ (sdmmcgrp) のControlレジスター (ctrl) で、drive clock phase shift select (drvsel) ビットおよびsample clock phase shift select (smplsel) ビットを設定し、必要な位相シフトの値を指定します。
  8. クロック・マネージャーのperpllgrpグループのEnableレジスターで、sdmmc_clk_enableビットを1に設定します。
  9. コントローラーのclkdivレジスターを、必要なクロック周波数に対して適切な分周器の値に設定します。
  10. clkenaレジスターのcclk_enableビットを1に設定し、カードクロックの生成を有効にします。

    また、clkenaレジスターを使用し、低電力モードを有効にすることができます。このモードでは、カードが8クロックサイクルを超えてアイドル状態の場合に、sdmmc_cclk_outクロックを自動的に停止します。