diff options
Diffstat (limited to 'src/spi.h')
| -rw-r--r-- | src/spi.h | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/src/spi.h b/src/spi.h new file mode 100644 index 0000000..b076bcb --- /dev/null +++ b/src/spi.h @@ -0,0 +1,45 @@ +#ifndef SPI_H +#define SPI_H + +#include "gpio.h" + +#define MAX_TRANSFER_SIZE 256 + +enum spi_interface { + SPI_0, + SPI_1, + SPI_2, +}; + +enum spi_frequency { + K125, + K250, + K500, + M1, + M2, + M4, + M8, +}; + +enum spi_clock_polarity { + ACTIVE_HIGH = 0, + ACTIVE_LOW = 1, +}; + +enum spi_clock_phase { + LEADING = 0, + TRAILING = 1, +}; + +enum spi_bits_order { + MSB_FIRST = 0, + LSB_FIRST = 0, +}; + +void spi_master_init(enum spi_interface spi, enum gpio_pin clock, enum gpio_pin mosi, enum gpio_pin miso, enum spi_bits_order order, enum spi_clock_polarity polarity, enum spi_clock_phase phase, enum spi_frequency frequency, char overread_char); + +u8 spi_master_transfer(enum spi_interface spi, u8 tx_size, u8 tx[], u8 rx_size, u8 rx[]); + +void spi_master_stop(enum spi_interface spi, enum gpio_pin clock, enum gpio_pin mosi, enum gpio_pin miso); + +#endif |
