39 #ifndef __SENSORTILE_SD_H 40 #define __SENSORTILE_SD_H 70 #define MSD_ERROR 0x01 78 SD_IN_IDLE_STATE = (0x01),
79 SD_ERASE_RESET = (0x02),
80 SD_ILLEGAL_COMMAND = (0x04),
81 SD_COM_CRC_ERROR = (0x08),
82 SD_ERASE_SEQUENCE_ERROR = (0x10),
83 SD_ADDRESS_ERROR = (0x20),
84 SD_PARAMETER_ERROR = (0x40),
85 SD_RESPONSE_FAILURE = (0xFF),
91 SD_DATA_CRC_ERROR = (0x0B),
92 SD_DATA_WRITE_ERROR = (0x0D),
93 SD_DATA_OTHER_ERROR = (0xFF)
101 __IO uint8_t CSDStruct;
102 __IO uint8_t SysSpecVersion;
103 __IO uint8_t Reserved1;
106 __IO uint8_t MaxBusClkFrec;
107 __IO uint16_t CardComdClasses;
108 __IO uint8_t RdBlockLen;
109 __IO uint8_t PartBlockRead;
110 __IO uint8_t WrBlockMisalign;
111 __IO uint8_t RdBlockMisalign;
112 __IO uint8_t DSRImpl;
113 __IO uint8_t Reserved2;
114 __IO uint32_t DeviceSize;
115 __IO uint8_t MaxRdCurrentVDDMin;
116 __IO uint8_t MaxRdCurrentVDDMax;
117 __IO uint8_t MaxWrCurrentVDDMin;
118 __IO uint8_t MaxWrCurrentVDDMax;
119 __IO uint8_t DeviceSizeMul;
120 __IO uint8_t EraseGrSize;
121 __IO uint8_t EraseGrMul;
122 __IO uint8_t WrProtectGrSize;
123 __IO uint8_t WrProtectGrEnable;
124 __IO uint8_t ManDeflECC;
125 __IO uint8_t WrSpeedFact;
126 __IO uint8_t MaxWrBlockLen;
127 __IO uint8_t WriteBlockPaPartial;
128 __IO uint8_t Reserved3;
129 __IO uint8_t ContentProtectAppli;
130 __IO uint8_t FileFormatGrouop;
131 __IO uint8_t CopyFlag;
132 __IO uint8_t PermWrProtect;
133 __IO uint8_t TempWrProtect;
134 __IO uint8_t FileFormat;
136 __IO uint8_t CSD_CRC;
137 __IO uint8_t Reserved4;
145 __IO uint8_t ManufacturerID;
146 __IO uint16_t OEM_AppliID;
147 __IO uint32_t ProdName1;
148 __IO uint8_t ProdName2;
149 __IO uint8_t ProdRev;
150 __IO uint32_t ProdSN;
151 __IO uint8_t Reserved1;
152 __IO uint16_t ManufactDate;
153 __IO uint8_t CID_CRC;
154 __IO uint8_t Reserved2;
164 uint32_t CardCapacity;
165 uint32_t CardBlockSize;
182 #define STD_CAPACITY_SD_CARD_V1_1 ((uint32_t)0x00000000) 183 #define STD_CAPACITY_SD_CARD_V2_0 ((uint32_t)0x00000001) 184 #define HIGH_CAPACITY_SD_CARD ((uint32_t)0x00000002) 191 #define SD_START_DATA_SINGLE_BLOCK_READ 0xFE 192 #define SD_START_DATA_MULTIPLE_BLOCK_READ 0xFE 193 #define SD_START_DATA_SINGLE_BLOCK_WRITE 0xFE 194 #define SD_START_DATA_MULTIPLE_BLOCK_WRITE 0xFD 195 #define SD_STOP_DATA_MULTIPLE_BLOCK_WRITE 0xFD 200 #define SD_PRESENT ((uint8_t)0x01) 201 #define SD_NOT_PRESENT ((uint8_t)0x00) 206 #define SD_CMD_GO_IDLE_STATE ((uint8_t)0) 207 #define SD_CMD_SEND_OP_COND ((uint8_t)1) 208 #define SD_CMD_ALL_SEND_CID ((uint8_t)2) 209 #define SD_CMD_SET_REL_ADDR ((uint8_t)3) 210 #define SD_CMD_SET_DSR ((uint8_t)4) 211 #define SD_CMD_SDMMC_SEN_OP_COND ((uint8_t)5) 213 #define SD_CMD_HS_SWITCH ((uint8_t)6) 214 #define SD_CMD_SEL_DESEL_CARD ((uint8_t)7) 215 #define SD_CMD_HS_SEND_EXT_CSD ((uint8_t)8) 217 #define SD_CMD_SEND_CSD ((uint8_t)9) 218 #define SD_CMD_SEND_CID ((uint8_t)10) 219 #define SD_CMD_READ_DAT_UNTIL_STOP ((uint8_t)11) 220 #define SD_CMD_STOP_TRANSMISSION ((uint8_t)12) 221 #define SD_CMD_SEND_STATUS ((uint8_t)13) 222 #define SD_CMD_HS_BUSTEST_READ ((uint8_t)14) 223 #define SD_CMD_GO_INACTIVE_STATE ((uint8_t)15) 224 #define SD_CMD_SET_BLOCKLEN ((uint8_t)16) 227 #define SD_CMD_READ_SINGLE_BLOCK ((uint8_t)17) 229 #define SD_CMD_READ_MULT_BLOCK ((uint8_t)18) 231 #define SD_CMD_HS_BUSTEST_WRITE ((uint8_t)19) 232 #define SD_CMD_WRITE_DAT_UNTIL_STOP ((uint8_t)20) 233 #define SD_CMD_SET_BLOCK_COUNT ((uint8_t)23) 234 #define SD_CMD_WRITE_SINGLE_BLOCK ((uint8_t)24) 236 #define SD_CMD_WRITE_MULT_BLOCK ((uint8_t)25) 237 #define SD_CMD_PROG_CID ((uint8_t)26) 238 #define SD_CMD_PROG_CSD ((uint8_t)27) 239 #define SD_CMD_SET_WRITE_PROT ((uint8_t)28) 240 #define SD_CMD_CLR_WRITE_PROT ((uint8_t)29) 241 #define SD_CMD_SEND_WRITE_PROT ((uint8_t)30) 242 #define SD_CMD_SD_ERASE_GRP_START ((uint8_t)32) 243 #define SD_CMD_SD_ERASE_GRP_END ((uint8_t)33) 244 #define SD_CMD_ERASE_GRP_START ((uint8_t)35) 246 #define SD_CMD_ERASE_GRP_END ((uint8_t)36) 248 #define SD_CMD_ERASE ((uint8_t)38) 249 #define SD_CMD_FAST_IO ((uint8_t)39) 250 #define SD_CMD_GO_IRQ_STATE ((uint8_t)40) 251 #define SD_CMD_LOCK_UNLOCK ((uint8_t)42) 253 #define SD_CMD_APP_CMD ((uint8_t)55) 255 #define SD_CMD_GEN_CMD ((uint8_t)56) 257 #define SD_CMD_SDMMC_READ_OCR ((uint8_t)58) 258 #define SD_CMD_NO_CMD ((uint8_t)64) 265 #define SD_CMD_APP_SD_SET_BUSWIDTH ((uint8_t)6) 267 #define SD_CMD_SD_APP_STATUS ((uint8_t)13) 268 #define SD_CMD_SD_APP_SEND_NUM_WRITE_BLOCKS ((uint8_t)22) 270 #define SD_CMD_SD_APP_OP_COND ((uint8_t)41) 272 #define SD_CMD_SD_APP_SET_CLR_CARD_DETECT ((uint8_t)42) 273 #define SD_CMD_SD_APP_SEND_SCR ((uint8_t)51) 274 #define SD_CMD_SDMMC_RW_DIRECT ((uint8_t)52) 275 #define SD_CMD_SDMMC_RW_EXTENDED ((uint8_t)53) 292 uint8_t BSP_SD_Init(void); 293 uint8_t BSP_SD_IsDetected(
void);
294 uint8_t
BSP_SD_ReadBlocks(uint32_t* p32Data, uint64_t Sector, uint16_t BlockSize, uint32_t NumberOfBlocks);
295 uint8_t
BSP_SD_WriteBlocks(uint32_t* p32Data, uint64_t Sector, uint16_t BlockSize, uint32_t NumberOfBlocks);
296 uint8_t
BSP_SD_Erase(uint32_t StartAddr, uint32_t EndAddr);
306 HAL_StatusTypeDef
SD_IO_WriteCmd(uint8_t Cmd, uint32_t Arg, uint8_t Crc, uint8_t Response);
uint8_t BSP_SD_WriteBlocks(uint32_t *p32Data, uint64_t Sector, uint16_t BlockSize, uint32_t NumberOfBlocks)
Writes block(s) to a specified address in an SD card, in polling mode.
void SD_IO_WriteDMA(uint8_t *pData, uint16_t Size)
Writes a block by DMA on the SD.
uint8_t SD_IO_ReadByte(void)
Reads a byte from the SD.
SD reponses and error flags.
uint8_t BSP_SD_Erase(uint32_t StartAddr, uint32_t EndAddr)
Erases the specified memory area of the given SD card.
uint8_t BSP_SD_GetCardInfo(SD_CardInfo *pCardInfo)
Returns information about specific card.
HAL_StatusTypeDef SD_IO_WriteCmd(uint8_t Cmd, uint32_t Arg, uint8_t Crc, uint8_t Response)
Sends 5 bytes command to the SD card and get response.
void SD_IO_Init_LS(void)
Initializes the SD Card and put it into StandBy State (Ready for data transfer). Low baundrate...
void SD_IO_WriteDummy(void)
Sends dummy byte with CS High.
This file contains definitions for SensorTile.c file.
uint8_t BSP_SD_ReadBlocks(uint32_t *p32Data, uint64_t Sector, uint16_t BlockSize, uint32_t NumberOfBlocks)
Reads block(s) from a specified address in an SD card, in polling mode.
Card Specific Data: CSD Register.
HAL_StatusTypeDef SD_IO_WaitResponse(uint8_t Response)
Waits response from the SD card.
uint8_t BSP_SD_GetStatus(void)
Returns the SD status.
Card Identification Data: CID Register.
void SD_IO_Init(void)
Initializes the SD Card and put it into StandBy State (Ready for data transfer).
void SD_IO_WriteByte(uint8_t Data)
Writes a byte on the SD.
uint8_t SD_IO_WriteCmd_wResp(uint8_t Cmd, uint32_t Arg, uint8_t Crc)
Sends 5 bytes command to the SD card and get response.