gos_spi_device_t Struct Reference
SPI slave context used by gos_spi_master_transfer() More...
Data Fields |
|
gos_spi_t | port |
SPI peripheral used.
|
|
gos_gpio_t | chip_select |
GPIO of slave's chip select, set as GOS_GPIO_INVALID if unused.
|
|
gos_spi_cs_callback_t | cs_callback |
gos_spi_cs_callback_t
invoked when asserting/de-asserting CS signal, set as NULL if unused
|
|
void * | cs_callback_arg |
Optional argument supplied to
gos_spi_cs_callback_t
.
|
|
uint32_t | speed |
Master clock speed in hertz.
|
|
gos_spi_flag_t | flags |
Bus flags, see
gos_spi_flag_t
.
|
|
uint8_t | bits |
Number of bits per frame.
|
|
bool | lcd_bit8 |
Bit 8 setting in 9 bit LCD mode.
|
|
Detailed Description
SPI slave context used by gos_spi_master_transfer()
- Note
-
Either the
chip_select
and/orcs_callback
MUST be specified.
Gecko OS automatically locks the SPI peripheral based on:
- Current thread
-
chip_select
field -
cs_callback
field
This allows for multiple threads to safely access the same SPI peripheral.
If
chip_select
is GOS_GPIO_INVALID and the
cs_callback
function pointer is used to assert different SPI slave devices, then the function pointer should be different for each slave device. i.e.
void
spi_slave1_cs_callback(
void
*arg,
bool
asserted)
{
io_expander_set(SPI_SLAVE1_GPIO, asserted);
}
void
spi_slave2_cs_callback(
void
*arg,
bool
asserted)
{
io_expander_set(SPI_SLAVE2_GPIO, asserted);
}
gos_spi_device_t
spi_slave1;
gos_spi_device_t
spi_slave2;
spi_slave1.
cs_callback
= spi_slave1_cs_callback;
spi_slave2.
cs_callback
= spi_slave2_cs_callback;
- Examples:
- test/spi_loop_back/main.c .