Implementation of SD card interface over SPI.
More...
#include "sd.h"
#include "no_os_delay.h"
#include "no_os_error.h"
#include "no_os_alloc.h"
Implementation of SD card interface over SPI.
- Author
- Mihail Chindris (mihai.nosp@m.l.ch.nosp@m.indri.nosp@m.s@an.nosp@m.alog..nosp@m.com)
- Copyright
Copyright 2019(c) Analog Devices, Inc.
SPDX-License-Identifier: BSD-3-Clause
◆ ACMD
Value:
#define BIT_APPLICATION_CMD
Definition sd.c:19
#define CMD(x)
Definition sd.c:21
◆ ACMD41_ARG
| #define ACMD41_ARG (0x40000000u) |
◆ BIT_APPLICATION_CMD
| #define BIT_APPLICATION_CMD (1u<<7) |
◆ BIT_CCS
◆ CMD
◆ CMD0_RETRY_NUMBER
| #define CMD0_RETRY_NUMBER (5u) |
◆ CMD8_ARG
| #define CMD8_ARG (0x000001AAu) |
◆ CMD_LEN
◆ CRC_LEN
◆ CSD_LEN
◆ DATA_BLOCK_BITS
| #define DATA_BLOCK_BITS (9u) |
◆ MASK_ADDR_IN_BLOCK
◆ MASK_BLOCK_NUMBER
◆ MASK_ERROR_TOKEN
| #define MASK_ERROR_TOKEN (0xF0u) |
◆ MASK_RESPONSE_TOKEN
| #define MASK_RESPONSE_TOKEN (0x0Eu) |
◆ R1_IDLE_STATE
| #define R1_IDLE_STATE (0x01u) |
◆ R1_ILLEGAL_COMMAND
| #define R1_ILLEGAL_COMMAND (0x04u) |
◆ R1_LEN
◆ R1_READY_STATE
| #define R1_READY_STATE (0x00u) |
◆ R2_LEN
◆ R3_LEN
◆ R7_LEN
◆ START_1_BLOCK_TOKEN
| #define START_1_BLOCK_TOKEN (0xFEu) |
◆ START_N_BLOCK_TOKEN
| #define START_N_BLOCK_TOKEN (0xFCu) |
◆ STOP_TRANSMISSION_TOKEN
| #define STOP_TRANSMISSION_TOKEN (0xFDu) |
◆ STUFF_ARG
| #define STUFF_ARG (0x00000000u) |
◆ WAIT_RESP_TIMEOUT
| #define WAIT_RESP_TIMEOUT (1000u) |
◆ sd_init()
Initialize an instance of SD card and stores it to the parameter desc
- Parameters
-
| sd_desc | - Pointer where to store the instance of the SD |
| param | - Contains an initialized SPI descriptor |
- Returns
- 0 in case of success, -1 otherwise.
◆ sd_read()
| int32_t sd_read |
( |
struct sd_desc * | sd_desc, |
|
|
uint8_t * | data, |
|
|
uint64_t | address, |
|
|
uint64_t | len ) |
Read data of size len from the specified address and store it in data. This operation returns only when the read is complete
- Parameters
-
| sd_desc | - Instance of the SD card |
| data | - Where data will be read |
| address | - Address in memory from where data will be read |
| len | - Length in bytes of data to be read |
- Returns
- 0 in case of success, -1 otherwise.
◆ sd_remove()
| int32_t sd_remove |
( |
struct sd_desc * | desc | ) |
|
Remove the initialize instance of SD card.
- Parameters
-
| desc | - Instance of the SD card |
- Returns
- 0 in case of success, -1 otherwise.
◆ sd_write()
| int32_t sd_write |
( |
struct sd_desc * | sd_desc, |
|
|
uint8_t * | data, |
|
|
uint64_t | address, |
|
|
uint64_t | len ) |
Write data of size len to the specified address This operation returns only when the write is complete
- Parameters
-
| sd_desc | - Instance of the SD card |
| data | - Data to write |
| address | - Address in memory where data will be written |
| len | - Length of data in bytes |
- Returns
- 0 in case of success, -1 otherwise.