ELIOT1 HAL
Загрузка...
Поиск...
Не найдено
hal_sdmmc.h
См. документацию.
1
21#ifndef HAL_SDMMC_H
22#define HAL_SDMMC_H
23
24#if defined(__cplusplus)
25extern "C" {
26#endif /* __cplusplus */
27
28#include "hal_common.h"
29
34enum {
36 SDMMC_TypeSD = 1
37};
38
39#define SDMMC_IS_MMC(x) ((x)->type == SDMMC_TypeMMC)
40#define SDMMC_IS_SD(x) ((x)->type == SDMMC_TypeSD)
53#define SDMMC_CALC_DIVIDER(input_freq_hz, required_freq_hz) (((input_freq_hz) / (required_freq_hz)) / 2)
54
55
60#define SDMMC_SDHC_SECTOR_SIZE 512
61#define SDMMC_SD_SEND_IF_COND_PATTERN 0x1AA
62#define SDMMC_SD_OCR_INIT_VALUE 0xFF80
63#define SDMMC_MMC_RCA_ADDR 0x00010000
64#define SDMMC_TIMEOUTCONTROL_MAX_VALUE 0xE
73enum {
77};
86#define SDMMC_CORECFG0_SLOTTYPE_REMOVABLE 0
87#define SDMMC_CORECFG0_SLOTTYPE_EMBEDDED 1
88#define SDMMC_CORECFG0_SLOTTYPE_SHARED_BUS 2
97enum {
109enum {
123enum {
136#define SDMMC_SD_UHS_MODE_DEFAULT_SDR12 0
137#define SDMMC_SD_UHS_MODE_HIGHSPEED_SDR25 1
138#define SDMMC_SD_UHS_MODE_SDR50 2
139#define SDMMC_SD_UHS_MODE_SDR104 3
140#define SDMMC_SD_UHS_MODE_DDR50 4
160#define SDMMC_SDMA_ALIGN 0
161#define SDMMC_SDMA_BLOCK_SIZE (4096 << SDMMC_SDMA_ALIGN)
162#define SDMMC_SDMA_BLOCK_ALIGN __attribute__((aligned(SDMMC_SDMA_BLOCK_SIZE)))
163#define SDMMC_SDMA_IS_BLOCK_ALIGN_ADDR(x) (((uint32_t) (x) & (SDMMC_SDMA_BLOCK_SIZE - 1)) == 0)
175
184
188typedef struct {
189 int32_t dev_num;
191 SDMMC_Type *regs;
192 uint32_t rca;
193 int32_t type;
194 int32_t sdhc_mode;
195 int32_t hs_mode;
196 int32_t ddr_mode;
197 int32_t version;
199 int32_t need_1V8en;
200 uint32_t freq_input;
201 int32_t freq_divider;
202 int32_t lock;
203 uint64_t total_size;
204 uint32_t cid[4];
205 uint32_t csd[4];
207
223 sdmmc_voltage_t vol, void *init_buf);
224
231
252 bool unsafe);
253
267sdmmc_status_t SDMMC_Read(sdmmc_card_t *sd, uint32_t start_block, void *data,
268 uint32_t nblocks);
269
284 void *data, uint32_t nblocks);
285
295
309sdmmc_status_t SDMMC_Write(sdmmc_card_t *sd, uint32_t start_block,
310 const void *data, uint32_t nblocks);
311
326 const void *data, uint32_t nblocks);
327
337
338#if defined(__cplusplus)
339}
340#endif /* __cplusplus */
341
342#endif /* HAL_SDMMC_H */
343
void SDMMC_DisableCard(sdmmc_card_t *sd)
Остановка SDMMC контроллера и выключение питания вставленной карты
sdmmc_status_t
Статусы драйвера SDMMC.
Definition hal_sdmmc.h:171
sdmmc_status_t SDMMC_Write(sdmmc_card_t *sd, uint32_t start_block, const void *data, uint32_t nblocks)
Запись карты блоками размером 512 байт
sdmmc_status_t SDMMC_WriteAsync(sdmmc_card_t *sd, uint32_t start_block, const void *data, uint32_t nblocks)
Асинхронная запись карты блоками размером 512 байт
sdmmc_status_t SDMMC_CalcMemorySpace(sdmmc_card_t *sd, void *sector_buf, bool unsafe)
Подсчет размера пространства памяти карты
sdmmc_status_t SDMMC_InitCard(sdmmc_card_t *sd, uint32_t num, sdmmc_voltage_t vol, void *init_buf)
Инициализация SDMMC контроллера и вставленной карты SD или MMC.
sdmmc_voltage_t
Рабочие напряжения питания карты
Definition hal_sdmmc.h:179
sdmmc_status_t SDMMC_ReadWait(sdmmc_card_t *sd)
Ожидание завершения операции асинхронного чтения памяти карты
sdmmc_status_t SDMMC_WriteWait(sdmmc_card_t *sd)
Ожидание завершения операции асинхронной записи памяти карты
sdmmc_status_t SDMMC_ReadAsync(sdmmc_card_t *sd, uint32_t start_block, void *data, uint32_t nblocks)
Асинхронное чтение карты блоками размером 512 байт
sdmmc_status_t SDMMC_Read(sdmmc_card_t *sd, uint32_t start_block, void *data, uint32_t nblocks)
Чтение карты блоками размером 512 байт
@ SDMMC_TypeSD
Definition hal_sdmmc.h:36
@ SDMMC_TypeMMC
Definition hal_sdmmc.h:35
@ SDMMC_HostPWR_3V3
Definition hal_sdmmc.h:74
@ SDMMC_HostPWR_3V0
Definition hal_sdmmc.h:75
@ SDMMC_HostPWR_1V8
Definition hal_sdmmc.h:76
@ SDMMC_Status_Err
Definition hal_sdmmc.h:173
@ SDMMC_Status_Ok
Definition hal_sdmmc.h:172
@ SDMMC_ExtDataBusTransferWidth_8bit
Definition hal_sdmmc.h:126
@ SDMMC_DataBusTransferWidth_4bit
Definition hal_sdmmc.h:125
@ SDMMC_DataBusTransferWidth_1Bit
Definition hal_sdmmc.h:124
@ SDMMC_3v3
Definition hal_sdmmc.h:180
@ SDMMC_1v8
Definition hal_sdmmc.h:181
@ SDMMC_3v3To1v8
Definition hal_sdmmc.h:182
@ SDMMC_ResponceLength136
Definition hal_sdmmc.h:111
@ SDMMC_ResponceLength48
Definition hal_sdmmc.h:112
@ SDMMC_ResponceLength48_Check
Definition hal_sdmmc.h:113
@ SDMMC_NoResponce
Definition hal_sdmmc.h:110
@ SDMMC_SDMA_TransferWrite
Definition hal_sdmmc.h:98
@ SDMMC_SDMA_TransferRead
Definition hal_sdmmc.h:99
Контекст драйвера контроллера SDMMC.
Definition hal_sdmmc.h:188
int32_t sdhc_mode
Definition hal_sdmmc.h:194
int32_t type
Definition hal_sdmmc.h:193
int32_t need_1V8en
Definition hal_sdmmc.h:199
uint32_t freq_input
Definition hal_sdmmc.h:200
int32_t freq_divider
Definition hal_sdmmc.h:201
uint64_t total_size
Definition hal_sdmmc.h:203
const sdmmc_port_cfg_t * cfg
Definition hal_sdmmc.h:190
int32_t dev_num
Definition hal_sdmmc.h:189
int32_t hs_mode
Definition hal_sdmmc.h:195
int32_t ddr_mode
Definition hal_sdmmc.h:196
uint32_t rca
Definition hal_sdmmc.h:192
SDMMC_Type * regs
Definition hal_sdmmc.h:191
sdmmc_voltage_t gpio_vol
Definition hal_sdmmc.h:198
int32_t lock
Definition hal_sdmmc.h:202
int32_t version
Definition hal_sdmmc.h:197
Конфигурация контроллера SDMMC.
Definition hal_sdmmc_cfg.h:38