Драйвер SDMMC контроллера SD и MMC карт
Подробнее...
|
| #define | SDMMC_CALC_DIVIDER(input_freq_hz, required_freq_hz) (((input_freq_hz) / (required_freq_hz)) / 2) |
| | Формула подсчета делителя выходной частоты контроллера SDMMC.
|
| |
|
| sdmmc_status_t | SDMMC_InitCard (sdmmc_card_t *sd, uint32_t num, sdmmc_voltage_t vol, void *init_buf) |
| | Инициализация SDMMC контроллера и вставленной карты SD или MMC.
|
| |
| void | SDMMC_DisableCard (sdmmc_card_t *sd) |
| | Остановка SDMMC контроллера и выключение питания вставленной карты
|
| |
| sdmmc_status_t | SDMMC_CalcMemorySpace (sdmmc_card_t *sd, void *sector_buf, bool unsafe) |
| | Подсчет размера пространства памяти карты
|
| |
| sdmmc_status_t | SDMMC_Read (sdmmc_card_t *sd, uint32_t start_block, void *data, uint32_t nblocks) |
| | Чтение карты блоками размером 512 байт
|
| |
| sdmmc_status_t | SDMMC_ReadAsync (sdmmc_card_t *sd, uint32_t start_block, void *data, uint32_t nblocks) |
| | Асинхронное чтение карты блоками размером 512 байт
|
| |
| sdmmc_status_t | SDMMC_ReadWait (sdmmc_card_t *sd) |
| | Ожидание завершения операции асинхронного чтения памяти карты
|
| |
| 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_WriteWait (sdmmc_card_t *sd) |
| | Ожидание завершения операции асинхронной записи памяти карты
|
| |
Драйвер SDMMC контроллера SD и MMC карт
Драйвер содержит функции инциализации карты, подсчета размера пространства памяти карты, синхронные и асинхронные операции чтения и записи карты.
◆ SDMMC_CALC_DIVIDER
| #define SDMMC_CALC_DIVIDER |
( |
| input_freq_hz, |
|
|
| required_freq_hz ) (((input_freq_hz) / (required_freq_hz)) / 2) |
Формула подсчета делителя выходной частоты контроллера SDMMC.
- Аргументы
-
| input_freq_hz | Входная частота контроллера SDMMC |
| required_freq_hz | Необходимая выходная частота контроллера SDMMC |
- Возвращает
- Делитель частоты
◆ SDMMC_CORECFG0_SLOTTYPE_EMBEDDED
| #define SDMMC_CORECFG0_SLOTTYPE_EMBEDDED 1 |
◆ SDMMC_CORECFG0_SLOTTYPE_REMOVABLE
| #define SDMMC_CORECFG0_SLOTTYPE_REMOVABLE 0 |
◆ SDMMC_CORECFG0_SLOTTYPE_SHARED_BUS
| #define SDMMC_CORECFG0_SLOTTYPE_SHARED_BUS 2 |
◆ SDMMC_IS_MMC
◆ SDMMC_IS_SD
◆ SDMMC_MMC_RCA_ADDR
| #define SDMMC_MMC_RCA_ADDR 0x00010000 |
Относительный адрес MMC карты
◆ SDMMC_SD_OCR_INIT_VALUE
| #define SDMMC_SD_OCR_INIT_VALUE 0xFF80 |
Значение OCR регистра при инициализации
◆ SDMMC_SD_SEND_IF_COND_PATTERN
| #define SDMMC_SD_SEND_IF_COND_PATTERN 0x1AA |
Начальный паттерн инициализации SD карты
◆ SDMMC_SD_UHS_MODE_DDR50
| #define SDMMC_SD_UHS_MODE_DDR50 4 |
◆ SDMMC_SD_UHS_MODE_DEFAULT_SDR12
| #define SDMMC_SD_UHS_MODE_DEFAULT_SDR12 0 |
◆ SDMMC_SD_UHS_MODE_HIGHSPEED_SDR25
| #define SDMMC_SD_UHS_MODE_HIGHSPEED_SDR25 1 |
◆ SDMMC_SD_UHS_MODE_SDR104
| #define SDMMC_SD_UHS_MODE_SDR104 3 |
◆ SDMMC_SD_UHS_MODE_SDR50
| #define SDMMC_SD_UHS_MODE_SDR50 2 |
◆ SDMMC_SDHC_SECTOR_SIZE
| #define SDMMC_SDHC_SECTOR_SIZE 512 |
Размер сектора High Capacity карты
◆ SDMMC_SDMA_ALIGN
| #define SDMMC_SDMA_ALIGN 0 |
◆ SDMMC_SDMA_BLOCK_ALIGN
Атрибут GCC выравнивания по размеру блока SDMA
◆ SDMMC_SDMA_BLOCK_SIZE
Размер блока данных SDMA в байтах
◆ SDMMC_SDMA_IS_BLOCK_ALIGN_ADDR
Проверка выравнивания адреса по размеру блока данных SDMA
◆ SDMMC_TIMEOUTCONTROL_MAX_VALUE
| #define SDMMC_TIMEOUTCONTROL_MAX_VALUE 0xE |
Максимальное значение таймера ожидания сигнала на линиях DAT
◆ anonymous enum
| Элементы перечислений |
|---|
| SDMMC_TypeMMC | Тип карты MMC
|
| SDMMC_TypeSD | Тип карты SD
|
◆ anonymous enum
| Элементы перечислений |
|---|
| SDMMC_HostPWR_3V3 | 3,3 вольта
|
| SDMMC_HostPWR_3V0 | 3,0 вольта
|
| SDMMC_HostPWR_1V8 | 1,8 вольта
|
◆ anonymous enum
| Элементы перечислений |
|---|
| SDMMC_SDMA_TransferWrite | Запись
|
| SDMMC_SDMA_TransferRead | Чтение
|
◆ anonymous enum
| Элементы перечислений |
|---|
| SDMMC_NoResponce | Без ответа
|
| SDMMC_ResponceLength136 | Длина ответа - 136 бит
|
| SDMMC_ResponceLength48 | Длина ответа - 48 бит
|
| SDMMC_ResponceLength48_Check | Длина ответа - 48 бит с проверкой
|
◆ anonymous enum
| Элементы перечислений |
|---|
| SDMMC_DataBusTransferWidth_1Bit | 1 бит
|
| SDMMC_DataBusTransferWidth_4bit | 4 бит
|
| SDMMC_ExtDataBusTransferWidth_8bit | 8 бит
|
◆ sdmmc_status_t
Статусы драйвера SDMMC.
| Элементы перечислений |
|---|
| SDMMC_Status_Ok | Ошибок нет
|
| SDMMC_Status_Err | Ошибка исполнения
|
◆ sdmmc_voltage_t
Рабочие напряжения питания карты
| Элементы перечислений |
|---|
| SDMMC_3v3 | 3,3 В (для карт MMC и SD в режиме Default Speed или High Speed)
|
| SDMMC_1v8 | 1,8 В (для карт MMC)
|
| SDMMC_3v3To1v8 | 3,3 В с переключением на 1,8 В (для карт SD в режимах UHS-I)
|
◆ SDMMC_CalcMemorySpace()
Подсчет размера пространства памяти карты
Подсчет общего пространства памяти карты через регистры параметров, если подсчет по параметрам не удался, то может применяться итеративный метод определения размера, но с повреждением информации на карте. Подсчитанный размер записыватся в поле total_size контекста sd в байтах.
- Заметки
- Буфер памяти для SDMA должен быть выровнен по границе блока SDMA и размером 512 байт.
- Аргументы
-
| sd | Контекст драйвера SDMMC |
| sector_buf | Буфер памяти для SDMA |
| unsafe | Использовать (1) или не использовать (0) небезопасные методы определения емкости карты |
- Возвращаемые значения
-
◆ SDMMC_DisableCard()
Остановка SDMMC контроллера и выключение питания вставленной карты
- Аргументы
-
| sd | Контекст драйвера SDMMC |
◆ SDMMC_InitCard()
Инициализация SDMMC контроллера и вставленной карты SD или MMC.
- Заметки
- Буфер памяти для SDMA должен быть выровнен по границе блока SDMA и размером 512 байт.
- Аргументы
-
| sd | Контекст драйвера SDMMC |
| num | Номер контроллера SDMMC |
| vol | Выбор напряжения питания карты |
| init_buf | Буфер памяти для SDMA |
- Возвращаемые значения
-
◆ SDMMC_Read()
Чтение карты блоками размером 512 байт
- Заметки
- Буфер памяти для SDMA должен быть выровнен по границе блока SDMA.
- Аргументы
-
| sd | Контекст драйвера SDMMC |
| start_block | Номер первого блока памяти карты |
| data | Буфер памяти для SDMA |
| nblocks | Количество считываемых блоков памяти |
- Возвращаемые значения
-
◆ SDMMC_ReadAsync()
Асинхронное чтение карты блоками размером 512 байт
- Заметки
- Буфер памяти для SDMA должен быть выровнен по границе блока SDMA.
- Аргументы
-
| sd | Контекст драйвера SDMMC |
| start_block | Номер первого блока памяти карты |
| data | Буфер памяти для SDMA |
| nblocks | Количество считываемых блоков памяти |
- Возвращаемые значения
-
◆ SDMMC_ReadWait()
Ожидание завершения операции асинхронного чтения памяти карты
- Аргументы
-
| sd | Контекст драйвера SDMMC |
- Возвращаемые значения
-
◆ SDMMC_Write()
Запись карты блоками размером 512 байт
- Заметки
- Буфер памяти для SDMA должен быть выровнен по границе блока SDMA.
- Аргументы
-
| sd | Контекст драйвера SDMMC |
| start_block | Номер первого блока памяти карты |
| data | Буфер памяти для SDMA |
| nblocks | Количество записываемых блоков памяти |
- Возвращаемые значения
-
◆ SDMMC_WriteAsync()
Асинхронная запись карты блоками размером 512 байт
- Заметки
- Буфер памяти для SDMA должен быть выровнен по границе блока SDMA.
- Аргументы
-
| sd | Контекст драйвера SDMMC |
| start_block | Номер первого блока памяти карты |
| data | Буфер памяти для SDMA |
| nblocks | Количество записываемых блоков памяти |
- Возвращаемые значения
-
◆ SDMMC_WriteWait()
Ожидание завершения операции асинхронной записи памяти карты
- Аргументы
-
| sd | Контекст драйвера SDMMC |
- Возвращаемые значения
-