Download: Accessing SD/MMC card using SPI on LPC2000

AN10406 Rev. 03 — 3 January 2007 Application note Document information Info Content Keywords Secure Digital (SD), MultiMediaCard (MMC), SPI, Microcontroller, MCU Abstract This document describes how to use the LPC2000 SPI interface to access SD/MMC card Revision history Rev Date Description 03 20070103 Tested both MMC and SD card 02 20051128 Error correction per customer request and optimizing the driver 01 20051102 Initial version Contact information For additional information, please visit: http://www.nxp.com For sales office addresses, please send an email to: email is hidden AN10406_3 © NX...
Author: Weston Shared: 7/30/19
Downloads: 519 Views: 1822

Content

AN10406 Rev. 03 — 3 January 2007 Application note Document information Info Content Keywords Secure Digital (SD), MultiMediaCard (MMC), SPI, Microcontroller, MCU Abstract This document describes how to use the LPC2000 SPI interface to access SD/MMC card, Revision history Rev Date Description 03 20070103 Tested both MMC and SD card 02 20051128 Error correction per customer request and optimizing the driver 01 20051102 Initial version

Contact information

For additional information, please visit: http://www.nxp.com For sales office addresses, please send an email to: email is hidden AN10406_3 © NXP B.V. 2007. All rights reserved. Application note Rev. 03 — 3 January 2007 2 of 18, 1. Introduction This application note describes how to use the SPI interface on the LPC2000 family MCU to access Secure Digital (SD) or MultiMediaCard (MMC) card, provides sample software to access SD/MMC card on the Keil’s MCB214x board. It includes: • General information on SD/MMC protocol concept. • Underlying SPI driver and design consideration for SD/MMC communication. • SD/MMC commands, driver, and key APIs. • Sample Software. 2. SD/MMC protocol concept 2.1 SD/MMC bus architecture The SD/MMC are the universal low cost, high speed (MMC clock up to 20 MHz, SD clock up to 25 MHz), data storage media. The bus architecture of SD/MMC can be chosen in one of the two mode modes, SD/MMC or SPI. The SD/MMC mode bus includes the following signals: 1. CLK: Host to card clock 2. CMD: Bi-directional Command/Response signal 3. DATA0 to DATA3: Four bi-directional data signal 4. VDD, VSS: Power and Ground signals The SPI mode is compliant with the Serial Peripheral Interface (SPI) specification. Its bus architecture includes the following signals: 1. CS: Host to card Chip Select signal 2. CLK: Host to card clock signal 3. MOSI: (Master Out Slave In) Host to card single bit data signal 4. MISO: (Master In Slave Out) Card to host single bit data signal Both SD/MMC and SPI modes use the single master/multiple slave bus architecture to communicate with the end devices and/or media cards. In this application note, only SPI mode is implemented to access the SD/MMC media card. 2.2 SD/MMC bus protocol The SPI message consists of command, response, and data block token. The host initiates the communication. As described in the SPI specification, the host starts every bus transaction by asserting the CS signal low. All the commands and transmit data are sent to the media card on the MOSI line. All the command response and receiving data are received from the media card on the MISO line. CLK is used to synchronize the data transfer on the bus. The communication between the host and the media card can be simply divided into two phases: card initialization phase and data access phase. In initialization phase, the host uses a series of commands to reset the card, set the card to a known operational mode, set the block length for data access. In data access phase, the host uses a series of commands to read and/or write data from the card after the initialization phase. Application note Rev. 03 — 3 January 2007 3 of 18, The complete command set can be found in the SanDisk Secure Digital Card Product Manual, version 1.9 by SanDisk Corporation and The MultiMediaCard System System Specification version 3.1 by MMC Association Technical Committee. 3. SPI driver and APIs for SD/MMC communication 3.1 LPC2000 SPI interface All the MCUs in LPC2000 family have at least one SPI port. Any of these SPI ports can be used for SD/MMC communication because all these SPI ports can be configured as SPI master, and configured into one of the four modes by manipulating the CPOL and CPHA bits to alter the relationship between the data and clock phase. The sample software has been tested on the LPC2148 MCU. On the LPC2148 MCU, there are one SPI port, or SPI0, and one Synchronous Serial Port (SSP), or SPI1, which can be configured for SPI communication. Due to the board configuration, the SPI interface used for MMC data communication is the embedded SSP port or SPI1. The sample program below has been tested on Keil Software Inc.’s MCB214x board using their software development tool chain set, uVision IDE and Debugger, version 3. The single master, also referred as the SPI host, is the LPC2148 MCU, the slave device tested include a Kingston’s 64 MB SD card and a PQI’s 256 MB MMC card on the SD/MMC slot of the MCB214x board. 3.2 SPI initialization and general APIs In order to configure SPI interface on the LPC2148 SSP port, the design consideration includes, • GPIO setting. The SPI pins, CLK, CS, MOSI, MISO need to be configured through pin select and GPIO registers, PINSEL1, IODIR0, and IOSET0, before configuring the SPI interface. • SPI clock pre-scale and clock rate. Based on the APB clock (PCLK) setting in APB Divider Control register (APBDIV), the clock pre-scale can be set through SSP Clock pre-scale Register (SSPCPSR), and the clock rate can be controlled in the SSP Control 0 Register (SSPCR0). The SPI clock rate in the sample test program is set to 4 MHz. • SPI frame format and data size. The SPI format and data size can be configured through setting the proper clock polarity bit (CPOL) and clock phase bit (CPHA) and data size field (DSS) in the SSP control registers (SSPCR0). The data size is set to 8 bits/frame, and both CPOL and CPHA bits are set to zero. • SPI enable/disable. The SSP port should be disabled before the GPIO pin setting, clock pre-scale setting, frame format configuration, and enabled after all the configuration is done to ensure a clear start. The SPI related APIs in the attached sample program include: • void SPI_Init ( void ); Initializing SPI interface through configuring GPIO, VPBDIV, SSP port registers. • void SPI_Send ( unsigned char * data_pointer, unsigned int data_length ); Sending a block of data based on the data pointer and the length of the data block. • void SPI_Receive ( unsigned char *data_pointer, unsigned int data_length ); Application note Rev. 03 — 3 January 2007 4 of 18, Receiving a block of data based on the data pointer and the length of the data block. • unsigned char SPI_ReceiveByte( void ); Receiving one byte of data, the return value of the API is the received data. This API is primarily used to obtain the command response at different phases. 4. Basic SD/MMC commands The commands mentioned below are referenced from SD/MMC System Specification, as only minimum numbers of commands have been implemented in the sample program. These commands are: • CMD0 GO_IDLE_STATE, reset the card to idle state • CMD1 SEND_OP_COND, ask the card in idle state to send their operation conditions contents in the response on the MISO line. Any negative response indicates the media card cannot be initialized correctly. • CMD16 SET_BLOCKLEN, set the block length (in bytes) for all the following block commands, both read and write. In the sample program, the data length is set to 512 bytes. • CMD17 READ_SINGLE_BLOCK, read a block of data that its size is determined by the SET_BLOCKLEN command. • CMD24 WRITE_BLOCK, write a block of data that its size is determined by the SET_BLOCKLEN command. 5. SD/MMC driver and key APIs On the SD/MMC host, SD/MMC driver APIs use underlying SPI APIs to send a series of commands to initialize the SD/MMC card, check the status on the command response, and then send a series of commands to read/write data to from the SD/MMC card. The SD/MMC driver and some key APIs in the attached sample program include: • unsigned char mmc_Init ( void ); This API is used to initialize the SD/MMC card. Use SPI_Send() to send three commands CMD0, CMD1, CMD16, in sequence to initialize the SD/MMC Card, then, use mmc_response(), described below, to get the response after each command from the card. If the response on each command is successful, the return value of mmc_init() indicates the status of the command response, zero is succeed and non-zero is failure. • int mmc_write_block ( unsigned int block_number ); This API is used to send a block of data based on the block number to the SD/MMC card. Use SPI_Send() to send CMD24 followed by the data and checksum, then use mmc_response() to get response after the command and the block of data, the return value of mmc_write_block() indicates the status of the command and data response, zero is succeed and non-zero is failure. • int mmc_read_block ( unsigned int block_number ); This API is used to receive a block of data based on the block number from the SD/MMC card. Application note Rev. 03 — 3 January 2007 5 of 18, Use SPI_Send() to send CMD17 to the SD/MMC card first, check the response of the CMD17, if the response is successful, use SPI_ReceiveByte() repeatedly to read the data back from the SD/MMC card. The iteration of the SPI_ReceiveByte() is 512 (block length) + 2 (two-byte checksum). The return value of mmc_read_block() indicates the status of the command and data response, zero is succeed and non- zero is failure. • Int mmc_response ( unsigned char expected_response ); Use SPI_ReceiveByte() to get the response from the MISO line, compare the received data with expected command response, if the responses match, mmc_response() will exit normally and return succeed value zero. If not within a certain period of time, mmc_response() will bail out and return non-zero failure value. 6. Sample software 1 mmcmain.h /*- * Name: MMCMAIN.H * Purpose: SD/MMC Acess demo Definitions * Version: V1.03 * Copyright (c) 2006 NXP Semiconductor. All rights reserved. *-*/ #define CCLK 60000000 /* CPU Clock */ /* BLOCK number of the MMC card */ #define MAX_BLOCK_NUM 0x80 /* LED Definitions */ #define LED_MSK 0x00FF0000 /* P1.16..23 */ #define LED_RD 0x00010000 /* P1.16 */ #define LED_WR 0x00020000 /* P1.17 */ #define LED_CFG 0x00400000 /* P1.22 */ #define LED_DONE 0x00800000 /* P1.23 */ 4 spi_mmc.h /*- * Name: SPI_MMC.H * Purpose: SPI mode SD/MMC card interface driver * Version: V1.03 * Copyright (c) 2006 NXP Semiconductor. All rights reserved. *-*/ #ifndef _SPI_MMC_H_ #define _SPI_MMC_H_ /* SPI select pin */ #define SPI_SEL 0x00100000 /* The SPI data is 8 bit long, the MMC use 48 bits, 6 bytes */ #define MMC_CMD_SIZE 6 /* The max MMC flash size is 256MB */ #define MMC_DATA_SIZE 512 /* 16-bit in size, 512 bytes */ #define MAX_TIMEOUT 0xFF #define IDLE_STATE_TIMEOUT 1 Application note Rev. 03 — 3 January 2007 6 of 18, #define OP_COND_TIMEOUT 2 #define SET_BLOCKLEN_TIMEOUT 3 #define WRITE_BLOCK_TIMEOUT 4 #define WRITE_BLOCK_FAIL 5 #define READ_BLOCK_TIMEOUT 6 #define READ_BLOCK_DATA_TOKEN_MISSING 7 #define DATA_TOKEN_TIMEOUT 8 #define SELECT_CARD_TIMEOUT 9 #define SET_RELATIVE_ADDR_TIMEOUT 10 void SPI_Init( void ); void SPI_Send( BYTE *Buf, DWORD Length ); void SPI_Receive( BYTE *Buf, DWORD Length ); BYTE SPI_ReceiveByte( void ); int mmc_init(void); int mmc_response(BYTE response); int mmc_read_block(WORD block_number); int mmc_write_block(WORD block_number); int mmc_wait_for_write_finish(void); #endif /* _SPI_MMC_H_ */ 6 spi_mmc.c /*- * Name: SPI_MMC.C * Purpose: SPI and SD/MMC command interface Module * Version: V1.03 * Copyright (c) 2006 NXP Semiconductor. All rights reserved. *-*/ #include /* LPC214x definitions */ #include "type.h" #include "spi_mmc.h" BYTE MMCWRData[MMC_DATA_SIZE]; BYTE MMCRDData[MMC_DATA_SIZE]; BYTE MMCCmd[MMC_CMD_SIZE]; BYTE MMCStatus = 0; /* * SPI and MMC commands related modules. * */ void SPI_Init( void ) { DWORD portConfig; BYTE i, Dummy; /* Configure PIN connect block */ /* bit 32, 54, 76 are 0x10, bit 98 are 0x00 port 0 bits 17, 18, 19, 20 are SSP port SCK1, MISO1, MOSI1, and SSEL1 set SSEL to GPIO pin that you will have the totoal freedom to set/reset the SPI chip-select pin */ SSPCR1 = 0x00; /* SSP master (off) in normal mode */ portConfig = PINSEL1; PINSEL1 = portConfig | 0x00A8; IODIR0 = SPI_SEL; /* SSEL is output */ IOSET0 = SPI_SEL; /* set SSEL to high */ Application note Rev. 03 — 3 January 2007 7 of 18, /* Set PCLK 1/2 of CCLK */ VPBDIV = 0x02; /* Set data to 8-bit, Frame format SPI, CPOL = 0, CPHA = 0, and SCR is 15 */ SSPCR0 = 0x0707; /* SSPCPSR clock prescale register, master mode, minimum divisor is 0x02*/ SSPCPSR = 0x2; /* Device select as master, SSP Enabled, normal operational mode */ SSPCR1 = 0x02; for ( i = 0; i < 8; i++ ) { Dummy = SSPDR; /* clear the RxFIFO */ } return; } /* * SPI Send a block of data based on the length */ void SPI_Send( BYTE *buf, DWORD Length ) { BYTE Dummy; if ( Length == 0 ) return; while ( Length != 0 ) { /* as long as TNF bit is set, TxFIFO is not full, I can write */ while ( !(SSPSR & 0x02) ); SSPDR = *buf; /* Wait until the Busy bit is cleared */ while ( !(SSPSR & 0x04) ); Dummy = SSPDR; /* Flush the RxFIFO */ Length-; buf++; } return; } /* * SPI receives a block of data based on the length */ void SPI_Receive( BYTE *buf, DWORD Length ) { DWORD i; for ( i = 0; i < Length; i++ ) { *buf = SPI_ReceiveByte(); buf++; } return; } Application note Rev. 03 — 3 January 2007 8 of 18, /* * SPI Receive Byte, receive one byte only, return Data byte * used a lot to check the status. */ BYTE SPI_ReceiveByte( void ) { BYTE data; /* wrtie dummy byte out to generate clock, then read data from MISO */ SSPDR = 0xFF; /* Wait until the Busy bit is cleared */ while ( SSPSR & 0x10 ); data = SSPDR; return ( data ); } /************************** MMC Init *********************************/ /* * Initialises the MMC into SPI mode and sets block size(512), returns * 0 on success * */ int mmc_init() { DWORD i; /* Generate a data pattern for write block */ for(i=0;i0) ); /* timeout waiting for 0x00 from the MMC */ if ( i == 0 ) { MMCStatus = OP_COND_TIMEOUT; IOSET0 = SPI_SEL; /* set SPI SSEL */ return MMCStatus; } /* Send some dummy clocks after SEND_OP_COND */ IOSET0 = SPI_SEL; /* set SPI SSEL */ SPI_ReceiveByte(); IOCLR0 = SPI_SEL; /* clear SPI SSEL */ /* send MMC CMD16(SET_BLOCKLEN) to set the block length */ MMCCmd[0] = 0x50; MMCCmd[1] = 0x00; /* 4 bytes from here is the block length */ /* LSB is first */ /* 00 00 00 10 set to 16 bytes */ /* 00 00 02 00 set to 512 bytes */ MMCCmd[2] = 0x00; /* high block length bits - 512 bytes */ MMCCmd[3] = 0x02; /* low block length bits */ MMCCmd[4] = 0x00; /* checksum is no longer required but we always send 0xFF */ MMCCmd[5] = 0xFF; SPI_Send( MMCCmd, MMC_CMD_SIZE ); if( (mmc_response(0x00))==1 ) { MMCStatus = SET_BLOCKLEN_TIMEOUT; IOSET0 = SPI_SEL; /* set SPI SSEL */ Application note Rev. 03 — 3 January 2007 10 of 18, return MMCStatus; } IOSET0 = SPI_SEL; /* set SPI SSEL */ SPI_ReceiveByte(); return 0; } /************************** MMC Write Block ***************************/ /* write a block of data based on the length that has been set * in the SET_BLOCKLEN command. * Send the WRITE_SINGLE_BLOCK command out first, check the * R1 response, then send the data start token(bit 0 to 0) followed by * the block of data. The test program sets the block length to 512 * bytes. When the data write finishs, the response should come back * as 0xX5 bit 3 to 0 as 0101B, then another non-zero value indicating * that MMC card is in idle state again. * */ int mmc_write_block(WORD block_number) { WORD varl, varh; BYTE Status; IOCLR0 = SPI_SEL; /* clear SPI SSEL */ /* block size has been set in mmc_init() */ varl=((block_number&0x003F)<<9); varh=((block_number&0xFFC0)>>7); /* send mmc CMD24(WRITE_SINGLE_BLOCK) to write the data to MMC card */ MMCCmd[0] = 0x58; /* high block address bits, varh HIGH and LOW */ MMCCmd[1] = varh >> 0x08; MMCCmd[2] = varh & 0xFF; /* low block address bits, varl HIGH and LOW */ MMCCmd[3] = varl >> 0x08; MMCCmd[4] = varl & 0xFF; /* checksum is no longer required but we always send 0xFF */ MMCCmd[5] = 0xFF; SPI_Send(MMCCmd, MMC_CMD_SIZE ); /* if mmc_response returns 1 then we failed to get a 0x00 response */ if((mmc_response(0x00))==1) { MMCStatus = WRITE_BLOCK_TIMEOUT; IOSET0 = SPI_SEL; /* set SPI SSEL */ return MMCStatus; } /* Set bit 0 to 0 which indicates the beginning of the data block */ MMCCmd[0] = 0xFE; SPI_Send( MMCCmd, 1 ); /* send data, pattern as 0x00,0x01,0x02,0x03,0x04,0x05 ...*/ SPI_Send( MMCWRData, MMC_DATA_SIZE ); /* Send dummy checksum */ /* when the last check sum is sent, the response should come back immediately. So, check the SPI FIFO MISO and make sure the status return 0xX5, the bit 3 through 0 should be 0x05 */ MMCCmd[0] = 0xFF; MMCCmd[1] = 0xFF; Application note Rev. 03 — 3 January 2007 11 of 18, SPI_Send( MMCCmd, 2 ); Status = SPI_ReceiveByte(); if ( (Status & 0x0F) != 0x05 ) { MMCStatus = WRITE_BLOCK_FAIL; IOSET0 = SPI_SEL; /* set SPI SSEL */ return MMCStatus; } /* if the status is already zero, the write hasn't finished yet and card is busy */ if(mmc_wait_for_write_finish()==1) { MMCStatus = WRITE_BLOCK_FAIL; IOSET0 = SPI_SEL; /* set SPI SSEL */ return MMCStatus; } IOSET0 = SPI_SEL; /* set SPI SSEL */ SPI_ReceiveByte(); return 0; } /************************** MMC Read Block ****************************/ /* * Reads a 512 Byte block from the MMC * Send READ_SINGLE_BLOCK command first, wait for response come back * 0x00 followed by 0xFE. The call SPI_Receive() to read the data * block back followed by the checksum. * */ int mmc_read_block(WORD block_number) { WORD Checksum; WORD varh,varl; IOCLR0 = SPI_SEL; /* clear SPI SSEL */ varl=((block_number&0x003F)<<9); varh=((block_number&0xFFC0)>>7); /* send MMC CMD17(READ_SINGLE_BLOCK) to read the data from MMC card */ MMCCmd[0] = 0x51; /* high block address bits, varh HIGH and LOW */ MMCCmd[1] = varh >> 0x08; MMCCmd[2] = varh & 0xFF; /* low block address bits, varl HIGH and LOW */ MMCCmd[3] = varl >> 0x08; MMCCmd[4] = varl & 0xFF; /* checksum is no longer required but we always send 0xFF */ MMCCmd[5] = 0xFF; SPI_Send(MMCCmd, MMC_CMD_SIZE ); /* if mmc_response returns 1 then we failed to get a 0x00 response */ if((mmc_response(0x00))==1) { MMCStatus = READ_BLOCK_TIMEOUT; IOSET0 = SPI_SEL; /* set SPI SSEL */ return MMCStatus; } /* wait for data token */ Application note Rev. 03 — 3 January 2007 12 of 18, if((mmc_response(0xFE))==1) { MMCStatus = READ_BLOCK_DATA_TOKEN_MISSING; IOSET0 = SPI_SEL; return MMCStatus; } /* Get the block of data based on the length */ SPI_Receive( MMCRDData, MMC_DATA_SIZE ); /* CRC bytes that are not needed */ Checksum = SPI_ReceiveByte(); Checksum = Checksum << 0x08 | SPI_ReceiveByte(); IOSET0 = SPI_SEL; /* set SPI SSEL */ SPI_ReceiveByte(); return 0; } /***************** MMC get response *******************/ /* * Repeatedly reads the MMC until we get the * response we want or timeout */ int mmc_response( BYTE response) { DWORD count = 0xFFF; BYTE result; while( count > 0 ) { result = SPI_ReceiveByte(); if ( result == response ) { break; } count-; } if ( count == 0 ) return 1; /* Failure, loop was exited due to timeout */ else return 0; /* Normal, loop was exited before timeout */ } /***************** MMC wait for write finish *******************/ /* * Repeatedly reads the MMC until we get a non-zero value (after * a zero value) indicating the write has finished and card is no * longer busy. * */ int mmc_wait_for_write_finish( void ) { DWORD count = 0xFFFF; /* The delay is set to maximum considering the longest data block length to handle */ BYTE result = 0; while( (result == 0) && count ) { result = SPI_ReceiveByte(); count-; } Application note Rev. 03 — 3 January 2007 13 of 18, if ( count == 0 ) return 1; /* Failure, loop was exited due to timeout */ else return 0; /* Normal, loop was exited before timeout */ } 9 mmcmain.c /*- * Name: MMCMAIN.C * Purpose: SD/MMC Card Access Demo * Version: V1.03 * Copyright (c) 2006 NXP Semiconductor. All rights reserved. *-*/ #include /* LPC214x definitions */ #include "type.h" #include "spi_mmc.h" #include "mmcmain.h" extern BYTE MMCWRData[MMC_DATA_SIZE]; extern BYTE MMCRDData[MMC_DATA_SIZE]; /* Main Program */ int main (void) { DWORD i, BlockNum = 0; PINSEL1 = 0x40004000; IODIR1 = LED_MSK; /* LED's defined as Outputs */ SPI_Init(); /* initialize SPI for MMC card */ IOSET1 = LED_CFG; if ( mmc_init() != 0 ) { IOSET0 = SPI_SEL; /* set SSEL to high */ while ( 1 ); /* Very bad happened */ } /* write, read back, and compare the complete 64KB on the MMC * card each block is 512 bytes, the total is 512 * 128 */ for ( BlockNum = 0; BlockNum < MAX_BLOCK_NUM; BlockNum++ ) { IOCLR1 = LED_MSK; IOSET1 = LED_WR; if ( mmc_write_block(BlockNum) == 0 ) { IOCLR1 = LED_MSK; IOSET1 = LED_RD; mmc_read_block(BlockNum); } else { IOSET0 = SPI_SEL; /* set SSEL to high */ while ( 1 ); /* Very bad happened */ } for ( i = 0; i < MMC_DATA_SIZE; i++ ) /* Validate */ { if ( MMCRDData[i] != MMCWRData[i] ) { IOSET0 = SPI_SEL; /* set SSEL to high */ Application note Rev. 03 — 3 January 2007 14 of 18, while ( 1 ); /* Very bad happened */ } } for ( i = 0; i < MMC_DATA_SIZE; i++ ) /* clear read buffer */ MMCRDData[i] = 0x00; } IOCLR1 = LED_MSK; IOSET1 = LED_DONE; while (1); /* Loop forever */ } Application note Rev. 03 — 3 January 2007 15 of 18, 7. References [1] Philips LPC2142/2148 User Manual UM10139, Philips Semiconductors, May 2005. [2] The MultiMediaCard System Specification, Version 3.1, MMC Association Technical Committee, June 2001. [3] SanDisk Secure Digital Card Product Manual, Version 1.9, SanDisk Corporation. December, 2003 Application note Rev. 03 — 3 January 2007 16 of 18, 8. Legal information 8.1 Definitions Suitability for use — NXP Semiconductors products are not designed, authorized or warranted to be suitable for use in medical, military, aircraft, Draft — The document is a draft version only. The content is still under space or life support equipment, nor in applications where failure or internal review and subject to formal approval, which may result in malfunction of a NXP Semiconductors product can reasonably be expected modifications or additions. NXP Semiconductors does not give any to result in personal injury, death or severe property or environmental representations or warranties as to the accuracy or completeness of damage. NXP Semiconductors accepts no liability for inclusion and/or use of information included herein and shall have no liability for the consequences NXP Semiconductors products in such equipment or applications and of use of such information. therefore such inclusion and/or use is for the customer’s own risk. Applications — Applications that are described herein for any of these 8.2 Disclaimers products are for illustrative purposes only. NXP Semiconductors makes no representation or warranty that such applications will be suitable for the General — Information in this document is believed to be accurate and specified use without further testing or modification. reliable. However, NXP Semiconductors does not give any representations or warranties, expressed or implied, as to the accuracy or completeness of such information and shall have no liability for the consequences of use of 8.3 Trademarks such information. Notice: All referenced brands, product names, service names and Right to make changes — NXP Semiconductors reserves the right to make trademarks are property of their respective owners. changes to information published in this document, including without limitation specifications and product descriptions, at any time and without notice. This document supersedes and replaces all information supplied prior to the publication hereof. A N10406_3 © NXP B.V. 2007. All rights reserved. Application note Rev. 03 — 3 January 2007 17 of 18, 9. Contents 1. Introduction ...3 2. SD/MMC Protocol Concept...3 2.1 SD/MMC Bus Architecture...3 2.2 SD/MMC Bus Protocol ...3 3. SPI Driver and APIs for SD/MMC communication...4 3.1 LPC2000 SPI Interface...4 3.2 SPI Initialization and General APIs...4 4. Basic SD/MMC commands ...5 5. SD/MMC Driver and key APIs ...5 6. Sample Software ...6 7. References...16 8. Legal information ...17 8.1 Definitions...17 8.2 Disclaimers...17 8.3 Trademarks ...17 9. Contents...18 Please be aware that important notices concerning this document and the product(s) described herein, have been included in the section 'Legal information'. © NXP B.V. 2007. All rights reserved. For more information, please visit: http://www.nxp.com For sales office addresses, email to: email is hidden Date of release: 3 January 2007

Document identifier: AN10406_3

]
15

Similar documents

PAGE 24 PAGE 1
PAGE 24 PAGE 1 disc one Staring into the black, it’s all I see Holed up in this shroud of obscurity Inhabiting nothing or it’s inhabiting me It’s the ultimate anonymity I set it in motion, I set it right I said what I said then I said goodnight Now my clock’s set forward and I can’t set it back And
HP Service Pack for ProLiant 2011.09.0 Contents
This table lists all of the software and firmware on this HP Service Pack for ProLiant. For more information on this deliverable, go to www.hp.com/go/spp/download. Since this is the initial version of the HP Service Pack for ProLiant, if the text is Blue, then the component version has been updated
Service Pack for ProLiant 2011.09.0 Server Support Guide
BIOS - System ROM Online ROM Flash Component for Linux - HP ProLiant BL260c G5 (I20) Servers, v2010.10.25 P Online ROM Flash Component for Linux - HP ProLiant BL280c G6 (I22) Servers, v2011.05.05 P Online ROM Flash Component for Linux - HP ProLiant BL2x220c G5 (I19) Servers, v2010.10.25 P Online ROM
BCM1000-BTW BCM1000-BTW Spy Lite User Manual
USER MANUAL BCM1000-BTW BCM1000-BTW Spy Lite User Manual 1000-BTW-UM500-R 16215 Alton Parkway • P.O. Box 57013 • Irvine, CA 92619-7013 • Phone: 949-450-8700 • Fax: 949-450-8710 01/27/05 REVISION HISTORY Revision Date Change Description 1000-BTW-UM500-R 01/27/05 Initial release. Broadcom Corporation
SQL Injection Are Your Web Applications Vulnerable?
SQL Injection Are Your Web Applications Vulnerable? Table of Contents 1.1. Overview 3 1.2. Background 3 1.3. Character encoding 3 2.1. Comprehensive testing 4 2.2. Testing procedure 4 2.3. Evaluating results 5 3.1. Authorization bypass 6 3.2. SELECT 7 3.2.1. Direct vs. Quoted ... 7 3.2.2. Basic UNIO
SQL Roles: Users and Security in InterBase What is an InterBase user?
D.2.j (Database Talk) [SQL Roles: Users and Security in InterBase] SQL Roles: Users and Security in InterBase Brett Bandy Markus Kemper BorCon 1998 Databases need security. Data stored in database files must be secure. InterBase provides two levels of security for data; user validation and database
SAP Excellence
SAP Excellence Series Editors: Professor Dr. Dr. h.c. mult. Peter Mertens Universität Erlangen-Nürnberg Dr. Peter Zencke SAP AG, Walldorf Jörg Thomas Dickersbach Characteristic Based Planning with mySAP SCM™ Scenarios, Processes, and Functions With contributions by A. Forstreuter, C. Fuhlbrügge and
SYSTEM SHOCK 2® WARNING: TO OWNERS OF PROJECTION TELEVISIONS
sysshock man -eng 02/05/2000 9:11 Page 1 SYSTEM SHOCK 2® WARNING: TO OWNERS OF PROJECTION TELEVISIONS STILL PICTURES OR IMAGES MAY CAUSE PERMANENT PICTURE-TUBE DAMAGE OR MARK THE PHOSPHOR OF THE CRT. AVOID REPEATED OR EXTENDED USE OF VIDEO GAMES ON LARGE- SCREEN PROJECTION TELEVISIONS. EPILEPSY WARN
STEERING SYSTEM SECTIONST
STEERING SYSTEM SECTIONST CONTENTS PRECAUTIONS ...2 TILT MECHANISM ...15 Supplemental Restraint System (SRS) ″AIR POWER STEERING GEAR AND LINKAGE ...16 BAG″ and ″SEAT BELT PRE-TENSIONER″...2 Components...16 Precautions for Steering System...2 Removal and Installation ...17 PREPARATION ...3 Disassemb
STAFF KATAS
STAFF KATAS CHUNG GI Begin with bow Step to left and down block Bring up down block arm Step forward with ready striking arm front smash fo staff
g GETTING STARTEDDPCSystem Requirements
g GETTING STARTEDDPCSystem Requirements Computer: Pentium 90 MHz processor or equivalent. Operating Systems: Windows 2000, Windows XP, or Windows Vista. Memory: 16 MB of RAM Controls: A keyboard and mouse are required. Joysticks, game pads, graphic tablets, and input devices other than the mouse and
300ItIlluminatil Mensaez g wr ep Orz gg
S2 Map.qxp 3/3/97 11:33 AM Page1agad300ItIlluminatil Mensaez g wr ep Orz gg etabth etbbdzLalande epep a Bootis zaad250 et g Vulpeculaed g bSaurusdgbbaagaProcyon Olber Rigel Mira 200 Zeeman a bd g ep Wolf g Vela bbbzaaRaynet a Luyten et b Sirius a 150 VolantisbgCanopus IndiSolbaMizardaPk gu Lyrae Reg
EPILEPSY WARNING
EPILEPSY WARNING Please read before using this video game system or allowing your children to use it. Some people are susceptible to epileptic seizures or loss of consciousness when exposed to certain flashing lights or light patterns in every day life. Such people may have a seizure while watching
Designer COMING SOON! o( DEBRA B AILEY )o Assistant Editor
Designer COMING SOON! o( DEBRA B AILEY )o Here's more Star Wars reading that you won't want to miss! Assistant Editor STAR WARS: EMPIRE #2J by JEREMY BARLOW and BRANDON BADEAUX o( KATIE MOODY )o Cover by KILIAN PLUNKETT It was supposed to be an easy gig ... transport a young woman across the desert
SEPTEMBER 1 - OCTOBER 19, 1973 EUROPEAN TOUR HOME
SEPTEMBER 1 - OCTOBER 19, 1973 EUROPEAN TOUR HOME September 1 - October 19, 1973 EUROPEAN TOUR VENUE: NOTES: Austria, West Germany, UK, Switzerland, Denmark, Opening acts on this tour were: Billy Preston, who also Sweden, Holland and Belgium backed the Stones on piano during their set; and Kracker,
STK433-130-E 2-channel class AB audio power IC,
Thick-Film Hybrid IC STK433-130-E 2-channel class AB audio power IC, 150W+150W Overview The STK433-130-E is a hybrid IC designed to be used in 150W × 2ch class AB audio power amplifiers. Applications • Audio power amplifiers. Features • Pin-to-pin compatible outputs ranging from 80W to 150W. • Can b
STLport License Agreement
STLport License Agreement Boris Fomitchev grants Licensee a non-exclusive, non-transferable, royalty-free license to use STLport and its documentation without fee. By downloading, using, or copying STLport or any portion thereof, Licensee agrees to abide by the intellectual property laws and all oth
of S. S. Stewart’s Banjo and Guitar Journal
of S. S. Stewart’s Banjo and Guitar Journal Vol. III, No.10, August, 1886 Pages 11-12 lacking in Sibley’s original copy
SECTION STC STEERING CONTROL SYSTEM
STEERINGABSECTION STCCDESTEERING CONTROL SYSTEM CONTENTS F TCHIJKLMNOPBASIC INSPECTION ... 2 ECU DIAGNOSIS ...13 DIAGNOSIS AND REPAIR WORK FLOW ... 2 POWER STEERING CONTROL UNIT ...13 Work Flow ...2 Reference Value ...13 S Wiring Diagram - ELECTRONICALLY CON- FUNCTION DIAGNOSIS ... 3 TROLLED POWER S
Dear Customer, Thank you for selecting Fiat and congratulations on your choice of a Fiat Stilo.
Dear Customer, Thank you for selecting Fiat and congratulations on your choice of a Fiat Stilo. We have written this handbook to help you get to know all your new Fiat Stilo features and use it in the best possible way. You should read it right through before taking the road for the first time. You
U.S. $16.99 Can. $23.95 U.K. £12.99 Games/Strategy/RPG ® Platform: Xbox® PRIMAOFFICIAL GAME GUIDE Visit us online at primagames.com DavidSJHodgson
U.S. $16.99 Can. $23.95 U.K. £12.99 Games/Strategy/RPG ® Platform: Xbox® PRIMAOFFICIAL GAME GUIDE Visit us online at primagames.com LucasArts and the LucasArts logo are registered trademarks of This game has received the Lucasfilm Ltd. © 2004 Lucasfilm Entertainment Company Ltd. or following rating
STREAMING MAXIMUM-MINIMUM FILTER USING NO MORE THAN THREE COMPARISONS PER ELEMENT
STREAMING MAXIMUM-MINIMUM FILTER USING NO MORE THAN THREE COMPARISONS PER ELEMENT Daniel Lemire University of Quebec at Montreal (UQAM), UER ST 100 Sherbrooke West, Montreal (Quebec), H2X 3P2 Canada email is hidden Abstract. The running maximum-minimum (-) filter computes the maxima and minima over
StoreJet ToolBox ユーザーガイド
StoreJet ToolBox ユーザーガイド (v1.0) 目次 ハードウェア要件 ... 3 対応 OS ... 3 Low Level Formatとは ... 3 StoreJet Format Toolについて ... 3 Low Level Formatの使い方 ... 4 StoreJet Format Toolの使い方 ... 8 ハードウェア要件 1. トランセンドの StoreJet外付けハードドライブ 2. USBポート搭載のデスクトップ/ノートブック PC 対応 OS StoreJet ToolBoxは以下の OSで利用できます。 Windows XP Windows
StoreJet ToolBox User Guide
StoreJet ToolBox User Guide (v1.0) Contents Hardware Requirements... 3 Supported Operating Systems ... 3 What is Low Level Format... 3 What is StoreJet Format Tool ... 3 How to use Low Level Format ... 4 1. Click “Scan Device” button and search StoreJet Drive... 4 2. Select a device that you want to
Qucs Test Report SPICE to Qucs conversion: Test File 1 Mike Brinson
Qucs Test Report SPICE to Qucs conversion: Test File 1 Mike Brinson Copyright ©c 2007 Mike Brinson Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation.
SETUP GUIDE
SETUP GUIDE SETUP GUIDE Model PP39L Notes, Cautions, and Warnings NOTE: A NOTE indicates important information that helps you make better use of your computer. CAUTION: A CAUTION indicates either potential damage to hardware or loss of data and tells you how to avoid the problem. WARNING: A WARNING
Mp3tag File Overview
Mp3tag File Overview 01/08/2008 Title: Bye Bye Blackbird Artist: Stephane Grappelli & Toots Thielemans Album: Bringing It Together Year: 2008 Track: 01 Genre: Jazz Comment: By CheRrom'08 Title: Just The Two Of Us Artist: Stephane Grappelli & Toots Thielemans Album: Bringing It Together Year: 2008 Tr
Red Hat Certificate of Expertise in Containerized Application Development
Study Guide Red Hat Certificate of Expertise in Containerized Application Development Contents Prerequisites 3 Linux 3 Installation 3 Docker Refresh 3 What is Docker? 3 Basic Docker Commands 3 Containers4ASample Command 4 Running Containers Locally 4 Linking Containers 4 Container Logs 4 Docker Even
FRONT & REAR SUSPENSION SECTIONSU
FRONT & REAR SUSPENSION SECTIONSU CONTENTS FRONT SUSPENSION ...2 WHEELARCH HEIGHT (UNLADEN*1) ...15 Precautions ...2 WHEEL RUNOUT ...15 PRECAUTIONS ...2 WHEEL BALANCE...15 Preparation ...2 REAR SUSPENSION...16 SPECIAL SERVICE TOOLS ...2 Precautions ...16 COMMERCIAL SERVICE TOOLS...2 PRECAUTIONS ...1
2010 SP 5.0 SPR # Description Product
2010 SP 5.0 SPR # Description Product 221873 Cannot drag the endpoint of this underdefined sketch SolidWorks line 322870 Centerline in drawing does not update to new position SolidWorks when feature is modified. 352787 ModelDoc2::SketchModifyFlip does not flip sketch SolidWorks API with external poi