Select one of the symbols to view example projects that use it.
 
Outline
#define __STM32_ADAFRUIT_SD_H
#include <stdint.h>
#define __IO
<anonymous enum>
struct_v1
struct_v2
SD_CSD
SD_CID
SD_CardInfo
#define SD_BLOCK_SIZE
#define SD_PRESENT
#define SD_NOT_PRESENT
#define SD_DATATIMEOUT
#define BSP_SD_CardInfo
BSP_SD_Init();
BSP_SD_ReadBlocks(uint32_t *, uint32_t, uint32_t, uint32_t);
BSP_SD_WriteBlocks(uint32_t *, uint32_t, uint32_t, uint32_t);
BSP_SD_Erase(uint32_t, uint32_t);
BSP_SD_GetCardState();
BSP_SD_GetCardInfo(SD_CardInfo *);
SD_IO_Init();
SD_IO_CSState(uint8_t);
SD_IO_WriteReadData(const uint8_t *, uint8_t *, uint16_t);
SD_IO_WriteByte(uint8_t);
HAL_Delay(uint32_t);
Files
loading...
CodeScopeSTM32 Libraries and SamplesAdafruit_Shieldstm32_adafruit_sd.h
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
/** ****************************************************************************** * @file stm32_adafruit_sd.h * @author MCD Application Team * @brief This file contains the common defines and functions prototypes for * the stm32_adafruit_sd.c driver. ****************************************************************************** * @attention * * Copyright (c) 2016 STMicroelectronics. * All rights reserved. * * This software is licensed under terms that can be found in the LICENSE file * in the root directory of this software component. * If no LICENSE file comes with this software, it is provided AS-IS. * ****************************************************************************** *//* ... */ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef __STM32_ADAFRUIT_SD_H #define __STM32_ADAFRUIT_SD_H #ifdef __cplusplus extern "C" { #endif /* Includes ------------------------------------------------------------------*/ #include <stdint.h> /** @addtogroup BSP * @{ *//* ... */ #define __IO volatile /** @addtogroup STM32_ADAFRUIT * @{ *//* ... */ /** @defgroup STM32_ADAFRUIT_SD * @{ *//* ... */ /** @defgroup STM32_ADAFRUIT_SD_Exported_Types * @{ *//* ... */ /** * @brief SD status structure definition *//* ... */ enum { BSP_SD_OK = 0x00, MSD_OK = 0x00, BSP_SD_ERROR = 0x01, BSP_SD_TIMEOUT ...}; typedef struct { uint8_t Reserved1:2; /* Reserved */ uint16_t DeviceSize:12; /* Device Size */ uint8_t MaxRdCurrentVDDMin:3; /* Max. read current @ VDD min */ uint8_t MaxRdCurrentVDDMax:3; /* Max. read current @ VDD max */ uint8_t MaxWrCurrentVDDMin:3; /* Max. write current @ VDD min */ uint8_t MaxWrCurrentVDDMax:3; /* Max. write current @ VDD max */ uint8_t DeviceSizeMul:3; /* Device size multiplier */ ...} struct_v1; typedef struct { uint8_t Reserved1:6; /* Reserved */ uint32_t DeviceSize:22; /* Device Size */ uint8_t Reserved2:1; /* Reserved */ ...} struct_v2; /** * @brief Card Specific Data: CSD Register *//* ... */ typedef struct { /* Header part */ uint8_t CSDStruct:2; /* CSD structure */ uint8_t Reserved1:6; /* Reserved */ uint8_t TAAC:8; /* Data read access-time 1 */ uint8_t NSAC:8; /* Data read access-time 2 in CLK cycles */ uint8_t MaxBusClkFrec:8; /* Max. bus clock frequency */ uint16_t CardComdClasses:12; /* Card command classes */ uint8_t RdBlockLen:4; /* Max. read data block length */ uint8_t PartBlockRead:1; /* Partial blocks for read allowed */ uint8_t WrBlockMisalign:1; /* Write block misalignment */ uint8_t RdBlockMisalign:1; /* Read block misalignment */ uint8_t DSRImpl:1; /* DSR implemented */ /* v1 or v2 struct */ union csd_version { struct_v1 v1; struct_v2 v2; ...} version; uint8_t EraseSingleBlockEnable:1; /* Erase single block enable */ uint8_t EraseSectorSize:7; /* Erase group size multiplier */ uint8_t WrProtectGrSize:7; /* Write protect group size */ uint8_t WrProtectGrEnable:1; /* Write protect group enable */ uint8_t Reserved2:2; /* Reserved */ uint8_t WrSpeedFact:3; /* Write speed factor */ uint8_t MaxWrBlockLen:4; /* Max. write data block length */ uint8_t WriteBlockPartial:1; /* Partial blocks for write allowed */ uint8_t Reserved3:5; /* Reserved */ uint8_t FileFormatGrouop:1; /* File format group */ uint8_t CopyFlag:1; /* Copy flag (OTP) */ uint8_t PermWrProtect:1; /* Permanent write protection */ uint8_t TempWrProtect:1; /* Temporary write protection */ uint8_t FileFormat:2; /* File Format */ uint8_t Reserved4:2; /* Reserved */ uint8_t crc:7; /* Reserved */ uint8_t Reserved5:1; /* always 1*/ ...} SD_CSD; /** * @brief Card Identification Data: CID Register *//* ... */ typedef struct { uint8_t ManufacturerID; /* ManufacturerID */ uint16_t OEM_AppliID; /* OEM/Application ID */ uint32_t ProdName1; /* Product Name part1 */ uint8_t ProdName2; /* Product Name part2*/ uint8_t ProdRev; /* Product Revision */ uint32_t ProdSN; /* Product Serial Number */ uint8_t Reserved1; /* Reserved1 */ uint16_t ManufactDate; /* Manufacturing Date */ uint8_t CID_CRC; /* CID CRC */ uint8_t Reserved2; /* always 1 */ ...} SD_CID; /** * @brief SD Card information *//* ... */ typedef struct { SD_CSD Csd; SD_CID Cid; uint32_t CardCapacity; /*!< Card Capacity */ uint32_t CardBlockSize; /*!< Card Block Size */ uint32_t LogBlockNbr; /*!< Specifies the Card logical Capacity in blocks */ uint32_t LogBlockSize; /*!< Specifies logical block size in bytes */ ...} SD_CardInfo; /** * @} *//* ... */ /** @defgroup STM32_ADAFRUIT_SPI_SD_Exported_Constants * @{ *//* ... */ /** * @brief Block Size *//* ... */ #define SD_BLOCK_SIZE 0x200 /** * @brief SD detection on its memory slot *//* ... */ #define SD_PRESENT ((uint8_t)0x01) #define SD_NOT_PRESENT ((uint8_t)0x00) #define SD_DATATIMEOUT ((uint32_t)100000000) /** * @brief SD Card information structure *//* ... */ #define BSP_SD_CardInfo SD_CardInfo 5 defines /** * @} *//* ... */ /** @defgroup STM32_ADAFRUIT_SD_Exported_Macro * @{ *//* ... */ /** * @} *//* ... */ /** @defgroup STM32_ADAFRUIT_SD_Exported_Functions * @{ *//* ... */ uint8_t BSP_SD_Init(void); uint8_t BSP_SD_ReadBlocks(uint32_t *pData, uint32_t ReadAddr, uint32_t NumOfBlocks, uint32_t Timeout); uint8_t BSP_SD_WriteBlocks(uint32_t *pData, uint32_t WriteAddr, uint32_t NumOfBlocks, uint32_t Timeout); uint8_t BSP_SD_Erase(uint32_t StartAddr, uint32_t EndAddr); uint8_t BSP_SD_GetCardState(void); uint8_t BSP_SD_GetCardInfo(SD_CardInfo *pCardInfo); /* Link functions for SD Card peripheral*/ void SD_IO_Init(void); void SD_IO_CSState(uint8_t state); void SD_IO_WriteReadData(const uint8_t *DataIn, uint8_t *DataOut, uint16_t DataLength); uint8_t SD_IO_WriteByte(uint8_t Data); /* Link function for HAL delay */ void HAL_Delay(__IO uint32_t Delay); #ifdef __cplusplus }extern "C" { ... } #endif /* ... */ #endif /* __STM32_ADAFRUIT_SD_H */ /** * @} *//* ... */ /** * @} *//* ... */ /** * @} *//* ... */ /** * @} *//* ... */