123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- /***************************************************************************//**
- * @file drv_sdcard.h
- * @brief Memory card driver (SPI mode) of RT-Thread RTOS for using EFM32
- * USART module
- * COPYRIGHT (C) 2012, RT-Thread Development Team
- * @author onelife
- * @version 1.0
- *******************************************************************************
- * @section License
- * The license and distribution terms for this file may be found in the file
- * LICENSE in this distribution or at http://www.rt-thread.org/license/LICENSE
- *******************************************************************************
- * @section Change Logs
- * Date Author Notes
- * 2011-05-13 onelife Initial creation for using EFM32 USART module
- * 2011-07-07 onelife Modify initialization function to return error code
- ******************************************************************************/
- #ifndef __DEV_SDCARD_H__
- #define __DEV_SDCARD_H__
- /* Includes ------------------------------------------------------------------*/
- /* Exported types ------------------------------------------------------------*/
- /* Exported constants --------------------------------------------------------*/
- /* Exported macro ------------------------------------------------------------*/
- #define EFM32_SDCLK_LOW (100000)
- #if defined(EFM32_GXXX_DK)
- #define EFM32_SDCLK_HIGH (16000000)
- #elif defined(EFM32GG_DK3750)
- #define EFM32_SDCLK_HIGH (19000000)
- #endif
- #if (EFM32_SDCLK_HIGH > (EFM32_HFXO_FREQUENCY/2))
- #error "EFM32 SPI clock should not be more than (EFM32_HFXO_FREQUENCY/2)"
- #endif
- #define SD_SPEED_LOW (0)
- #define SD_SPEED_HIGH (1)
- #define SD_WAIT_PERIOD (RT_TICK_PER_SECOND)
- #define SD_SECTOR_SIZE_SHIFT (9)
- #define SD_SECTOR_SIZE (1 << SD_SECTOR_SIZE_SHIFT)
- #define SD_BLOCK_SIZE_CSD (16)
- #define SD_BLOCK_SIZE_CID (16)
- #define SD_BLOCK_SIZE_OCR (4)
- #define SD_BLOCK_SIZE_SDSTAT (64)
- /* Card type definitions (CardType) */
- #define CT_MMC (0x01)
- #define CT_SD1 (0x02)
- #define CT_SD2 (0x04)
- #define CT_SDC (CT_SD1|CT_SD2)
- #define CT_BLOCK (0x08)
- /* Definitions for MMC/SDC command */
- #define CMD0 (0) /* GO_IDLE_STATE */
- #define CMD1 (1) /* SEND_OP_COND */
- #define ACMD41 (41|0x80) /* SEND_OP_COND (SDC) */
- #define CMD8 (8) /* SEND_IF_COND */
- #define CMD9 (9) /* SEND_CSD */
- #define CMD10 (10) /* SEND_CID */
- #define CMD12 (12) /* STOP_TRANSMISSION */
- #define ACMD13 (13|0x80) /* SD_STATUS (SDC) */
- #define CMD16 (16) /* SET_BLOCKLEN */
- #define CMD17 (17) /* READ_SINGLE_BLOCK */
- #define CMD18 (18) /* READ_MULTIPLE_BLOCK */
- #define CMD23 (23) /* SET_BLOCK_COUNT */
- #define ACMD23 (23|0x80) /* SET_WR_BLK_ERASE_COUNT (SDC) */
- #define CMD24 (24) /* WRITE_BLOCK */
- #define CMD25 (25) /* WRITE_MULTIPLE_BLOCK */
- #define CMD41 (41) /* SEND_OP_COND (ACMD) */
- #define CMD55 (55) /* APP_CMD */
- #define CMD58 (58) /* READ_OCR */
- /* Exported functions ------------------------------------------------------- */
- rt_err_t efm_spiSd_init(void);
- void efm_spiSd_deinit(void);
- #endif /* __DEV_SDCARD_H__ */
|