I'm building some code to read the SD Card on an MCB2300. I'm using the RL-FlashFS library.
I have configured CCLK to 48MHZ and PCLK_MCI to CCLK, and changed the #defines in MCI_LPC23xx.c to read:
#define __MCLK 48000000 #define __CPUCLK 48000000
My code to initialise the card reads:
uint32_t retv = finit(NULL);
The SD LED on the MCB2300 board comes on when the call is made and then there's a *long* pause and eventually the function returns a value of 2.
I'm using 4.74 of the library and uVision 5
Help please, I am totally baffled.
Thanks, David
The code is busy waiting in the ReadBlock function in source file MCI_LPC23xx.c:
static BOOL ReadBlock (U32 bl, U8 *buf, U32 cnt) { /* Read one or more 512 byte blocks from Flash Card. */ U32 i; /* Set MCI Transfer registers. */ MCI_DATA_TMR = DATA_RD_TOUT_VALUE; MCI_DATA_LEN = cnt * 512; /* Start DMA Peripheral to Memory transfer. */ DmaStart (DMA_READ, buf); MCI_DATA_CTRL = 0x9B; for (i = DMA_TOUT; i; i--) { if (GPDMA_RAW_INT_TCSTAT & 0x01) { /* Data transfer finished. */ return (__TRUE); } } /* DMA Transfer timeout. */ return (__FALSE); }
After 10M iterations it gives up and returns FALSE.
Surely I'm not the first to hit this issue?
D.