#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