M480 BSP V3.05.006
The Board Support Package for M480 Series
sdh.h
Go to the documentation of this file.
1/**************************************************************************/
9#include <stdio.h>
10
11#ifndef __SDH_H__
12#define __SDH_H__
13
14#ifdef __cplusplus
15extern "C"
16{
17#endif
18
19
33#define SDH_ERR_ID 0xFFFF0100ul
35#define SDH_TIMEOUT (SDH_ERR_ID|0x01ul)
36#define SDH_NO_MEMORY (SDH_ERR_ID|0x02ul)
38/*-- function return value */
39#define Successful 0ul
40#define Fail 1ul
42/*--- define type of SD card or MMC */
43#define SDH_TYPE_UNKNOWN 0ul
44#define SDH_TYPE_SD_HIGH 1ul
45#define SDH_TYPE_SD_LOW 2ul
46#define SDH_TYPE_MMC 3ul
47#define SDH_TYPE_EMMC 4ul
49/* SD error */
50#define SDH_NO_SD_CARD (SDH_ERR_ID|0x10ul)
51#define SDH_ERR_DEVICE (SDH_ERR_ID|0x11ul)
52#define SDH_INIT_TIMEOUT (SDH_ERR_ID|0x12ul)
53#define SDH_SELECT_ERROR (SDH_ERR_ID|0x13ul)
54#define SDH_WRITE_PROTECT (SDH_ERR_ID|0x14ul)
55#define SDH_INIT_ERROR (SDH_ERR_ID|0x15ul)
56#define SDH_CRC7_ERROR (SDH_ERR_ID|0x16ul)
57#define SDH_CRC16_ERROR (SDH_ERR_ID|0x17ul)
58#define SDH_CRC_ERROR (SDH_ERR_ID|0x18ul)
59#define SDH_CMD8_ERROR (SDH_ERR_ID|0x19ul)
61#define MMC_FREQ 20000ul
62#define SD_FREQ 25000ul
63#define SDHC_FREQ 50000ul
65#define SD_PORT0 (1 << 0)
66#define SD_PORT1 (1 << 2)
67#define CardDetect_From_GPIO (1ul << 8)
68#define CardDetect_From_DAT3 (1ul << 9)
70/* SDH Define Error Code */
71#define SDH_TIMEOUT_CNT 6000000
72#define SDH_OK ( 0L)
73#define SDH_ERR_FAIL (-1L)
74#define SDH_ERR_TIMEOUT (-2L) /* end of group SDH_EXPORTED_CONSTANTS */
77
81typedef struct SDH_info_t
82{
83 unsigned char IsCardInsert;
84 unsigned char R3Flag;
85 unsigned char R7Flag;
86 unsigned char volatile DataReadyFlag;
87 unsigned int CardType;
88 unsigned int RCA;
89 unsigned int totalSectorN;
90 unsigned int diskSize;
92 unsigned char *dmabuf;
93 int32_t i32ErrCode;
94} SDH_INFO_T; /* end of group SDH_EXPORTED_TYPEDEF */
97
99extern SDH_INFO_T SD0, SD1;
100extern int32_t g_SDH_i32ErrCode;
119#define SDH_ENABLE_INT(sdh, u32IntMask) ((sdh)->INTEN |= (u32IntMask))
120
132#define SDH_DISABLE_INT(sdh, u32IntMask) ((sdh)->INTEN &= ~(u32IntMask))
133
150#define SDH_GET_INT_FLAG(sdh, u32IntMask) (((sdh)->INTSTS & (u32IntMask))?1:0)
151
152
165#define SDH_CLR_INT_FLAG(sdh, u32IntMask) ((sdh)->INTSTS = (u32IntMask))
166
167
177#define SDH_IS_CARD_PRESENT(sdh) (((sdh) == SDH0)? SD0.IsCardInsert : SD1.IsCardInsert)
178
187#define SDH_GET_CARD_CAPACITY(sdh) (((sdh) == SDH0)? SD0.diskSize : SD1.diskSize)
188
189
190void SDH_Open(SDH_T *sdh, uint32_t u32CardDetSrc);
191uint32_t SDH_Probe(SDH_T *sdh);
192int32_t SDH_Read(SDH_T *sdh, uint8_t *pu8BufAddr, uint32_t u32StartSec, uint32_t u32SecCount);
193int32_t SDH_Write(SDH_T *sdh, uint8_t *pu8BufAddr, uint32_t u32StartSec, uint32_t u32SecCount);
194
196int32_t SDH_Open_Disk(SDH_T *sdh, uint32_t u32CardDetSrc);
198
199 /* end of group SDH_EXPORTED_FUNCTIONS */
201 /* end of group SDH_Driver */
203 /* end of group Standard_Driver */
205
206#ifdef __cplusplus
207}
208#endif
209
210#endif /* __SDH_H__ */
211/*** (C) COPYRIGHT 2016 Nuvoton Technology Corp. ***/
unsigned int RCA
Definition: sdh.h:88
int32_t i32ErrCode
Definition: sdh.h:93
int32_t SDH_CardDetection(SDH_T *sdh)
void SDH_Close_Disk(SDH_T *sdh)
uint32_t SDH_Probe(SDH_T *sdh)
This function use to initial SD card.
Definition: sdh.c:1216
unsigned char volatile DataReadyFlag
Definition: sdh.h:86
int32_t SDH_Read(SDH_T *sdh, uint8_t *pu8BufAddr, uint32_t u32StartSec, uint32_t u32SecCount)
This function use to read data from SD card.
Definition: sdh.c:1266
int sectorSize
Definition: sdh.h:91
unsigned int diskSize
Definition: sdh.h:90
int32_t SDH_Open_Disk(SDH_T *sdh, uint32_t u32CardDetSrc)
unsigned char IsCardInsert
Definition: sdh.h:83
unsigned char R3Flag
Definition: sdh.h:84
unsigned int totalSectorN
Definition: sdh.h:89
unsigned char R7Flag
Definition: sdh.h:85
void SDH_Open(SDH_T *sdh, uint32_t u32CardDetSrc)
This function use to reset SD function and select card detection source and pin.
Definition: sdh.c:1106
unsigned int CardType
Definition: sdh.h:87
int32_t SDH_Write(SDH_T *sdh, uint8_t *pu8BufAddr, uint32_t u32StartSec, uint32_t u32SecCount)
This function use to write data to SD card.
Definition: sdh.c:1446
unsigned char * dmabuf
Definition: sdh.h:92
struct SDH_info_t SDH_INFO_T
Definition: sdh_reg.h:27
Definition: sdh.h:82