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.
During the long wait, 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 (DMA_TOUT) iterations it gives up and returns FALSE.
I'm using 4.74 of the library and uVision 5
Help please, I am totally baffled.
Thanks, David