From 5e2d0ffd4d5c50c75afbd66f559d304c773903ef Mon Sep 17 00:00:00 2001 From: Victor Mignot Date: Fri, 22 Aug 2025 14:06:29 +0200 Subject: [WIP] nrf52832: add spi master driver --- src/spim.h | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 src/spim.h (limited to 'src/spim.h') 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 -- cgit v1.2.3