modm API documentation

#include <modm/platform/spi/spi_hal_5.hpp>

Inheritance diagram for modm::platform::SpiHal5:
modm::platform::SpiBase

Public Types

enum  CrcInit : uint32_t { AllZeros = 0, AllOnes = SPI_CR1_TCRCINI | SPI_CR1_RCRCINI, Mask = AllOnes }
 
enum  DataMode : uint32_t {
  DataMode::Mode0 = 0b00, DataMode::Mode1 = SPI_CFG2_CPHA, DataMode::Mode2 = SPI_CFG2_CPOL, Mode3 = SPI_CFG2_CPOL | SPI_CFG2_CPHA,
  Mask = Mode3
}
 
enum  DataOrder : uint32_t { MsbFirst = 0b0, LsbFirst = SPI_CFG2_LSBFRST, Mask = LsbFirst }
 
enum  DataSize : uint32_t {
  Bit4 = 3, Bit5 = 4, Bit6 = 5, Bit7 = 6,
  Bit8 = 7, Bit9 = 8, Bit10 = 9, Bit11 = 10,
  Bit12 = 11, Bit13 = 12, Bit14 = 13, Bit15 = 14,
  Bit16 = 15, Bit17 = 16, Bit18 = 17, Bit19 = 18,
  Bit20 = 19, Bit21 = 20, Bit22 = 21, Bit23 = 22,
  Bit24 = 23, Bit25 = 24, Bit26 = 25, Bit27 = 26,
  Bit28 = 27, Bit29 = 28, Bit30 = 29, Bit31 = 30,
  Bit32 = 31
}
 
enum  DmaMode : uint32_t { None = 0, Tx = SPI_CFG1_TXDMAEN, Rx = SPI_CFG1_RXDMAEN, Mask = SPI_CFG1_TXDMAEN | SPI_CFG1_RXDMAEN }
 
enum  DuplexMode : uint32_t {
  FullDuplex = 0, TransmitOnly = SPI_CFG2_COMM_0, ReceiveOnly = SPI_CFG2_COMM_1, HalfDuplex = SPI_CFG2_COMM_1 | SPI_CFG2_COMM_0,
  Mask = HalfDuplex
}
 
enum  Interrupt : uint32_t {
  RxPacketAvailable = SPI_IER_RXPIE, TxPacketSpaceAvailable = SPI_IER_TXPIE, DuplexPacket = SPI_IER_DXPIE, EndOfTransfer = SPI_IER_EOTIE,
  TxTransferFilled = SPI_IER_TXTFIE, Underrun = SPI_IER_UDRIE, Overrun = SPI_IER_OVRIE, CrcError = SPI_IER_CRCEIE,
  TiFrameError = SPI_IER_TIFREIE, ModeFault = SPI_IER_MODFIE, Reload = SPI_IER_TSERFIE
}
 
enum  MasterSelection : uint32_t { Slave = 0, Master = SPI_CFG2_MASTER, Mask = Master }
 
enum  Prescaler : uint32_t {
  Div2 = 0, Div4 = SPI_CFG1_MBR_0, Div8 = SPI_CFG1_MBR_1, Div16 = SPI_CFG1_MBR_1 | SPI_CFG1_MBR_0,
  Div32 = SPI_CFG1_MBR_2, Div64 = SPI_CFG1_MBR_2 | SPI_CFG1_MBR_0, Div128 = SPI_CFG1_MBR_2 | SPI_CFG1_MBR_1, Div256 = SPI_CFG1_MBR_2 | SPI_CFG1_MBR_1 | SPI_CFG1_MBR_0
}
 
enum  SlaveSelectMode { HardwareGpio, Software = SPI_CFG2_SSM }
 
enum  SlaveSelectPolarity { ActiveLow = 0, ActiveHigh = SPI_CFG2_SSIOP }
 
enum  StatusFlag : uint32_t {
  RxPacketAvailable = SPI_SR_RXP, TxPacketSpaceAvailable = SPI_SR_TXP, DuplexPacket = SPI_SR_DXP, EndOfTransfer = SPI_SR_EOT,
  TxTransferFilled = SPI_SR_TXTF, Underrun = SPI_SR_UDR, Overrun = SPI_SR_OVR, CrcError = SPI_SR_CRCE,
  TiFrameError = SPI_SR_TIFRE, ModeFault = SPI_SR_MODF, Reload = SPI_SR_TSERF, Suspension = SPI_SR_SUSP,
  TxTransferComplete = SPI_SR_TXC, RxFifoLevel1 = SPI_SR_RXPLVL_1, RxFifoLevel0 = SPI_SR_RXPLVL_0, RxFifoWordNotEmpty = SPI_SR_RXWNE
}
 

Public Member Functions

 MODM_FLAGS32 (Interrupt)
 
 MODM_FLAGS32 (StatusFlag)
 
 MODM_FLAGS32 (DmaMode)
 

