Description
Source
Call Graph
Start Line: 339
int main()
{
unsigned int i;
unsigned int page;
unsigned char testFailed;
const At45Desc *pDesc;
// Configure pins
PIO_Configure(pins, PIO_LISTSIZE(pins));
// Configure traces
TRACE_CONFIGURE(DBGU_STANDARD, 115200, BOARD_MCK);
printf("-- Basic Dataflash Project %s --\n\r", SOFTPACK_VERSION);
printf("-- %s\n\r", BOARD_NAME);
printf("-- Compiled: %s %s --\n\r", __DATE__, __TIME__);
// SPI and At45 driver initialization
TRACE_INFO("Initializing the SPI and AT45 drivers\n\r");
AIC_ConfigureIT(BOARD_AT45_A_SPI_ID, 0, ISR_Spi);
SPID_Configure(&spid, BOARD_AT45_A_SPI_BASE, BOARD_AT45_A_SPI_ID);
SPID_ConfigureCS(&spid, BOARD_AT45_A_NPCS, AT45_CSR(BOARD_MCK, SPCK));
AT45_Configure(&at45, &spid, BOARD_AT45_A_NPCS);
TRACE_INFO("At45 enabled\n\r");
AIC_EnableIT(BOARD_AT45_A_SPI_ID);
TRACE_INFO("SPI interrupt enabled\n\r");
// Identify the At45 device
TRACE_INFO("Waiting for a dataflash to be connected ...\n\r");
pDesc = 0;
while (!pDesc) {
pDesc = AT45_FindDevice(&at45, AT45_GetStatus(&at45));
}
TRACE_INFO("%s detected\n\r", at45.pDesc->name);
// Output JEDEC identifier of device
TRACE_INFO("Device identifier: 0x%08X\n\r", AT45_GetJedecId(&at45));
// Test all pages
testFailed = 0;
page = 0;
while (!testFailed && (page < AT45_PageNumber(&at45))) {
TRACE_INFO("Test in progress on page: %6u\r", page);
// Erase page
AT45_Erase(&at45, page * AT45_PageSize(&at45));
// Verify that page has been erased correctly
memset(pBuffer, 0, AT45_PageSize(&at45));
AT45_Read(&at45, pBuffer, AT45_PageSize(&at45), page * AT45_PageSize(&at45));
for (i=0; i < AT45_PageSize(&at45); i++) {
if (pBuffer[i] != 0xff) {
TRACE_ERROR("Could not erase page %u\n\r", page);
testFailed = 1;
break;
}
}
// Write page
for (i=0; i < AT45_PageSize(&at45); i++) {
pBuffer[i] = i & 0xFF;
}
AT45_Write(&at45, pBuffer, AT45_PageSize(&at45), page * AT45_PageSize(&at45));
// Check that data has been written correctly
memset(pBuffer, 0, AT45_PageSize(&at45));
AT45_Read(&at45, pBuffer, AT45_PageSize(&at45), page * AT45_PageSize(&at45));
for (i=0; i < AT45_PageSize(&at45); i++) {
if (pBuffer[i] != (i & 0xFF)) {
TRACE_ERROR("Could not write page %u\n\r", page);
testFailed = 1;
break;
}
}
page++;
}
// Display test result
if (testFailed) {
TRACE_ERROR("Test failed.\n\r");
}
else {
TRACE_INFO("Test passed.\n\r");
}
return 0;
}