qspi flash configuration structure - i.MXRT1060 - MT25Q

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

qspi flash configuration structure - i.MXRT1060 - MT25Q

253件の閲覧回数
Luke1982
Contributor II

Hi,

I have a big problem. I'm trying to configure the flexspi_nor_config_t qspiflash_config, using the  i.MXRT1060, with a Serial Nor Flash : MT25QL512ABB1EW9.

I need to work in DDR an QSPI mode..

After an hard research, I found a lot of information but not always clear. I found, i.e. this post:

https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/i-MX8DXL-FlexSPI-configuration-parameter...

Different uP, but same flash.

I compile the structure in this way : 

const flexspi_nor_config_t qspiflash_config = {
    .memConfig =
        {
            .tag              = FLEXSPI_CFG_BLK_TAG,
            .version          = FLEXSPI_CFG_BLK_VERSION,
            .readSampleClkSrc = kFlexSPIReadSampleClk_LoopbackInternally, // Necessary!!!!
            .csHoldTime       = 3u,
            .csSetupTime      = 3u,
            .sflashPadType    = kSerialFlash_4Pads,
            .serialClkFreq    = kFlexSpiSerialClk_30MHz, // max 80
            .sflashA1Size     = 64u * 1024u * 1024u,
            .deviceModeCfgEnable = 1, //Necessary
           .deviceModeSeq.seqNum = 1,
            .deviceModeSeq.seqId = 4,
            .deviceModeArg= 0x5F,
            .controllerMiscOption= 0x40,
           
            //.lutCustomSeqEnable = 1, //To evaluate
            .deviceModeType = kDeviceConfigCmdType_QuadEnable,
            .lookupTable =

                    //0xEBh instruction code for FAST READ QUAD I/O
                    //0xA0h Dummy cycle for Fast Read Quad I/O
                    //Model MT25QL512ABB1EW9-0SIT
                    //FLEXSPI_LUT_SEQ(CMD_SDR,FLEXSPI_1PAD,0x06, 0, 0, 0 ), //WR enable
               
                    // Read LUTs
                   
                    [4*CMD_LUT_SEQ_IDX_READ]     = FLEXSPI_LUT_SEQ(CMD_DDR,   FLEXSPI_4PAD, 0xED, RADDR_DDR, FLEXSPI_4PAD, 0x18),
                    [4*CMD_LUT_SEQ_IDX_READ +1]  = FLEXSPI_LUT_SEQ(DUMMY_DDR,   FLEXSPI_4PAD, 0x10, READ_DDR, FLEXSPI_4PAD, 0x04),
                    //[4*CMD_LUT_SEQ_IDX_READ +2] = FLEXSPI_LUT_SEQ(STOP,FLEXSPI_4PAD, 0x00, 0, 0, 0),
                    // The MODE8_DDR subsequence costs 2 cycles that is part of the whole dummy cycles
                    //[4*CMD_LUT_SEQ_IDX_READ + 1] = FLEXSPI_LUT_SEQ(MODE8_DDR, FLEXSPI_4PAD, 0x00, DUMMY_DDR, FLEXSPI_4PAD, 8-2),
                   // [4*CMD_LUT_SEQ_IDX_READ + 2] = FLEXSPI_LUT_SEQ(READ_DDR,  FLEXSPI_4PAD, 0x04, STOP,      FLEXSPI_1PAD, 0x00),
                   
                    // READ STATUS REGISTER
                    [4*CMD_LUT_SEQ_IDX_READSTATUS]   = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x05, READ_SDR,  FLEXSPI_1PAD, 0x04),
                    [4*CMD_LUT_SEQ_IDX_READSTATUS + 1] = FLEXSPI_LUT_SEQ(STOP, FLEXSPI_1PAD, 0x00, 0, 0, 0),
                   
                    // WRTIE ENABLE
                    [4*CMD_LUT_SEQ_IDX_WRITEENABLE] = FLEXSPI_LUT_SEQ(CMD_SDR,FLEXSPI_1PAD, 0x06, STOP, FLEXSPI_1PAD, 0x00),

                    // Set Read register
                    //[4*CMD_LUT_SEQ_IDX_SET_READ_PARAM]      = FLEXSPI_LUT_SEQ(CMD_SDR,FLEXSPI_1PAD, 0x63, WRITE_SDR, FLEXSPI_1PAD, 0x01),
                    //[4*CMD_LUT_SEQ_IDX_SET_READ_PARAM + 1] = FLEXSPI_LUT_SEQ(STOP,FLEXSPI_1PAD, 0x00, 0, 0, 0),

                    //WRITE REGISTER
                    [4*NOR_CMD_INDEX_PAGEPROGRAM]   = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x61 , WRITE_SDR,  FLEXSPI_1PAD, 0x01),
                    [4*NOR_CMD_INDEX_PAGEPROGRAM + 1] = FLEXSPI_LUT_SEQ(STOP, FLEXSPI_1PAD, 0x00, 0, 0, 0),

                },
        },
       .serialNorType = 1u,  //To evaluate
       //Refer datasheet pag.19 memory map MT25QL512ABB1EW9-0SIT
    .pageSize           = 256u,
    .sectorSize         = 4u * 1024u,
    .blockSize          = 64u * 1024u,
    .isUniformBlockSize = false,
};
 
But it does not work.. if I remove 
 .deviceModeSeq.seqNum = 1,
 .deviceModeSeq.seqId = 4,
It works, but in dual mode and STR.
 
Datasheet says I have to enable DDR mode and QSPI mode, but something is not working..
 
What Am I wrong? 
 
Thank you
 
0 件の賞賛
返信
1 返信

211件の閲覧回数
EdwinHz
NXP TechSupport
NXP TechSupport

Hi @Luke1982,

I strongly recommend you try using Secure Provisioning Tool instead, as the proper configuration can be done much more easily on the "Boot Memory Configuration" window:

EdwinHz_0-1751302188185.png

BR,
Edwin.

0 件の賞賛
返信