AnsweredAssumed Answered

Access time of K10 SPI is too long,WHY?

Question asked by zeyong yang on Apr 5, 2018
Latest reply on Apr 16, 2018 by zeyong yang

I use k10 to access SPI Flash(SST26VF064B). Data write and read is correct

BUT: interval time between multi-Byte transfer is too Long, so the performace of spi is very low

WHY??

SPI-CLK is  24.576Mhz, one byte transfering takes 300ns. but interval time between multi-Byte transfer is 2us.

 

 

I use PE, enable spi interrupt to control transfering,  

The code is blow:

 

unsigned int SST26_ReadID(void) // send cmd to get flash ID
{
       unsigned char cmd[4]; //1-Byte cmd and  3-Byte dummy characters
       unsigned char data[4];

       memset(cmd,0x0,4); 

       cmd[0]=0x9F; //JEDEC-ID Read Command
       SPI_ReceiveBlock(SPI_Ptr,data,4);

       SPI_SendBlock(SPI_Ptr,cmd,4);

      while(1)
      {
           if(flag_OnBlockReceived==TRUE)
          {
              flag_OnBlockReceived=FALSE;
             break;
          }
     }
     return ((data[1]<<16)|(data[2]<<8)|(data[3]));
}

 

/*
** ===================================================================
** Event : SPI_OnBlockReceived (module Events)
**
** Component : SPI [SPIMaster_LDD]
*/
/*!
** @brief
** This event is called when the requested number of data is
** moved to the input buffer. This method is available only if
** the ReceiveBlock method is enabled.
** @param
** UserDataPtr - Pointer to the user or
** RTOS specific data. The pointer is passed
** as the parameter of Init method.
*/
/* ===================================================================*/
void SPI_OnBlockReceived(LDD_TUserData *UserDataPtr)
{
     /* Write your code here ... */
     flag_OnBlockReceived=TRUE;
}

 

 

Thanks...

Outcomes