XCORE SDK
XCORE Software Development Kit
|
API for SPI I/O. More...
#include <stdlib.h>
#include <stdint.h>
#include <xclib.h>
#include <xcore/assert.h>
#include <xcore/port.h>
#include <xcore/clock.h>
Go to the source code of this file.
Classes | |
struct | spi_master_t |
struct | spi_master_device_t |
struct | spi_slave_callback_group_t |
Macros | |
#define | SPI_MASTER_MINIMUM_DELAY 10 |
#define | SPI_IO_SETC_PAD_DELAY(n) (0x7007 | ((n) << 3)) |
#define | SPI_IO_RESOURCE_SETCI(res, c) asm volatile( "setc res[%0], %1" :: "r" (res), "n" (c)) |
#define | SPI_IO_RESOURCE_SETC(res, r) asm volatile( "setc res[%0], %1" :: "r" (res), "r" (r)) |
#define | SPI_IO_SETSR(c) asm volatile("setsr %0" : : "n"(c)); |
#define | SPI_IO_CLRSR(c) asm volatile("clrsr %0" : : "n"(c)); |
#define | SPI_MODE_0 0,0 |
#define | SPI_MODE_1 0,1 |
#define | SPI_MODE_2 1,0 |
#define | SPI_MODE_3 1,1 |
#define | SPI_CALLBACK_ATTR __attribute__((fptrgroup("spi_callback"))) |
Typedefs | |
typedef void(* | slave_transaction_started_t) (void *app_data, uint8_t **out_buf, size_t *outbuf_len, uint8_t **in_buf, size_t *inbuf_len) |
typedef void(* | slave_transaction_ended_t) (void *app_data, uint8_t **out_buf, size_t bytes_written, uint8_t **in_buf, size_t bytes_read, size_t read_bits) |
Enumerations | |
enum | spi_master_sample_delay_t { spi_master_sample_delay_0 = 0 , spi_master_sample_delay_1 = 1 , spi_master_sample_delay_2 = 2 , spi_master_sample_delay_3 = 3 , spi_master_sample_delay_4 = 4 } |
enum | spi_master_source_clock_t { spi_master_source_clock_ref = 0 , spi_master_source_clock_xcore } |
Functions | |
void | spi_io_port_outpw (resource_t __p, uint32_t __w, uint32_t __bpw) |
void | spi_master_init (spi_master_t *spi, xclock_t clock_block, port_t cs_port, port_t sclk_port, port_t mosi_port, port_t miso_port) |
void | spi_master_device_init (spi_master_device_t *dev, spi_master_t *spi, uint32_t cs_pin, int cpol, int cpha, spi_master_source_clock_t source_clock, uint32_t clock_divisor, spi_master_sample_delay_t miso_sample_delay, uint32_t miso_pad_delay, uint32_t cs_to_clk_delay_ticks, uint32_t clk_to_cs_delay_ticks, uint32_t cs_to_cs_delay_ticks) |
void | spi_master_start_transaction (spi_master_device_t *dev) |
void | spi_master_transfer (spi_master_device_t *dev, uint8_t *data_out, uint8_t *data_in, size_t len) |
void | spi_master_delay_before_next_transfer (spi_master_device_t *dev, uint32_t delay_ticks) |
void | spi_master_end_transaction (spi_master_device_t *dev) |
void | spi_master_deinit (spi_master_t *spi) |
void | spi_slave (const spi_slave_callback_group_t *spi_cbg, port_t p_sclk, port_t p_mosi, port_t p_miso, port_t p_cs, xclock_t clk, int cpol, int cpha) |
API for SPI I/O.
#define SPI_MASTER_MINIMUM_DELAY 10 |
The minimum number of clock ticks that should be specified for any SPI master delay value.