mirror of
https://github.com/hathach/tinyusb.git
synced 2025-01-17 05:32:55 +08:00
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 ------------------------------ */
|