This is the API for SPI master service on XMEGA.
See Quick Start Guide for the SPI Master Driver
Data Structures | |
struct | spi_device |
Polled SPI device definition. More... | |
Macros | |
#define | SPI_CPHA (1 << 0) |
Clock phase. More... | |
#define | SPI_CPOL (1 << 1) |
Clock polarity. More... | |
#define | SPI_MODE_0 0 |
SPI mode 0. More... | |
#define | SPI_MODE_1 (SPI_CPHA) |
SPI mode 1. More... | |
#define | SPI_MODE_2 (SPI_CPOL) |
SPI mode 2. More... | |
#define | SPI_MODE_3 (SPI_CPOL | SPI_CPHA) |
SPI mode 3. More... | |
Typedefs | |
typedef uint32_t | board_spi_select_id_t |
typedef uint8_t | spi_flags_t |
Functions | |
void | spi_deselect_device (SPI_t *spi, struct spi_device *device) |
Deselect given device on the SPI bus. More... | |
void | spi_disable (SPI_t *spi) |
Disables the SPI. More... | |
void | spi_enable (SPI_t *spi) |
Enables the SPI. More... | |
bool | spi_is_enabled (SPI_t *spi) |
Tests if the SPI is enabled. More... | |
static bool | spi_is_rx_full (SPI_t *spi) |
Tests if the SPI contains a received character. More... | |
static bool | spi_is_rx_ready (SPI_t *spi) |
Checks if all reception is ready. More... | |
static bool | spi_is_tx_empty (SPI_t *spi) |
Checks if all transmissions are complete. More... | |
static bool | spi_is_tx_ready (SPI_t *spi) |
Checks if all transmissions is ready. More... | |
void | spi_master_init (SPI_t *spi) |
Initializes the SPI in master mode. More... | |
void | spi_master_setup_device (SPI_t *spi, struct spi_device *device, spi_flags_t flags, unsigned long baud_rate, board_spi_select_id_t sel_id) |
Setup a SPI device. More... | |
status_code_t | spi_read_packet (SPI_t *spi, uint8_t *data, size_t len) |
Receive a sequence of bytes from a SPI device. More... | |
static void | spi_read_single (SPI_t *spi, uint8_t *data) |
Receive one byte from a SPI device. More... | |
void | spi_select_device (SPI_t *spi, struct spi_device *device) |
Select given device on the SPI bus. More... | |
status_code_t | spi_write_packet (SPI_t *spi, const uint8_t *data, size_t len) |
Send a sequence of bytes to a SPI device. More... | |
static __always_inline void | spi_write_single (SPI_t *spi, uint8_t data) |
Write one byte to a SPI device. More... | |
Spi Master Management Configuration | |
#define | CONFIG_SPI_MASTER_DUMMY 0xFF |
Default Config Spi Master Dummy Field. More... | |
#define CONFIG_SPI_MASTER_DUMMY 0xFF |
Default Config Spi Master Dummy Field.
Referenced by spi_read_packet().
#define SPI_CPHA (1 << 0) |
Clock phase.
#define SPI_CPOL (1 << 1) |
Clock polarity.
#define SPI_MODE_0 0 |
SPI mode 0.
#define SPI_MODE_1 (SPI_CPHA) |
SPI mode 1.
#define SPI_MODE_2 (SPI_CPOL) |
SPI mode 2.
typedef uint32_t board_spi_select_id_t |
typedef uint8_t spi_flags_t |
void spi_deselect_device | ( | SPI_t * | spi, |
struct spi_device * | device | ||
) |
Deselect given device on the SPI bus.
Calls board chip deselect.
spi | Base address of the SPI instance. |
device | SPI device |
References spi_device::id, and ioport_set_pin_high().
Referenced by at25dfx_spi_deselect_device(), spi_at45dbx_mem_check(), ssd1306_write_command(), ssd1306_write_data(), st7565r_write_command(), and st7565r_write_data().
void spi_disable | ( | SPI_t * | spi | ) |
Disables the SPI.
Ensures that nothing is transferred while setting up buffers.
spi | Base address of the SPI instance. |
void spi_enable | ( | SPI_t * | spi | ) |
Enables the SPI.
spi | Base address of the SPI instance. |
Referenced by at25dfx_spi_init(), at45dbx_spi_init(), ili9341_interface_init(), main(), run_baudrate_set_test(), and ssd1306_interface_init().
bool spi_is_enabled | ( | SPI_t * | spi | ) |
Tests if the SPI is enabled.
spi | Base address of the SPI instance. |
1
if the SPI is enabled, otherwise 0
. Referenced by at45dbx_spi_init().
|
inlinestatic |
Tests if the SPI contains a received character.
spi | Base address of the SPI instance. |
1
if the SPI Receive Holding Register is full, otherwise 0
. References spi_is_tx_ok().
Referenced by hx8347a_read_byte(), ili9341_read_byte(), spi_read_packet(), and spi_write_packet().
|
inlinestatic |
Checks if all reception is ready.
spi | Base address of the SPI instance. |
1
if the SPI Receiver is ready, otherwise 0
. References spi_is_tx_ok().
|
inlinestatic |
Checks if all transmissions are complete.
spi | Base address of the SPI instance. |
1 | All transmissions complete. |
0 | Transmissions not complete. |
References spi_is_tx_ok().
Referenced by ili9341_wait_for_send_done().
|
inlinestatic |
Checks if all transmissions is ready.
spi | Base address of the SPI instance. |
1 | All transmissions complete. |
0 | Transmissions not complete. |
References spi_is_tx_ok().
void spi_master_init | ( | SPI_t * | spi | ) |
Initializes the SPI in master mode.
spi | Base address of the SPI instance. |
References spi_enable_master_mode(), sysclk_enable_module(), SYSCLK_PORT_A, SYSCLK_PORT_B, SYSCLK_PORT_C, SYSCLK_PORT_D, SYSCLK_PORT_E, and SYSCLK_PORT_F.
Referenced by at25dfx_spi_init(), at45dbx_spi_init(), hx8347a_interface_init(), ili9341_interface_init(), main(), ssd1306_interface_init(), and st7565r_interface_init().
void spi_master_setup_device | ( | SPI_t * | spi, |
struct spi_device * | device, | ||
spi_flags_t | flags, | ||
unsigned long | baud_rate, | ||
board_spi_select_id_t | sel_id | ||
) |
Setup a SPI device.
The returned device descriptor structure must be passed to the driver whenever that device should be used as current slave device.
spi | Base address of the SPI instance. |
device | Pointer to SPI device struct that should be initialized. |
flags | SPI configuration flags. Common flags for all implementations are the SPI modes SPI_MODE_0 ... SPI_MODE_3. |
baud_rate | Baud rate for communication with slave device in Hz. |
sel_id | Board specific select id |
status_code_t spi_read_packet | ( | SPI_t * | spi, |
uint8_t * | data, | ||
size_t | len | ||
) |
Receive a sequence of bytes from a SPI device.
All bytes sent out on SPI bus are sent as value 0.
spi | Base address of the SPI instance. |
data | data buffer to read |
len | Length of data |
References CONFIG_SPI_MASTER_DUMMY, spi_is_rx_full(), spi_read_single(), spi_write_single(), and STATUS_OK.
Referenced by at25dfx_spi_read_byte(), at25dfx_spi_read_packet(), and spi_at45dbx_mem_check().
|
inlinestatic |
Receive one byte from a SPI device.
spi | Base address of the SPI instance. |
data | Pointer to the data byte where to store the received data. |
References spi_get().
Referenced by hx8347a_read_byte(), ili9341_read_byte(), and spi_read_packet().
void spi_select_device | ( | SPI_t * | spi, |
struct spi_device * | device | ||
) |
Select given device on the SPI bus.
Set device specific setting and calls board chip select.
spi | Base address of the SPI instance. |
device | SPI device |
References spi_device::id, and ioport_set_pin_low().
Referenced by at25dfx_spi_select_device(), spi_at45dbx_mem_check(), ssd1306_write_command(), ssd1306_write_data(), st7565r_write_command(), and st7565r_write_data().
status_code_t spi_write_packet | ( | SPI_t * | spi, |
const uint8_t * | data, | ||
size_t | len | ||
) |
Send a sequence of bytes to a SPI device.
Received bytes on the SPI bus are discarded.
spi | Base address of the SPI instance. |
data | data buffer to write |
len | Length of data |
References spi_is_rx_full(), spi_write_single(), and STATUS_OK.
Referenced by at25dfx_spi_write_byte(), at25dfx_spi_write_packet(), hx8347a_write_packet(), and spi_at45dbx_mem_check().
|
static |
Write one byte to a SPI device.
spi | Base address of the SPI instance. |
data | The data byte to be loaded |
References spi_put().
Referenced by hx8347a_read_byte(), hx8347a_send_byte(), ili9341_interface_init(), ili9341_read_byte(), ili9341_send_byte(), spi_read_packet(), spi_write_packet(), ssd1306_write_command(), ssd1306_write_data(), st7565r_write_command(), and st7565r_write_data().