AN2417 Freescale Semiconductor / Motorola, AN2417 Datasheet - Page 23

no-image

AN2417

Manufacturer Part Number
AN2417
Description
PCMCIA and Compact Flash Interface for the MC9328MX1 and MC9328MXL Application Processors Application Note
Manufacturer
Freescale Semiconductor / Motorola
Datasheet
for (i=0;(tempU8&0x08)==0x08;i++) {
}
printf("Finish Writing\n");
3.6.3 Read from Memory Block
The procedure for reading a block of memory in I/O mode is the same as in memory mode. The only
different is that correct address space should be used. Procedure for writing to a block of memory:
1, Write the number of block of data to be access to the sector count register
2, Write the LBA Address to the card
3, Issue 20H command
Example Program to read 512 byte of data to a memory block at LBA Address 0x0000001
U8 tempU8;
U16 i, U16data[256];
//Set sector count
*(P_U8) (CS5_BASE_ADDR+0x800002) = 0x1;//sector count =1
//Set the LBA address of memory block to be read
*(P_U8) (CS5_BASE_ADDR+0x800003) = 0x1; //LBA [7:0] =1
*(P_U8) (CS5_BASE_ADDR+0x800004) = 0x0; //LBA [15:8] =0
*(P_U8) (CS5_BASE_ADDR+0x800005) = 0x0; //LBA [23:16] =0
*(P_U8) (CS5_BASE_ADDR+0x800006) = 0xE0; //LBA [27:24]=0 (lower 4 bit of register)
//Issue read command
*(P_U8) (CS5_BASE_ADDR+0x800007) = 0x20;//issue 20H command for sector read
//Poll for busy bit
tempU8 = *(P_U8) (CS5_BASE_ADDR+0x800007);
while ( tempU8&0x80) { //poll for busy bit (bit 7 of register), quit loop when busy bit =0
}
//Read data from buffer into U16data[] until DRQ is clear
for (i=0;(tempU8&0x08)==0x08;i++) {
MOTOROLA
*(P_U16) (CS5_BASE_ADDR+0x800008)=(0xAA00+i);// write 2 byte of data to data buffer
tempU8=*(P_U8) (CS5_BASE_ADDR+0x800007);// poll for DRQ (bit 3 of register)
tempU8 = *(P_U8) (CS5_BASE_ADDR+0x800007);
Freescale Semiconductor, Inc.
For More Information On This Product,
MC9328MX1/MXL Application Note
Engineering Draft / Preliminary
Go to: www.freescale.com
Programming Example
23

Related parts for AN2417