aboutsummaryrefslogtreecommitdiff
path: root/src/spim.h
diff options
context:
space:
mode:
authorVictor Mignot <victor@vmignot.fr>2025-08-22 14:06:29 +0200
committerVictor Mignot <victor@vmignot.fr>2025-08-22 14:06:29 +0200
commit5e2d0ffd4d5c50c75afbd66f559d304c773903ef (patch)
tree7d25912b39857e9ca42b9e434562c9b24c01618e /src/spim.h
parent31eb5b5de15908fecf3a615910b3273de62baeeb (diff)
downloadnanji-main.tar.gz
[WIP] nrf52832: add spi master driverHEADmain
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