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
fieldcs_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.