aboutsummaryrefslogtreecommitdiff
path: root/src/spim.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/spim.h')
-rw-r--r--src/spim.h47
1 files changed, 47 insertions, 0 deletions
diff --git a/src/spim.h b/src/spim.h
new file mode 100644
index 0000000..2a7a5aa
--- /dev/null
+++ b/src/spim.h
@@ -0,0 +1,47 @@
+#ifndef SPIM_H
+#define SPIM_H
+
+#include "types.h"
+
+#define SPI_MAX_BUFFER_SIZE 256
+
+enum spim_clk_frequency_bps {
+ K125 = 0x02000000,
+ K250 = 0x04000000,
+ K500 = 0x08000000,
+ M1 = 0x10000000,
+ M2 = 0x20000000,
+ M4 = 0x40000000,
+ M8 = 0x80000000,
+};
+
+enum spim_clk_phase {
+ LEADING = 0,
+ TRAILING = 1,
+};
+
+enum spim_clk_polarity {
+ ACTIVE_HIGH = 0,
+ ACTIVE_LOW = 1,
+};
+
+struct spim_setup_info {
+ u8 sclk_pin;
+ u8 miso_pin;
+ u8 mosi_pin;
+ u8 ss_pin;
+ enum clk_frequency_bps clk_freqency;
+ u8 rxd_len;
+ u8 txd_len;
+ enum spim_clk_phase clk_phase;
+ enum spim_clk_polarity clk_polarity;
+ u8 over_read_char;
+};
+
+u8 spim_setup(u8 spi_index, struct spim_setup_info setup_info);
+
+void spim_send(u8 spi_index, u8 *write_buffer, u8 *read_buffer);
+
+void spim_stop(u8 spi_index);
+
+#endif