semf
semf::Spi Class Referenceabstract

Interface for SPI specific functionalities, which are not solved in a generic way in CommunicationHardware. More...

#include <spi.h>

Inheritance diagram for semf::Spi:
Inheritance graph
Collaboration diagram for semf::Spi:
Collaboration graph

Public Types

enum class  TransmissionMode : uint8_t { Mode0 , Mode1 , Mode2 , Mode3 }
 
enum class  WireMode : uint8_t { FullDuplexWires , HalfDuplexWires , WriteOnlyWires , ReadOnlyWires }
 

Public Member Functions

virtual ~Spi ()=default
 
virtual void writeRead (const uint8_t writeData[], uint8_t readBuffer[], size_t size)=0
 For writing and reading data parallel through the communication hardware 1) For interrupt or one shot dma mode, dataAvailable signal will be fired after successful read/write. 2) For cyclic dma mode, do not use this function. More...
 
virtual void setFormat (uint8_t bits, TransmissionMode transmission, WireMode wire)=0
 Sets the format for the spi slave device. More...
 

Detailed Description

Interface for SPI specific functionalities, which are not solved in a generic way in CommunicationHardware.

See also
CommunicationHardware
SpiMasterHardware

Definition at line 24 of file spi.h.

Member Enumeration Documentation

◆ TransmissionMode

enum class semf::Spi::TransmissionMode : uint8_t
strong

Data transmission mode (POL (polarity) and PHA (phase) setting).

Enumerator
Mode0 

POL is low, PHA is low.

Mode1 

POL is low, PHA is high.

Mode2 

POL is high, PHA is low.

Mode3 

POL is high, PHA is high.

Definition at line 28 of file spi.h.

◆ WireMode

enum class semf::Spi::WireMode : uint8_t
strong

Wire mode.

Enumerator
FullDuplexWires 

CLK, MISO and MOSI pins used.

HalfDuplexWires 

CLK, MISO / MOSI pins used (MISO and MOSI pin is shared)

WriteOnlyWires 

CLK and MOSI pins used (no master receive)

ReadOnlyWires 

CLK and MISO pins used (no master write)

Definition at line 36 of file spi.h.

Constructor & Destructor Documentation

◆ ~Spi()

virtual semf::Spi::~Spi ( )
virtualdefault

Member Function Documentation

◆ setFormat()

virtual void semf::Spi::setFormat ( uint8_t  bits,
TransmissionMode  transmission,
WireMode  wire 
)
pure virtual

Sets the format for the spi slave device.

Parameters
bitsnumber of bits per frame
transmissiontransmission mode (polarity and phase setting)
wirewire transmission setting

Implemented in semf::SpiMasterHardware, and semf::SpiSlaveHardware.

◆ writeRead()

virtual void semf::Spi::writeRead ( const uint8_t  writeData[],
uint8_t  readBuffer[],
size_t  size 
)
pure virtual

For writing and reading data parallel through the communication hardware 1) For interrupt or one shot dma mode, dataAvailable signal will be fired after successful read/write. 2) For cyclic dma mode, do not use this function.

Parameters
writeDatadata array for write data
readBufferdata array for read data
sizedata array size

Implemented in semf::SpiMasterHardware, and semf::SpiSlaveHardware.