mbed library sources. Supersedes mbed-src.

Fork of mbed-dev by mbed official

Committer:
<>
Date:
Fri Oct 28 11:17:30 2016 +0100
Revision:
149:156823d33999
This updates the lib to the mbed lib v128

NOTE: This release includes a restructuring of the file and directory locations and thus some
include paths in your code may need updating accordingly.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
<> 149:156823d33999 1 /**************************************************************************//**
<> 149:156823d33999 2 * @file sd.h
<> 149:156823d33999 3 * @version V1.00
<> 149:156823d33999 4 * $Revision: 12 $
<> 149:156823d33999 5 * $Date: 14/11/04 10:10a $
<> 149:156823d33999 6 * @brief NUC472/NUC442 SD driver header file
<> 149:156823d33999 7 *
<> 149:156823d33999 8 * @note
<> 149:156823d33999 9 * Copyright (C) 2013 Nuvoton Technology Corp. All rights reserved.
<> 149:156823d33999 10 *****************************************************************************/
<> 149:156823d33999 11 #include <stdio.h>
<> 149:156823d33999 12
<> 149:156823d33999 13 #ifndef __SD_H__
<> 149:156823d33999 14 #define __SD_H__
<> 149:156823d33999 15
<> 149:156823d33999 16 /** @addtogroup NUC472_442_Device_Driver NUC472/NUC442 Device Driver
<> 149:156823d33999 17 @{
<> 149:156823d33999 18 */
<> 149:156823d33999 19
<> 149:156823d33999 20 /** @addtogroup NUC472_442_SD_Driver SD Driver
<> 149:156823d33999 21 @{
<> 149:156823d33999 22 */
<> 149:156823d33999 23
<> 149:156823d33999 24
<> 149:156823d33999 25 /** @addtogroup NUC472_442_SD_EXPORTED_CONSTANTS SD Exported Constants
<> 149:156823d33999 26 @{
<> 149:156823d33999 27 */
<> 149:156823d33999 28
<> 149:156823d33999 29 #define SD_CARD 0
<> 149:156823d33999 30 #define SD_ERR_ID 0xFFFF0100
<> 149:156823d33999 31
<> 149:156823d33999 32 #define SD_TIMEOUT (SD_ERR_ID|0x01)
<> 149:156823d33999 33 #define SD_NO_MEMORY (SD_ERR_ID|0x02)
<> 149:156823d33999 34
<> 149:156823d33999 35 //-- function return value
<> 149:156823d33999 36 #define Successful 0
<> 149:156823d33999 37 #define Fail 1
<> 149:156823d33999 38
<> 149:156823d33999 39 //--- define type of SD card or MMC
<> 149:156823d33999 40 #define SD_TYPE_UNKNOWN 0
<> 149:156823d33999 41 #define SD_TYPE_SD_HIGH 1
<> 149:156823d33999 42 #define SD_TYPE_SD_LOW 2
<> 149:156823d33999 43 #define SD_TYPE_MMC 3
<> 149:156823d33999 44 #define SD_TYPE_EMMC 4
<> 149:156823d33999 45
<> 149:156823d33999 46 /* SD error */
<> 149:156823d33999 47 #define SD_NO_SD_CARD (SD_ERR_ID|0x10)
<> 149:156823d33999 48 #define SD_ERR_DEVICE (SD_ERR_ID|0x11)
<> 149:156823d33999 49 #define SD_INIT_TIMEOUT (SD_ERR_ID|0x12)
<> 149:156823d33999 50 #define SD_SELECT_ERROR (SD_ERR_ID|0x13)
<> 149:156823d33999 51 #define SD_WRITE_PROTECT (SD_ERR_ID|0x14)
<> 149:156823d33999 52 #define SD_INIT_ERROR (SD_ERR_ID|0x15)
<> 149:156823d33999 53 #define SD_CRC7_ERROR (SD_ERR_ID|0x16)
<> 149:156823d33999 54 #define SD_CRC16_ERROR (SD_ERR_ID|0x17)
<> 149:156823d33999 55 #define SD_CRC_ERROR (SD_ERR_ID|0x18)
<> 149:156823d33999 56 #define SD_CMD8_ERROR (SD_ERR_ID|0x19)
<> 149:156823d33999 57
<> 149:156823d33999 58 #define SD_FREQ 12000
<> 149:156823d33999 59 #define SDHC_FREQ 12000
<> 149:156823d33999 60
<> 149:156823d33999 61 #define STOR_STRING_LEN 32
<> 149:156823d33999 62
<> 149:156823d33999 63 #define SD_PORT0 (1 << 0) /*!< Card select SD0 \hideinitializer */
<> 149:156823d33999 64 #define SD_PORT1 (1 << 2) /*!< Card select SD1 \hideinitializer */
<> 149:156823d33999 65
<> 149:156823d33999 66 #define CardDetect_From_GPIO (1 << 8) /*!< Card detection pin is GPIO \hideinitializer */
<> 149:156823d33999 67 #define CardDetect_From_DAT3 (1 << 9) /*!< Card detection pin is DAT3 \hideinitializer */
<> 149:156823d33999 68
<> 149:156823d33999 69 /*@}*/ /* end of group NUC472_442_SD_EXPORTED_CONSTANTS */
<> 149:156823d33999 70
<> 149:156823d33999 71 /** @addtogroup NUC472_442_SD_EXPORTED_TYPEDEF SD Exported Type Defines
<> 149:156823d33999 72 @{
<> 149:156823d33999 73 */
<> 149:156823d33999 74 typedef struct SD_info_t {
<> 149:156823d33999 75 uint32_t CardType; /*!< SDHC, SD, or MMC */
<> 149:156823d33999 76 uint32_t RCA; /*!< relative card address */
<> 149:156823d33999 77 uint8_t IsCardInsert; /*!< card insert state */
<> 149:156823d33999 78 } SD_INFO_T;
<> 149:156823d33999 79
<> 149:156823d33999 80 /* we allocate one of these for every device that we remember */
<> 149:156823d33999 81 typedef struct disk_data_t {
<> 149:156823d33999 82 struct disk_data_t *next; /*!< next device */
<> 149:156823d33999 83
<> 149:156823d33999 84 /* information about the device -- always good */
<> 149:156823d33999 85 unsigned int totalSectorN; /*!< total sector number */
<> 149:156823d33999 86 unsigned int diskSize; /*!< disk size in Kbytes */
<> 149:156823d33999 87 int sectorSize; /*!< sector size in bytes */
<> 149:156823d33999 88 char vendor[STOR_STRING_LEN]; /*!< SD card vendor */
<> 149:156823d33999 89 char product[STOR_STRING_LEN]; /*!< *SD card product id */
<> 149:156823d33999 90 char serial[STOR_STRING_LEN]; /*!< SD card serial number */
<> 149:156823d33999 91 } DISK_DATA_T;
<> 149:156823d33999 92
<> 149:156823d33999 93 /*@}*/ /* end of group NUC472_442_SD_EXPORTED_TYPEDEF */
<> 149:156823d33999 94
<> 149:156823d33999 95 /// @cond HIDDEN_SYMBOLS
<> 149:156823d33999 96 extern SD_INFO_T SD0;
<> 149:156823d33999 97 extern SD_INFO_T SD1;
<> 149:156823d33999 98 /// @endcond HIDDEN_SYMBOLS
<> 149:156823d33999 99
<> 149:156823d33999 100 /** @addtogroup NUC472_442_SD_EXPORTED_FUNCTIONS SD Exported Functions
<> 149:156823d33999 101 @{
<> 149:156823d33999 102 */
<> 149:156823d33999 103
<> 149:156823d33999 104
<> 149:156823d33999 105
<> 149:156823d33999 106
<> 149:156823d33999 107 /**
<> 149:156823d33999 108 * @brief Enable specified interrupt.
<> 149:156823d33999 109 *
<> 149:156823d33999 110 * @param[in] u32IntMask Interrupt type mask:
<> 149:156823d33999 111 * \ref SDH_INTEN_BLKDIEN_Msk / \ref SDH_INTEN_CRCIEN_Msk / \ref SDH_INTEN_CDIEN0_Msk / \ref SDH_INTEN_CDIEN1_Msk /
<> 149:156823d33999 112 * \ref SDH_INTEN_CDSRC0_Msk / \ref SDH_INTEN_CDSRC1_Msk / \ref SDH_INTEN_RTOIEN_Msk / \ref SDH_INTEN_DITOIEN_Msk /
<> 149:156823d33999 113 * \ref SDH_INTEN_WKIEN_Msk
<> 149:156823d33999 114 *
<> 149:156823d33999 115 * @return None.
<> 149:156823d33999 116 * \hideinitializer
<> 149:156823d33999 117 */
<> 149:156823d33999 118 #define SD_ENABLE_INT(u32IntMask) (SD->INTEN |= (u32IntMask))
<> 149:156823d33999 119
<> 149:156823d33999 120 /**
<> 149:156823d33999 121 * @brief Disable specified interrupt.
<> 149:156823d33999 122 *
<> 149:156823d33999 123 * @param[in] u32IntMask Interrupt type mask:
<> 149:156823d33999 124 * \ref SDH_INTEN_BLKDIEN_Msk / \ref SDH_INTEN_CRCIEN_Msk / \ref SDH_INTEN_CDIEN0_Msk / \ref SDH_INTEN_CDIEN1_Msk /
<> 149:156823d33999 125 * \ref SDH_INTEN_SDHOST0IEN_Msk / \ref SDH_INTEN_SDHOST1IEN_Msk / \ref SDH_INTEN_RTOIEN_Msk / \ref SDH_INTEN_DITOIEN_Msk /
<> 149:156823d33999 126 * \ref SDH_INTEN_WKIEN_Msk / \ref SDH_INTEN_CDSRC0_Msk / \ref SDH_INTEN_CDSRC1_Msk
<> 149:156823d33999 127 *
<> 149:156823d33999 128 * @return None.
<> 149:156823d33999 129 * \hideinitializer
<> 149:156823d33999 130 */
<> 149:156823d33999 131 #define SD_DISABLE_INT(u32IntMask) (SD->INTEN &= ~(u32IntMask))
<> 149:156823d33999 132
<> 149:156823d33999 133 /**
<> 149:156823d33999 134 * @brief Get specified interrupt flag/status.
<> 149:156823d33999 135 *
<> 149:156823d33999 136 * @param[in] u32IntMask Interrupt type mask:
<> 149:156823d33999 137 * \ref SDH_INTSTS_BLKDIF_Msk / \ref SDH_INTSTS_CRCIF_Msk / \ref SDH_INTSTS_CRC7_Msk /
<> 149:156823d33999 138 * \ref SDH_INTSTS_CRC16_Msk / \ref SDH_INTSTS_CRCSTS_Msk / \ref SDH_INTSTS_DAT0STS_Msk / \ref SDH_INTSTS_CDIF0_Msk /
<> 149:156823d33999 139 * \ref SDH_INTSTS_CDIF1_Msk / \ref SDH_INTSTS_SDHOST0IF_Msk / \ref SDH_INTSTS_SDHOST1IF_Msk / \ref SDH_INTSTS_RTOIF_Msk /
<> 149:156823d33999 140 * \ref SDH_INTSTS_DINTOIF_Msk / \ref SDH_INTSTS_CDSTS0_Msk / \ref SDH_INTSTS_CDSTS1_Msk / \ref SDH_INTSTS_DAT1STS_Msk
<> 149:156823d33999 141 *
<> 149:156823d33999 142 *
<> 149:156823d33999 143 * @return 0 = The specified interrupt is not happened.
<> 149:156823d33999 144 * 1 = The specified interrupt is happened.
<> 149:156823d33999 145 * \hideinitializer
<> 149:156823d33999 146 */
<> 149:156823d33999 147 #define SD_GET_INT_FLAG(u32IntMask) ((SD->INTSTS & (u32IntMask))?1:0)
<> 149:156823d33999 148
<> 149:156823d33999 149
<> 149:156823d33999 150 /**
<> 149:156823d33999 151 * @brief Clear specified interrupt flag/status.
<> 149:156823d33999 152 *
<> 149:156823d33999 153 * @param[in] u32IntMask Interrupt type mask:
<> 149:156823d33999 154 * \ref SDH_INTSTS_BLKDIF_Msk / \ref SDH_INTSTS_CRCIF_Msk / \ref SDH_INTSTS_CDIF0_Msk /
<> 149:156823d33999 155 * \ref SDH_INTSTS_CDIF1_Msk / \ref SDH_INTSTS_SDHOST0IF_Msk / \ref SDH_INTSTS_SDHOST1IF_Msk /
<> 149:156823d33999 156 * \ref SDH_INTSTS_RTOIF_Msk / \ref SDH_INTSTS_DINTOIF_Msk
<> 149:156823d33999 157 *
<> 149:156823d33999 158 *
<> 149:156823d33999 159 * @return None.
<> 149:156823d33999 160 * \hideinitializer
<> 149:156823d33999 161 */
<> 149:156823d33999 162 #define SD_CLR_INT_FLAG(u32IntMask) (SD->INTSTS = u32IntMask)
<> 149:156823d33999 163
<> 149:156823d33999 164
<> 149:156823d33999 165 /**
<> 149:156823d33999 166 * @brief Check SD Card inserted or removed.
<> 149:156823d33999 167 *
<> 149:156823d33999 168 * @param[in] u32CardNum Select SD0 or SD1. ( \ref SD_PORT0 / \ref SD_PORT1)
<> 149:156823d33999 169 *
<> 149:156823d33999 170 * @return 1: Card inserted.
<> 149:156823d33999 171 * 0: Card removed.
<> 149:156823d33999 172 * \hideinitializer
<> 149:156823d33999 173 */
<> 149:156823d33999 174 #define SD_IS_CARD_PRESENT(u32CardNum) ((u32CardNum & (SD_PORT0))?(SD0.IsCardInsert):(SD1.IsCardInsert))
<> 149:156823d33999 175
<> 149:156823d33999 176 /**
<> 149:156823d33999 177 * @brief Get SD Card capacity.
<> 149:156823d33999 178 *
<> 149:156823d33999 179 * @param[in] u32CardNum Select SD0 or SD1. ( \ref SD_PORT0 / \ref SD_PORT1)
<> 149:156823d33999 180 *
<> 149:156823d33999 181 * @return SD Card capacity. (unit: KByte)
<> 149:156823d33999 182 * \hideinitializer
<> 149:156823d33999 183 */
<> 149:156823d33999 184 #define SD_GET_CARD_CAPACITY(u32CardNum) ((u32CardNum & (SD_PORT0))?(SD_DiskInfo0.diskSize):(SD_DiskInfo1.diskSize))
<> 149:156823d33999 185
<> 149:156823d33999 186
<> 149:156823d33999 187 void SD_Open(uint32_t u32CardDetSrc);
<> 149:156823d33999 188 void SD_Probe(uint32_t u32CardNum);
<> 149:156823d33999 189 uint32_t SD_Read(uint32_t u32CardNum, uint8_t *pu8BufAddr, uint32_t u32StartSec, uint32_t u32SecCount);
<> 149:156823d33999 190 uint32_t SD_Write(uint32_t u32CardNum, uint8_t *pu8BufAddr, uint32_t u32StartSec, uint32_t u32SecCount);
<> 149:156823d33999 191
<> 149:156823d33999 192
<> 149:156823d33999 193
<> 149:156823d33999 194 /*@}*/ /* end of group NUC472_442_ADC_EXPORTED_FUNCTIONS */
<> 149:156823d33999 195
<> 149:156823d33999 196 /*@}*/ /* end of group NUC472_442_ADC_Driver */
<> 149:156823d33999 197
<> 149:156823d33999 198 /*@}*/ /* end of group NUC472_442_Device_Driver */
<> 149:156823d33999 199
<> 149:156823d33999 200 #endif //end of __SD_H__
<> 149:156823d33999 201 /*** (C) COPYRIGHT 2013 Nuvoton Technology Corp. ***/