AnsweredAssumed Answered

FlexSPI (RT1015) Voltage and Clock Levels

Question asked by variable_andrew on Aug 28, 2019
Latest reply on Sep 5, 2019 by Kerry Zhou

I have the FlexSPI able to erase, read, write, read successfully on power up - but on subsequent runs (without re-powering the board), erase doesn't seem to erase the FLASH. 

After failing to erase, if i cycle power - erase works. 

Sending a RESET command to the FLASH part doesn't fix this phenomenon. 

 

 

I've noticed a few things on the scope: 

1. My SCK frequency is around 1.78MHz instead of the expected 104MHz. Could someone provide guidance on properly setting SCK frequency?

2. The SCK level ranges from 0V to 1.68V - almost like the IOs are on a 1.8V pad, but I don't see anywhere that you can specifically set 1.8V vs 3.3 V on the IOMUX CTL bits, is this something configurable? How would I get this to 3.3V?

 

 

 

My code is based off of flexspi_nor_polling_transfer. I'm currently configuring clock (I thought) with:

flexspi_device_config_t deviceconfig = {

    .flexspiRootClk       = 104000000, // 104 MHz

    .flashSize            = FLASH_SIZE,

    .CSIntervalUnit       = kFLEXSPI_CsIntervalUnit1SckCycle,

    .CSInterval           = 11,     //100ns -> 9.61ns @ 104Mhz ,

    .CSHoldTime           = 2,   //see RM fig 24-26: hold CS after last data read: (5 active + 5inactive)

    .CSSetupTime          = 2,  //see RM fig 24-26: CS asserted before data read: (4.6 active + 5 inactive?)

    .dataValidTime        = 0,

....

 

};

 

and I'm not using XIP, so in app.h from the : 

app.h

 

BOARD_BootClockRUN() is also untouched (with XIP set to 0). 

BOARD_InitPins is the default except for IOMUXC_GPIO_SD_B1_05_FLEXSPI_A_DQS, which is used in internal loopback mode. 

Outcomes