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 Library Header File
7 *
8 * @date 2025-07-05
9 * @author Midnight Sun Team #24 - MSXVI
10 ************************************************************************************************/
11
12/* Standard library Headers */
13#include <stdbool.h>
14#include <stddef.h>
15#include <stdint.h>
16
17/* Inter-component Headers */
18#include "gpio.h"
19
20/* Intra-component Headers */
21#include "status.h"
22
35typedef enum {
46
50typedef enum {
57
61typedef enum { SD_SPI_PORT_1 = 0, SD_SPI_PORT_2, SD_SPI_PORT_3, NUM_SD_SPI_PORTS } SdSpiPort;
62
66typedef struct {
74
86StatusCode sd_spi_init(SdSpiPort spi, const SdSpiSettings *settings);
87
100StatusCode sd_spi_tx(SdSpiPort spi, uint8_t *tx_data, size_t tx_len);
101
115StatusCode sd_spi_rx(SdSpiPort spi, uint8_t *rx_data, size_t rx_len, uint8_t placeholder);
116
130StatusCode sd_spi_exchange(SdSpiPort spi, uint8_t *tx_data, size_t tx_len, uint8_t *rx_data, size_t rx_len);
131
141
149
160
GpioState
High or low GPIO state.
Definition: gpio.h:37
StatusCode
StatusCodes for various errors.
Definition: status.h:27
StatusCode sd_spi_set_frequency(SdSpiPort spi, SdSpiBaudrate baudrate)
Change the baudrate of an initialized SPI port.
Definition: sd_card_spi.c:190
StatusCode sd_spi_rx(SdSpiPort spi, uint8_t *rx_data, size_t rx_len, uint8_t placeholder)
Receive data from SD card via SPI.
Definition: sd_card_spi.c:131
StatusCode sd_spi_cs_set_state(SdSpiPort spi, GpioState state)
Set the CS (chip select) GPIO state.
Definition: sd_card_spi.c:176
StatusCode sd_spi_exchange(SdSpiPort spi, uint8_t *tx_data, size_t tx_len, uint8_t *rx_data, size_t rx_len)
Exchange data over SPI.
Definition: sd_card_spi.c:147
StatusCode sd_spi_init(SdSpiPort spi, const SdSpiSettings *settings)
Initialize SD SPI port with given settings.
Definition: sd_card_spi.c:57
GpioState sd_spi_cs_get_state(SdSpiPort spi)
Get the current state of the CS (chip select) pin.
Definition: sd_card_spi.c:183
SdSpiMode
SPI modes (CPOL and CPHA settings)
Definition: sd_card_spi.h:50
SdSpiBaudrate
SD Card SPI baudrate options.
Definition: sd_card_spi.h:35
SdSpiPort
SD SPI port options.
Definition: sd_card_spi.h:61
StatusCode sd_spi_tx(SdSpiPort spi, uint8_t *tx_data, size_t tx_len)
Transmit data to SD card via SPI.
Definition: sd_card_spi.c:122
@ SD_SPI_MODE_1
Definition: sd_card_spi.h:52
@ NUM_SD_SPI_MODES
Definition: sd_card_spi.h:55
@ SD_SPI_MODE_2
Definition: sd_card_spi.h:53
@ SD_SPI_MODE_3
Definition: sd_card_spi.h:54
@ SD_SPI_MODE_0
Definition: sd_card_spi.h:51
@ NUM_SD_SPI_BAUDRATES
Definition: sd_card_spi.h:44
@ SD_SPI_BAUDRATE_20MHZ
Definition: sd_card_spi.h:42
@ SD_SPI_BAUDRATE_40MHZ
Definition: sd_card_spi.h:43
@ SD_SPI_BAUDRATE_2_5MHZ
Definition: sd_card_spi.h:39
@ SD_SPI_BAUDRATE_312_5KHZ
Definition: sd_card_spi.h:36
@ SD_SPI_BAUDRATE_625KHZ
Definition: sd_card_spi.h:37
@ SD_SPI_BAUDRATE_5MHZ
Definition: sd_card_spi.h:40
@ SD_SPI_BAUDRATE_10MHZ
Definition: sd_card_spi.h:41
@ SD_SPI_BAUDRATE_1_25MHZ
Definition: sd_card_spi.h:38
Port and pin data.
Definition: network.h:62
Configuration settings for initializing an SD SPI port.
Definition: sd_card_spi.h:66
SdSpiBaudrate baudrate
Definition: sd_card_spi.h:67
GpioAddress sclk
Definition: sd_card_spi.h:71
GpioAddress cs
Definition: sd_card_spi.h:72
SdSpiMode mode
Definition: sd_card_spi.h:68
GpioAddress mosi
Definition: sd_card_spi.h:69
GpioAddress miso
Definition: sd_card_spi.h:70