82 #define SPI_BIT_RXNE ((uint16_t)0x0001) 83 #define SPI_BIT_TXE ((uint16_t)0x0002) 84 #define SPI_BIT_CRCERR ((uint16_t)0x0010) 85 #define SPI_BIT_MODF ((uint16_t)0x0020) 86 #define SPI_BIT_OVR ((uint16_t)0x0040) 87 #define SPI_BIT_BSY ((uint16_t)0x0080) 88 #define SPI_BIT_TIFRFE ((uint16_t)0x0100) 90 #define SPI_size_16b ((uint16_t)0x0800) 91 #define SPI_size_8b ((uint16_t)0x0000) 93 #define SPI_DMAreq_Tx ((uint16_t)0x0002) 94 #define SPI_DMAreq_Rx ((uint16_t)0x0001) 113 #define SPI_INTERRUPTS_ALL (SPI_TXE_INTERRUPT | \ 114 SPI_RXNE_INTERRUPT | \ 130 dev->
SPIx->CR1 |= SPI_CR1_SPE;
140 dev->
SPIx->CR1 &= (uint16_t)~((uint16_t)SPI_CR1_SPE);
172 const gpio_dev *comm_dev, uint8_t sck_bit,
217 uint32_t
spi_tx(
const spi_dev *dev,
const void *buf, uint16_t len);
220 const uint8_t *txbuf,
228 return dev->
SPIx->CR1 & SPI_CR1_SPE;
238 dev->
SPIx->CR2 |= interrupt_flags;
242 dev->
SPIx->CR2 &= ~interrupt_flags;
247 return dev->
SPIx->CR2 & interrupt_flags;
260 return (uint8_t)dev->
SPIx->DR;
286 dev->
SPIx->CR2 |= SPI_DMAReq;
291 dev->
SPIx->CR2 &= (uint16_t)~SPI_DMAReq;
298 IRQn_Type irq=dev->
irq;
static void spi_disable_dma_req(const spi_dev *dev, uint16_t SPI_DMAReq)
const spi_dev *const _SPI2
const spi_dev *const _SPI3
uint32_t spi_tx(const spi_dev *dev, const void *buf, uint16_t len)
static void spi_peripheral_disable(const spi_dev *dev)
Disable a SPI peripheral.
static void spi_attach_interrupt(const spi_dev *dev, Handler handler)
static void spi_wait_busy(const spi_dev *dev)
void spi_foreach(void(*fn)(const spi_dev *))
Call a function on each SPI port.
#define SPI_INTERRUPTS_ALL
Mask for all spi_interrupt values.
void spi_reconfigure(const spi_dev *dev, uint8_t ismaster, uint16_t baudPrescaler, uint16_t bitorder, uint8_t mode)
void spi_gpio_master_cfg(const spi_dev *dev, const gpio_dev *comm_dev, uint8_t sck_bit, uint8_t miso_bit, uint8_t mosi_bit)
Configure and enable a SPI device as bus master.
static void spi_enable_dma_req(const spi_dev *dev, uint16_t SPI_DMAReq)
static uint8_t spi_rx_reg(const spi_dev *dev)
static void spi_peripheral_disable_all(void)
static void spi_detach_interrupt(const spi_dev *dev)
spi_mode
SPI mode configuration.
static AP_HAL::OwnPtr< AP_HAL::Device > dev
const spi_dev *const _SPI1
static void spi_disable_irq(const spi_dev *dev, spi_interrupt interrupt_flags)
static uint8_t spi_is_busy(const spi_dev *dev)
static uint8_t spi_is_enabled(const spi_dev *dev)
void enable_nvic_irq(uint8_t irq, uint8_t prio)
void spi_set_speed(const spi_dev *dev, uint16_t baudPrescaler)
static void spi_master_enable(const spi_dev *dev, spi_baud_rate baudPrescaler, spi_mode mode, uint16_t bitorder)
Configure GPIO bit modes for use as a SPI port's pins.
static bool spi_is_irq_enabled(const spi_dev *dev, uint32_t interrupt_flags)
static uint8_t spi_is_tx_empty(const spi_dev *dev)
enum Dma_stream dma_stream
static void spi_tx_reg(const spi_dev *dev, uint8_t val)
struct SPI_state spi_state
spi_baud_rate
SPI baud rate configuration, as a divisor of f_PCLK, the PCLK clock frequency.
static void spi_peripheral_enable(const spi_dev *dev)
Enable a SPI peripheral.
int spimaster_transfer(const spi_dev *dev, const uint8_t *txbuf, uint16_t txcount, uint8_t *rxbuf, uint16_t rxcount)
void spi_gpio_slave_cfg(const spi_dev *dev, const gpio_dev *comm_dev, uint8_t sck_bit, uint8_t miso_bit, uint8_t mosi_bit)
void spi_slave_enable(const spi_dev *dev, spi_mode mode, uint16_t bitorder)
Configure and enable a SPI device as a bus slave.
static uint16_t spi_dff(const spi_dev *dev)
static uint8_t spi_is_rx_nonempty(const spi_dev *dev)
void spi_init(const spi_dev *dev)
Initialize and reset a SPI device.
static void spi_enable_irq(const spi_dev *dev, spi_interrupt interrupt_flags)