diff options
Diffstat (limited to 'src/spim.h')
-rw-r--r-- | src/spim.h | 47 |
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 |