#include <system.h>
#include "serial.h"
#include "compactflash.h"
#pragma CLOCK_FREQ 20000000
void main()
{
char i;
serialInit(129);
compactFlashInit();
while(1)
{
// Wait for card
if(!(compactFlashPresent()))
{
serialSendString("Waiting for Card...\13\10");
while(!(compactFlashPresent()));
}
// Reset card
compactFlashReset();
// Drive Diagnostic
serialSendString("Diagnosing Drive...\13\10");
switch(compactFlashDiagnostic())
{
case 0x01:
serialSendString("No");
break;
case 0x02:
serialSendString("Formatter");
break;
case 0x03:
serialSendString("Sector");
break;
case 0x04:
serialSendString("Circuitry");
break;
case 0x05:
serialSendString("Controlling Microprocessor");
break;
case 0x80:
serialSendString("Slave");
break;
}
// Drive Identify
serialSendString(" Error\13\10Identifing Drive...\13\10Buffersize: ");
compactFlashClearBuffer();
compactFlashIdentify();
compactFlashReadBuffer(44, 2);
serialSendHex(compactFlashBuffer[0]);
serialSendHex(compactFlashBuffer[1]);
serialSendString("h\13\10Serial number: ");
compactFlashIdentify();
compactFlashReadBuffer(20, 20);
for(i = 0; i < 20; i++)
{
serialSendChar(compactFlashBuffer[i]);
}
serialSendString("\13\10Firmware revision: ");
compactFlashIdentify();
compactFlashReadBuffer(26, 8);
for(i = 0; i < 8; i++)
{
serialSendChar(compactFlashBuffer[i]);
}
serialSendString("\13\10Model number: ");
compactFlashIdentify();
compactFlashReadBuffer(54, 20);
for(i = 0; i < 40; i++)
{
serialSendChar(compactFlashBuffer[i]);
}
// CompactFLASH write test
serialSendString("\13\10Writing block...");
compactFlashBuffer[0] = 'H';
compactFlashBuffer[1] = 'e';
compactFlashBuffer[2] = 'l';
compactFlashBuffer[3] = 'l';
compactFlashBuffer[4] = 'o';
compactFlashBuffer[5] = ' ';
compactFlashBuffer[6] = 'W';
compactFlashBuffer[7] = 'o';
compactFlashBuffer[8] = 'r';
compactFlashBuffer[9] = 'l';
compactFlashBuffer[10] = 'd';
compactFlashBuffer[11] = '!';
compactFlashWriteBlock(0, 0, 0);
compactFlashWriteBuffer(0, 12);
compactFlashFillBuffer();
compactFlashClearBuffer();
// CompactFLASH read test
serialSendString("\13\10Reading block: ");
compactFlashReadBlock(0, 0, 0);
compactFlashReadBuffer(0, 12);
for(i = 0; i < 12; i++)
{
serialSendChar(compactFlashBuffer[i]);
}
// just test if it really works!
serialSendString("\13\10Write 20 chars:");
for(i = 0; i < 20; i++)
{
compactFlashBuffer[i] = serialReceiveChar();
serialSendChar(compactFlashBuffer[i]);
}
serialSendString("\13\10Writing to CompactFLASH...");
compactFlashWriteBlock(0, 0, 1);
compactFlashWriteBuffer(0, 20);
compactFlashFillBuffer();
compactFlashClearBuffer();
serialSendString("\13\10Reading from CompactFLASH...\13\10");
compactFlashReadBlock(0, 0, 1);
compactFlashReadBuffer(0, 20);
for(i = 0; i < 20; i++)
{
serialSendChar(compactFlashBuffer[i]);
}
serialSendString("\13\10");
while(compactFlashPresent());
}
}
Copyright © 2002-2006 SourceBoost Technologies