#ifndef SPI_H #define SPI_H #include "gpio.h" #define MAX_TRANSFER_SIZE 256 enum spi_interface { SPI_0, SPI_1, SPI_2, }; enum spi_frequency { K125, K250, K500, M1, M2, M4, M8, }; enum spi_clock_polarity { ACTIVE_HIGH = 0, ACTIVE_LOW = 1, }; enum spi_clock_phase { LEADING = 0, TRAILING = 1, }; enum spi_bits_order { MSB_FIRST = 0, LSB_FIRST = 0, }; void spi_master_init(enum spi_interface spi, enum gpio_pin clock, enum gpio_pin mosi, enum gpio_pin miso, enum spi_bits_order order, enum spi_clock_polarity polarity, enum spi_clock_phase phase, enum spi_frequency frequency, char overread_char); u8 spi_master_transfer(enum spi_interface spi, u8 tx_size, u8 tx[], u8 rx_size, u8 rx[]); void spi_master_stop(enum spi_interface spi, enum gpio_pin clock, enum gpio_pin mosi, enum gpio_pin miso); #endif