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 ------------------------------ */ |