27 peripheral.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_4;
30 peripheral.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
65 void transmit(
const uint8_t* buf,uint16_t size,
SPIDevice* device,uint16_t timeout);
virtual bool updateCSPin(OutputPin &csPin)
virtual void beginSpiTransfer(SPIPort *port)
SPIDevice(SPIPort &port, OutputPin csPin)
virtual void spiTxCompleted(SPIPort *port)
virtual SPIConfig * getSpiConfig()
virtual void endSpiTransfer(SPIPort *port)
virtual void setSpiConfig(SPIConfig config)
virtual void spiRequestError(SPIPort *port)
virtual void spiRxCompleted(SPIPort *port)
virtual void spiTxRxCompleted(SPIPort *port)
void beginTransfer(SPIConfig *config)
void transmitReceive(const uint8_t *txbuf, uint8_t *rxbuf, uint16_t size, SPIDevice *device, uint16_t timeout)
void transmit_IT(const uint8_t *buf, uint16_t size, SPIDevice *device)
std::vector< OutputPin > & getCsPins()
SPIDevice * current_device
bool isPinFree(OutputPin pin)
void takeExclusive(bool exclusive)
bool reserveCsPin(OutputPin pin)
std::pair< uint32_t, float > getClosestPrescaler(float clock)
std::vector< OutputPin > & getFreeCsPins()
std::vector< OutputPin > freePins
SPI_HandleTypeDef * getPortHandle()
void receive(uint8_t *buf, uint16_t size, SPIDevice *device, int16_t timeout)
void transmitReceive_DMA(const uint8_t *txbuf, uint8_t *rxbuf, uint16_t size, SPIDevice *device)
void SpiError(SPI_HandleTypeDef *hspi) override
void SpiTxCplt(SPI_HandleTypeDef *hspi) override
void transmit(const uint8_t *buf, uint16_t size, SPIDevice *device, uint16_t timeout)
void receive_DMA(uint8_t *buf, uint16_t size, SPIDevice *device)
void transmitReceive_IT(const uint8_t *txbuf, uint8_t *rxbuf, uint16_t size, SPIDevice *device)
void transmit_DMA(const uint8_t *buf, uint16_t size, SPIDevice *device)
void endTransfer(SPIConfig *config)
OutputPin * getCsPin(uint16_t idx)
std::vector< OutputPin > csPins
void SpiTxRxCplt(SPI_HandleTypeDef *hspi) override
void configurePort(SPI_InitTypeDef *config)
void receive_IT(uint8_t *buf, uint16_t size, SPIDevice *device)
bool freeCsPin(OutputPin pin)
volatile bool isTakenFlag
void SpiRxCplt(SPI_HandleTypeDef *hspi) override
cpp_freertos::BinarySemaphore semaphore
SPIPort(SPI_HandleTypeDef &hspi, const std::vector< OutputPin > &csPins, uint32_t baseclk, bool allowReconfigure=true)
SPI_InitTypeDef peripheral
bool cspol
CSPOL=true === active low.
SPIConfig(OutputPin cs, bool cspol=true)