Static Public Member Functions

static void enableClock ()
 
static void disableClock ()
 
static void initialize (Prescaler prescaler, MasterSelection masterSelection=MasterSelection::Master, DataMode dataMode=DataMode::Mode0, DataOrder dataOrder=DataOrder::MsbFirst, DataSize dataSize=DataSize::Bit8)
 
static void enableTransfer ()
 
static void disableTransfer ()
 
static bool isTransferEnabled ()
 
static void startMasterTransfer ()
 
static void suspendMasterTransfer ()
 
static void setDataMode (DataMode dataMode)
 
static void setDataOrder (DataOrder dataOrder)
 
static void setDataSize (DataSize dataSize)
 
static void setMasterSelection (MasterSelection masterSelection)
 
static void setDuplexMode (DuplexMode mode)
 
static void setCrcEnabled (bool enabled)
 
static void setCrcSize (DataSize crcSize)
 
static void setCrcPolynomial (uint32_t poly)
 
static void setCrcInitialValue (CrcInit init)
 
static void setDmaMode (DmaMode_t mode)
 
static void setTransferSize (uint16_t size, uint16_t reload=0)
 
static void setSlaveSelectMode (SlaveSelectMode mode)
 
static void setSlaveSelectPolarity (SlaveSelectPolarity polarity)
 
static void setSlaveSelectState (bool state)
 
static uint32_t transmitCrc ()
 
static uint32_t receiveCrc ()
 
static volatile uint32_t * transmitRegister ()
 
static const volatile uint32_t * receiveRegister ()
 
static StatusFlag_t status ()
 
static bool isTransferCompleted ()
 
static bool isTxCompleted ()
 
static bool isTxFifoFull ()
 
static bool isRxDataAvailable ()
 
static void write (uint8_t data)
 
static void write16 (uint16_t data)
 
static void write32 (uint32_t data)
 
static uint8_t read ()
 
static uint16_t read16 ()
 
static uint32_t read32 ()
 
static void enableInterruptVector (bool enable, uint32_t priority)
 
static void enableInterrupt (Interrupt_t interrupt)
 
static void disableInterrupt (Interrupt_t interrupt)
 
static void acknowledgeInterruptFlags (StatusFlag_t flags)
 

Static Public Attributes

static constexpr auto peripheral = Peripheral::Spi5
 
static constexpr DataSize MaxDataBits = DataSize::Bit16
 
static constexpr DataSize MaxCrcBits = DataSize::Bit16
 
static constexpr std::size_t MaxTransferSize = 65535
 Maximum permitted size for fixed size transfers.
 
static constexpr std::size_t FifoSize = 8
 Size of FIFO in bytes.
 

Detailed Description

Serial peripheral interface (SPI5)

Member Enumeration Documentation

enum modm::platform::SpiBase::DataMode : uint32_t
inheritedstrong
Enum ValuesDocumentation
Mode0 

clock normal, sample on rising edge

Mode1 

clock normal, sample on falling edge

Mode2 

clock inverted, sample on falling edge clock inverted, sample on rising edge

Member Function Documentation

static bool modm::platform::SpiHal5::isRxDataAvailable ( )
static
Returns
true if SPI_SR_RXP is set
static bool modm::platform::SpiHal5::isTransferCompleted ( )
static
Returns
true if SPI_SR_EOT is set
static bool modm::platform::SpiHal5::isTxCompleted ( )
static
Returns
true if SPI_SR_TXC is set
static bool modm::platform::SpiHal5::isTxFifoFull ( )
static
Returns
true if SPI_SR_TXP is not set
static uint8_t modm::platform::SpiHal5::read ( )
static

Read an 8-bit value from the receive data register.

Warning
Reading with a size smaller than the configured data size is not allowed.
static uint16_t modm::platform::SpiHal5::read16 ( )
static

Read a 16-bit value from the receive data register.

Warning
Reading with a size smaller than the configured data size is not allowed.
static uint32_t modm::platform::SpiHal5::read32 ( )
static

Read a 32-bit value from the receive data register.

static void modm::platform::SpiHal5::setTransferSize ( uint16_t  size,
uint16_t  reload = 0 
)
static

Configure total amount of data items of transfer Set size to 0 for unlimited transfers.

Parameters
reloadNext transfer size after reload
static void modm::platform::SpiHal5::write ( uint8_t  data)
static

Write up to 8 Bit to the transmit data register

Warning
Writing with a size smaller than the configured data size is not allowed.
static void modm::platform::SpiHal5::write16 ( uint16_t  data)
static

Write up to 16 Bit to the data register

Warning
Writing with a size smaller than the configured data size is not allowed.
static void modm::platform::SpiHal5::write32 ( uint32_t  data)
static

Write up to 32 Bit to the transmit data register


The documentation for this class was generated from the following file: