125 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			125 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| 
								 | 
							
								/**********************************************************************
							 | 
						||
| 
								 | 
							
								* $Id$		lpc43xx_sdmmc.h		2012-Aug-15
							 | 
						||
| 
								 | 
							
								*//**
							 | 
						||
| 
								 | 
							
								* @file		lpc43xx_sdmmc.h
							 | 
						||
| 
								 | 
							
								* @brief	SD/MMC card access and data driver
							 | 
						||
| 
								 | 
							
								* @version	1.0
							 | 
						||
| 
								 | 
							
								* @date		15. Aug. 2012
							 | 
						||
| 
								 | 
							
								* @author	NXP MCU SW Application Team
							 | 
						||
| 
								 | 
							
								*
							 | 
						||
| 
								 | 
							
								* Copyright(C) 2011, NXP Semiconductor
							 | 
						||
| 
								 | 
							
								* All rights reserved.
							 | 
						||
| 
								 | 
							
								*
							 | 
						||
| 
								 | 
							
								***********************************************************************
							 | 
						||
| 
								 | 
							
								* Software that is described herein is for illustrative purposes only
							 | 
						||
| 
								 | 
							
								* which provides customers with programming information regarding the
							 | 
						||
| 
								 | 
							
								* products. This software is supplied "AS IS" without any warranties.
							 | 
						||
| 
								 | 
							
								* NXP Semiconductors assumes no responsibility or liability for the
							 | 
						||
| 
								 | 
							
								* use of the software, conveys no license or title under any patent,
							 | 
						||
| 
								 | 
							
								* copyright, or mask work right to the product. NXP Semiconductors
							 | 
						||
| 
								 | 
							
								* reserves the right to make changes in the software without
							 | 
						||
| 
								 | 
							
								* notification. NXP Semiconductors also make no representation or
							 | 
						||
| 
								 | 
							
								* warranty that such application will be suitable for the specified
							 | 
						||
| 
								 | 
							
								* use without further testing or modification.
							 | 
						||
| 
								 | 
							
								* Permission to use, copy, modify, and distribute this software and its
							 | 
						||
| 
								 | 
							
								* documentation is hereby granted, under NXP Semiconductors'
							 | 
						||
| 
								 | 
							
								* relevant copyright in the software, without fee, provided that it
							 | 
						||
| 
								 | 
							
								* is used in conjunction with NXP Semiconductors microcontrollers.  This
							 | 
						||
| 
								 | 
							
								* copyright, permission, and disclaimer notice must appear in all copies of
							 | 
						||
| 
								 | 
							
								* this code.
							 | 
						||
| 
								 | 
							
								**********************************************************************/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* Peripheral group ----------------------------------------------------------- */
							 | 
						||
| 
								 | 
							
								/** @defgroup SDMMC	SDMMC (SDMMC Card Interface)
							 | 
						||
| 
								 | 
							
								 * @ingroup LPC4300CMSIS_FwLib_Drivers
							 | 
						||
| 
								 | 
							
								 * @{
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								#ifndef LPC43XX_SDMMC_H
							 | 
						||
| 
								 | 
							
								#define LPC43XX_SDMMC_H
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifdef __cplusplus
							 | 
						||
| 
								 | 
							
								extern "C"
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* Private Macros ------------------------------------------------------------- */
							 | 
						||
| 
								 | 
							
								/** @defgroup SDMMC_Private_Macros SDMMC Private Macros
							 | 
						||
| 
								 | 
							
								 * @{
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/** \brief card type defines
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								#define CARD_TYPE_SD    (1 << 0)
							 | 
						||
| 
								 | 
							
								#define CARD_TYPE_4BIT  (1 << 1)
							 | 
						||
| 
								 | 
							
								#define CARD_TYPE_8BIT  (1 << 2)
							 | 
						||
| 
								 | 
							
								#define CARD_TYPE_HC    (OCR_HC_CCS) /*!< high capacity card > 2GB */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#define MMC_SECTOR_SIZE 		512
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/** \brief Setup options for the SDIO driver
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								#define US_TIMEOUT 				1000000 	/*!< give 1 atleast 1 sec for the card to respond */
							 | 
						||
| 
								 | 
							
								#define MS_ACQUIRE_DELAY		(10) 		/*!< inter-command acquire oper condition delay in msec*/
							 | 
						||
| 
								 | 
							
								#define INIT_OP_RETRIES   		50  		/*!< initial OP_COND retries */
							 | 
						||
| 
								 | 
							
								#define SET_OP_RETRIES    		1000 		/*!< set OP_COND retries */
							 | 
						||
| 
								 | 
							
								#define SDIO_BUS_WIDTH			4			/*!< Max bus width supported */
							 | 
						||
| 
								 | 
							
								#define SD_MMC_ENUM_CLOCK       400000		/*!< Typical enumeration clock rate */
							 | 
						||
| 
								 | 
							
								#define MMC_MAX_CLOCK           20000000	/*!< Max MMC clock rate */
							 | 
						||
| 
								 | 
							
								#define MMC_LOW_BUS_MAX_CLOCK   26000000	/*!< Type 0 MMC card max clock rate */
							 | 
						||
| 
								 | 
							
								#define MMC_HIGH_BUS_MAX_CLOCK  52000000	/*!< Type 1 MMC card max clock rate */
							 | 
						||
| 
								 | 
							
								#define SD_MAX_CLOCK            25000000	/*!< Max SD clock rate */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* Function prototype for event setup function */
							 | 
						||
| 
								 | 
							
								typedef void (*MCI_EVSETUP_FUNC_T)(uint32_t);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* Function prototype for wait (for IRQ) function */
							 | 
						||
| 
								 | 
							
								typedef uint32_t (*MCI_WAIT_CB_FUNC_T)(uint32_t);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* Function prototype for milliSecond delay function */
							 | 
						||
| 
								 | 
							
								typedef void (*MCI_MSDELAY_FUNC_T)(uint32_t);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @}
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* Public Functions ----------------------------------------------------------- */
							 | 
						||
| 
								 | 
							
								/** @defgroup SDMMC_Public_Functions SDMMC Public Functions
							 | 
						||
| 
								 | 
							
								 * @{
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* Attempt to enumerate an SDMMC card */
							 | 
						||
| 
								 | 
							
								int32_t sdmmc_acquire(MCI_EVSETUP_FUNC_T evsetup_cb,
							 | 
						||
| 
								 | 
							
									MCI_WAIT_CB_FUNC_T waitfunc_cb, MCI_MSDELAY_FUNC_T msdelay_func,
							 | 
						||
| 
								 | 
							
									struct _mci_card_struct *pcardinfo);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* Get card's current state (idle, transfer, program, etc.) */
							 | 
						||
| 
								 | 
							
								int32_t sdmmc_get_state(void);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* Get card's size */
							 | 
						||
| 
								 | 
							
								int32_t sdmmc_get_device_size(void);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* SDMMC read function - reads data from a card */
							 | 
						||
| 
								 | 
							
								int32_t sdmmc_read_blocks(void *buffer, int32_t start_block,
							 | 
						||
| 
								 | 
							
								    int32_t end_block);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* SDMMC write function - writes data to a card. After calling this
							 | 
						||
| 
								 | 
							
								   function, do not use read or write until the card state has
							 | 
						||
| 
								 | 
							
								   left the program state. */
							 | 
						||
| 
								 | 
							
								int32_t sdmmc_write_blocks(void *buffer, int32_t start_block,
							 | 
						||
| 
								 | 
							
								    int32_t end_block);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @}
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								#ifdef __cplusplus
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif /* end LPC43XX_SDMMC_H */
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @}
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* --------------------------------- End Of File ------------------------------ */
							 |