aboutsummaryrefslogtreecommitdiff
path: root/src/spi.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/spi.h')
-rw-r--r--src/spi.h45
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