2.21. spi
— Serial Peripheral Interface¶
Source code: src/drivers/spi.h, src/drivers/spi.c
Defines
-
SPI_MODE_SLAVE
¶
-
SPI_MODE_MASTER
¶
-
SPI_SPEED_8MBPS
¶
-
SPI_SPEED_4MBPS
¶
-
SPI_SPEED_2MBPS
¶
-
SPI_SPEED_1MBPS
¶
-
SPI_SPEED_500KBPS
¶
-
SPI_SPEED_250KBPS
¶
-
SPI_SPEED_125KBPS
¶
Functions
-
int
spi_module_init
(void)¶ Initialize SPI module. This function must be called before calling any other function in this module.
The module will only be initialized once even if this function is called multiple times.
- Return
- zero(0) or negative error code.
-
int
spi_init
(struct spi_driver_t *self_p, struct spi_device_t *dev_p, struct pin_device_t *ss_pin_p, int mode, int speed, int cpol, int cpha)¶ Initialize driver object.
- Return
- zero(0) or negative error code.
- Parameters
self_p
-Driver object to initialize.
dev_p
-Device to use.
ss_pin_p
-Slave select pin device.
mode
-Master or slave mode.
speed
-Speed in kbps.
cpol
-Polarity, 0 or 1.
cpha
-Phase, 0 or 1.
-
int
spi_start
(struct spi_driver_t *self_p)¶ Start given SPI driver. Configures the SPI hardware.
- Return
- zero(0) or negative error code.
- Parameters
self_p
-Initialized driver object.
-
int
spi_stop
(struct spi_driver_t *self_p)¶ Stop given SPI driver. Deconfigures the SPI hardware if given driver currently ownes the bus.
- Return
- zero(0) or negative error code.
- Parameters
self_p
-Initialized driver object.
-
int
spi_take_bus
(struct spi_driver_t *self_p)¶ In multi master application the driver must take ownership of the SPI bus before performing data transfers. Will re-configure the SPI hardware if configured by another driver.
- Return
- zero(0) or negative error code.
- Parameters
self_p
-Initialized driver object.
-
int
spi_give_bus
(struct spi_driver_t *self_p)¶ In multi master application the driver must give ownership of the SPI bus to let other masters take it.
- Return
- zero(0) or negative error code.
- Parameters
self_p
-Initialized driver object.
-
int
spi_select
(struct spi_driver_t *self_p)¶ Select the slave by asserting the chip select pin.
- Return
- zero(0) or negative error code.
- Parameters
self_p
-Initialized driver object.
-
int
spi_deselect
(struct spi_driver_t *self_p)¶ Deselect the slave by de-asserting the chip select pin.
- Return
- zero(0) or negative error code.
- Parameters
self_p
-Initialized driver object.
-
ssize_t
spi_transfer
(struct spi_driver_t *self_p, void *rxbuf_p, const void *txbuf_p, size_t size)¶ Simultaniuos read/write operation over the SPI bus.
- Return
- Number of transferred bytes or negative error code.
- Parameters
self_p
-Initialized driver object.
rxbuf_p
-Buffer to read into.
txbuf_p
-Buffer to write.
size
-Number of bytes to transfer.
-
ssize_t
spi_read
(struct spi_driver_t *self_p, void *buf_p, size_t size)¶ Read data from the SPI bus.
- Return
- Number of read bytes or negative error code.
- Parameters
self_p
-Initialized driver object.
buf_p
-Buffer to read into.
size
-Number of bytes to receive.
-
ssize_t
spi_write
(struct spi_driver_t *self_p, const void *buf_p, size_t size)¶ Write data to the SPI bus.
- Return
- Number of written bytes or negative error code.
- Parameters
self_p
-Initialized driver object.
buf_p
-Buffer to write.
size
-Number of bytes to write.
-
ssize_t
spi_get
(struct spi_driver_t *self_p, uint8_t *data_p)¶ Get one byte of data from the SPI bus.
- Return
- Number of read bytes or negative error code.
- Parameters
self_p
-Initialized driver object.
data_p
-Read data.
-
ssize_t
spi_put
(struct spi_driver_t *self_p, uint8_t data)¶ Put one byte of data to the SPI bus.
- Return
- Number of written bytes or negative error code.
- Parameters
self_p
-Initialized driver object.
data
-data to write.
Variables
-
struct spi_device_t
spi_device
[SPI_DEVICE_MAX]¶