Midnight Sun Firmware
Loading...
Searching...
No Matches
sd_card_spi.h
1#pragma once
2
3/************************************************************************************************
4 * @file sd_card_spi.h
5 *
6 * @brief Sd Card Spi
7 *
8 * @date 2025-06-07
9 * @author Midnight Sun Team #24 - MSXVI
10 ************************************************************************************************/
11
12/* Standard library Headers */
13#include <status.h>
14#include <stddef.h>
15#include <stdint.h>
16
17/* Inter-component Headers */
18#include "gpio.h"
19
20/* Intra-component Headers */
21
29typedef enum {
34} SdSpiPort;
35
36typedef enum {
37 SD_SPI_MODE_0 = 0, // CPOL: 0 CPHA: 0
38 SD_SPI_MODE_1, // CPOL: 0 CPHA: 1
39 SD_SPI_MODE_2, // CPOL: 1 CPHA: 0
40 SD_SPI_MODE_3, // CPOL: 1 CPHA: 1
41 NUM_SD_SPI_MODES,
42} SdSpiMode;
43
44typedef struct {
45 uint32_t baudrate;
46 SdSpiMode mode;
47
48 GpioAddress mosi;
49 GpioAddress miso;
50 GpioAddress sclk;
51 GpioAddress cs;
53
54/* Constant + Macros */
55#define SD_BLOCK_SIZE 512U
56#define SD_SPI_INIT_LOW_FREQ_HZ 400000U
57#define SD_SPI_INIT_HIGH_FREQ_HZ 25000000U
58
67
78StatusCode sd_read_blocks(SdSpiPort p, uint8_t *dst, uint32_t lba, uint32_t number_of_blocks);
79
90StatusCode sd_write_blocks(SdSpiPort p, uint8_t *src, uint32_t lba, uint32_t number_of_blocks);
91
100
StatusCode
StatusCodes for various errors.
Definition: status.h:27
StatusCode sd_read_blocks(SdSpiPort p, uint8_t *dst, uint32_t lba, uint32_t number_of_blocks)
Read one or more 512-byte blocks from the SD card.
Definition: sd_card_spi.c:199
StatusCode sd_write_blocks(SdSpiPort p, uint8_t *src, uint32_t lba, uint32_t number_of_blocks)
Write blocks to SD card from src to lba.
Definition: sd_card_spi.c:234
StatusCode sd_card_spi_init(SdSpiPort p, SdSpiSettings *settings)
Initialize the SD card over SPI.
Definition: sd_card_spi.c:62
StatusCode sd_is_initialized(SdSpiPort p)
If SD card is initialized and ready for use on given SPI port.
Definition: sd_card_spi.c:296
SdSpiPort
SPI Port selection.
Definition: sd_card_spi.h:29
@ SPI_PORT_3
Definition: sd_card_spi.h:32
@ SPI_PORT_1
Definition: sd_card_spi.h:30
@ SPI_PORT_2
Definition: sd_card_spi.h:31
@ NUM_SPI_PORTS
Definition: sd_card_spi.h:33
Port and pin data.
Definition: network.h:62
Definition: sd_card_spi.h:44