2415955_ja-JP

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

2415955_ja-JP

2415955_ja-JP

MCXN947 DLLの自動調整機能が動作しません

こんにちは、

私はFlexSPI経由でMCXN947とOctalRAM(IS66WVO32M8DALL-200BLI)を使用しています。
FlexSPIのルートクロックはPLL1を介して150MHzで供給され、RAMはDDRモードで動作するため、出力クロックレートは75MHzになります。
`flexspi_device_config_t`には以下のパラメータがあります。

flexspi_device_config_t psram_config =
{
    .flexspiRootClk = 150000000U,
    .isSck2Enabled = false,
    .flashSize = OCTALRAM_ISSI_SIZE,
    .CSIntervalUnit = kFLEXSPI_CsIntervalUnit1SckCycle,
    .CSInterval = 2,
    .CSHoldTime = 2,
    .CSSetupTime = 2,
    .dataValidTime = 2,
	.columnspace = 4,
    .enableWordAddress = false,
    .AWRSeqIndex = HYPERRAM_CMD_LUT_SEQ_IDX_WRITEDATA,
    .AWRSeqNumber = 1,
    .ARDSeqIndex = HYPERRAM_CMD_LUT_SEQ_IDX_READDATA,
    .ARDSeqNumber = 1,
    .AHBWriteWaitUnit = kFLEXSPI_AhbWriteWaitUnit2AhbCycle,
    .AHBWriteWaitInterval = 0,
    .enableWriteMask = true,
};

FlexSpiの初期化には、SDK FLEXSPI_DRIVERバージョン2.6.0を使用しています。
自動調整機能(マニュアル10.3.15.6節「サンプリングのためのDLL構成」)でディレイセルを以下の値で設定すると、
• SLVDLYTARGET=0x0F(分算器16/32 * root_clock = 3.33 ns)
• REFPHASEGAP=0x02
• DLLEN=0x01
• OVRDEN=0x01

ASLVLOCKとAREFLOCKのロックビットを待った後、ASLVSELには0x01、AREFSELには0x00が返されました。その結果、設定された遅延時間が約120psであるため、RAMの読み書き機能は動作しません。

    /* Configure DLL. */
    configValue        = FLEXSPI_CalculateDll(base, config);
    base->DLLCR[index] = configValue;

    /* DLL neu kalibrieren */
    base->DLLCR[0] |= FLEXSPI_DLLCR_DLLRESET_MASK;
    base->DLLCR[0] &= ~FLEXSPI_DLLCR_DLLRESET_MASK;

    /* Exit stop mode. */
    base->MCR0 &= ~FLEXSPI_MCR0_MDIS_MASK;

    /* Lock abwarten */
    while ((base->STS2 &
           (FLEXSPI_STS2_AREFLOCK_MASK |
            FLEXSPI_STS2_ASLVLOCK_MASK)) !=
           (FLEXSPI_STS2_AREFLOCK_MASK |
            FLEXSPI_STS2_ASLVLOCK_MASK))
    {
    }

    SDK_DelayAtLeastUs(10U, CLOCK_GetCoreSysClkFreq());

MCXN947_DLL_register.jpg












SLVDLYTARGETに異なる値を使用しても、ASLVLOCKとAREFLOCKの出力は変わりません。
しかし、レジスタOVRDEN=0x01とOVRDVAL=0x1bを使用して遅延時間を固定値(約3.36ナノ秒の遅延時間に相当)に設定すると、RAMからの読み書きは問題なく動作します。

しかし、ルートクロックが100 MHzを超えるため、NXPはDLLの自動調整機能の使用を推奨しています。

残念ながら、正しい遅延時間を判断できないようです!


通信・制御(I3C |I2C |SPI |FlexCAN |イーサネット |FlexIO)コアとメモリMCX NRe: MCXN947 DLL auto-adjusted function not working

こんにちは、 @IbhDanielさん

投稿ありがとうございます!

MCXNx4リファレンスマニュアルによると、シリアルルートクロックはFlexSPIコアクロックであることが示されています(表79参照)。時計の使用状況)。あなたの場合、このクロックは150 MHzに設定されています。

また、DLLサンプリング構成を実装しており、自動キャリブレーションパスが正しいアプローチのようです。設定値SLVDLYTARGET = 0x0FおよびDLLEN = 0x01は正しく構成されています。唯一特定された問題は、OVRDENが0x00ではなく0x01であり、これにより自動キャリブレーション出力経路が無効化され、SLVDLYTARGET値に関係なくASLVSEL=0x01、AREFSEL=0x00となります。

carlos_o_0-1790368326908.png

上記の分析結果が貴社の実装にも当てはまるかどうか確認させてください。以下を確認してください:MCR0[RXCLKSRC] = 3h(フラッシュメモリ提供の読み取りストロボとDQSパッドからの入力)があなたの構成で使用されているか?



Re: MCXN947 DLL auto-adjusted function not working

こんにちは、カルロスさん。

ご返信ありがとうございます。
すみません、誤字で、OVRDENビットを0に設定しました。MCUレジスタのスクリーンショットを見ると、OVRDENが値0に設定されているのもわかります。

私はOctalRam IS66WVO32M8DALL-200BLIを使っています。もし理解が正しければ、このモジュールはDQS信号をMCUに送っているようです。

Re: MCXN947 DLL auto-adjusted function not working

再度確認したところ、MCUのMCR0[RXCLKSRC]ビットは3時間に設定されています。

Re: MCXN947 DLL auto-adjusted function not working

こんにちは、 @IbhDaniel さん。

あなたの構成でMCR0[RXCLKSRC] = 3h(DQSパッドからのフラッシュメモリ提供の読み取りストロボ入力)が使われているか確認していただけますか?

この点は重要です。なぜなら、自動調整・キャリブレーションはDQS信号が外部DQSパッドから送信される場合にのみサポートされるからです。RXCLKSRCの設定が異なると、自動遅延調整機構は期待どおりに動作しません。


标记 (1)
无评分
版本历史
最后更新:
12 小时之前
更新人: