objc

spi.h
Go to the documentation of this file.
1 
11 #pragma once
12 #include "gpio.h"
13 #include <stdbool.h>
14 #include <stddef.h>
15 #include <stdint.h>
16 
18 // TYPES
19 
25 typedef struct hw_spi_t {
26  uint8_t adapter;
31  bool cs_active;
32  uint32_t baudrate;
33  uint8_t reserved[3];
34 } hw_spi_t;
35 
37 // LIFECYCLE
38 
51 hw_spi_t hw_spi_init_default(bool cs_active_low, uint32_t baudrate);
52 
75 hw_spi_t hw_spi_init(uint8_t adapter, uint8_t sck, uint8_t tx, uint8_t rx,
76  uint8_t cs, bool cs_active_low, uint32_t baudrate);
77 
87 void hw_spi_finalize(hw_spi_t *spi);
88 
90 // PROPERTIES
91 
101 uint8_t hw_spi_count(void);
102 
111 static inline bool hw_spi_valid(hw_spi_t *spi) {
112  return spi && spi->baudrate > 0;
113 }
114 
116 // DATA TRANSFER
117 
136 size_t hw_spi_xfr(hw_spi_t *spi, void *data, size_t tx, size_t rx);
137 
150 size_t hw_spi_read(hw_spi_t *spi, uint8_t reg, void *data, size_t len);
151 
164 size_t hw_spi_write(hw_spi_t *spi, uint8_t reg, const void *data, size_t len);
uint8_t hw_spi_count(void)
Get the total number of available SPI adapters.
hw_spi_t hw_spi_init_default(bool cs_active_low, uint32_t baudrate)
Initialize a SPI interface using default pins and adapter.
GPIO (General Purpose Input/Output) interface.
size_t hw_spi_read(hw_spi_t *spi, uint8_t reg, void *data, size_t len)
Read data from a specific register of a SPI device.
bool cs_active
CS active state (false if active low)
Definition: spi.h:31
size_t hw_spi_write(hw_spi_t *spi, uint8_t reg, const void *data, size_t len)
Write data to a specific register of a SPI device.
hw_spi_t hw_spi_init(uint8_t adapter, uint8_t sck, uint8_t tx, uint8_t rx, uint8_t cs, bool cs_active_low, uint32_t baudrate)
Initialize a SPI interface with specific adapter and pins.
hw_gpio_t rx
SPI Receive pin (Master In Slave Out)
Definition: spi.h:29
size_t hw_spi_xfr(hw_spi_t *spi, void *data, size_t tx, size_t rx)
Perform a SPI transfer operation (read, write, or combined).
uint32_t baudrate
SPI baud rate in Hz.
Definition: spi.h:32
uint8_t adapter
SPI adapter (0, 1, etc.)
Definition: spi.h:26
hw_gpio_t sck
SPI Clock pin.
Definition: spi.h:27
hw_gpio_t cs
SPI Chip Select pin.
Definition: spi.h:30
static bool hw_spi_valid(hw_spi_t *spi)
Get true if the SPI interface is valid.
Definition: spi.h:111
hw_gpio_t tx
SPI Transmit pin (Master Out Slave In)
Definition: spi.h:28
struct hw_spi_t hw_spi_t
SPI adapter.
SPI adapter.
Definition: spi.h:25
GPIO logical pin structure.
Definition: gpio.h:60
void hw_spi_finalize(hw_spi_t *spi)
Finalize and release a SPI interface.
uint8_t reserved[3]
Reserved for user data.
Definition: spi.h:33