Skyward boardcore
Loading...
Searching...
No Matches
Boardcore::SPITransaction Class Reference

Provides high-level access to the SPI Bus for a single transaction. More...

#include <SPITransaction.h>

Public Member Functions

 SPITransaction (const SPISlave &slave)
 Instantiates a new SPITransaction, configuring the bus with the provided parameters.
 
 SPITransaction (const SPITransaction &)=delete
 < Delete copy/move constructors/operators.
 
SPITransactionoperator= (const SPITransaction &)=delete
 
 SPITransaction (SPITransaction &&)=delete
 
SPITransactionoperator= (SPITransaction &&)=delete
 
SPIBusInterfacegetBus ()
 Returns the underlying bus for low level access.
 
uint8_t read ()
 Reads a single byte from the bus.
 
uint16_t read16 ()
 Reads a single half word from the bus.
 
virtual uint32_t read24 ()
 Reads 24 bits from the bus.
 
virtual uint32_t read32 ()
 Reads 32 bits from the bus.
 
void read (uint8_t *data, size_t size)
 Reads multiple bytes from the bus.
 
void read16 (uint16_t *data, size_t size)
 Reads multiple half words from the bus.
 
void write (uint8_t data)
 Writes a single byte to the bus.
 
void write16 (uint16_t data)
 Writes a single half word to the bus.
 
virtual void write24 (uint32_t data)
 Writes 24 bits to the bus.
 
virtual void write32 (uint32_t data)
 Writes 32 bits to the bus.
 
void write (uint8_t *data, size_t size)
 Writes multiple bytes to the bus.
 
void write16 (uint16_t *data, size_t size)
 Writes multiple half words to the bus.
 
uint8_t transfer (uint8_t data)
 Full duplex transmission of one byte on the bus.
 
uint16_t transfer16 (uint16_t data)
 Full duplex transmission of one half word on the bus.
 
virtual uint32_t transfer24 (uint32_t data)
 Full duplex transmission of 24 bits on the bus.
 
virtual uint32_t transfer32 (uint32_t data)
 Full duplex transmission of 32 bits on the bus.
 
void transfer (uint8_t *data, size_t size)
 Full duplex transmission of multiple bytes on the bus.
 
void transfer16 (uint16_t *data, size_t size)
 Full duplex transmission of multiple half words on the bus.
 
uint8_t readRegister (uint8_t reg)
 Reads an 8 bit register.
 
uint16_t readRegister16 (uint8_t reg)
 Reads a 16 bit register.
 
uint32_t readRegister24 (uint8_t reg)
 Reads a 24 bit register.
 
uint32_t readRegister32 (uint8_t reg)
 Reads a 32 bit register.
 
void readRegisters (uint8_t reg, uint8_t *data, size_t size)
 Reads multiple bytes starting from the specified register.
 
void writeRegister (uint8_t reg, uint8_t data)
 Writes an 8 bit register.
 
void writeRegister16 (uint8_t reg, uint16_t data)
 Writes a 16 bit register.
 
void writeRegister24 (uint8_t reg, uint32_t data)
 Writes a 24 bit register.
 
void writeRegister32 (uint8_t reg, uint32_t data)
 Writes a 32 bit register.
 
void writeRegisters (uint8_t reg, uint8_t *data, size_t size)
 Writes multiple bytes starting from the specified register.
 

Detailed Description

Provides high-level access to the SPI Bus for a single transaction.

To make sure the bus is properly configured for the provided slave, you have to create a new instance of this class for every transaction, as the bus is configured upon instantiation.

Warning
DO NOT store an instance of this class for later use, as the bus may be incorrectly configured by then.

Example transaction:

{ // Transaction begin: SPITransaction spi(bus, cs, config); // Configures the bus with the // provided parameters.

spi.write(REG_EX, 0x56); // writes data to REG_EX uint8_t reg2 = spi.read(REG_EX_2); // reads from REG_EX_2

// ...As many read/writes as you wish...

// transaction end. SPITransaction object is destructed and the bus is // freed for use by someone else }

Definition at line 56 of file SPITransaction.h.

Constructor & Destructor Documentation

◆ SPITransaction() [1/3]

Boardcore::SPITransaction::SPITransaction ( const SPISlave & slave)
explicit

Instantiates a new SPITransaction, configuring the bus with the provided parameters.

Parameters
slaveSlave to communicate with.

Definition at line 30 of file SPITransaction.cpp.

◆ SPITransaction() [2/3]

Boardcore::SPITransaction::SPITransaction ( const SPITransaction & )
delete

< Delete copy/move constructors/operators.

◆ SPITransaction() [3/3]

Boardcore::SPITransaction::SPITransaction ( SPITransaction && )
delete

Member Function Documentation

◆ getBus()

SPIBusInterface & Boardcore::SPITransaction::getBus ( )

Returns the underlying bus for low level access.

Returns
SPIBusInterface associated with this transaction.

Definition at line 35 of file SPITransaction.cpp.

◆ operator=() [1/2]

SPITransaction & Boardcore::SPITransaction::operator= ( const SPITransaction & )
delete

◆ operator=() [2/2]

SPITransaction & Boardcore::SPITransaction::operator= ( SPITransaction && )
delete

◆ read() [1/2]

uint8_t Boardcore::SPITransaction::read ( )

Reads a single byte from the bus.

Returns
Byte read from the bus.

Definition at line 39 of file SPITransaction.cpp.

◆ read() [2/2]

void Boardcore::SPITransaction::read ( uint8_t * data,
size_t size )

Reads multiple bytes from the bus.

Parameters
dataBuffer to be filled with received data.
sizeSize of the buffer in bytes.

Definition at line 73 of file SPITransaction.cpp.

◆ read16() [1/2]

uint16_t Boardcore::SPITransaction::read16 ( )

Reads a single half word from the bus.

Returns
Half word read from the bus.

Definition at line 48 of file SPITransaction.cpp.

◆ read16() [2/2]

void Boardcore::SPITransaction::read16 ( uint16_t * data,
size_t size )

Reads multiple half words from the bus.

Parameters
dataBuffer to be filled with received data.
sizeSize of the buffer in bytes.

Definition at line 80 of file SPITransaction.cpp.

◆ read24()

uint32_t Boardcore::SPITransaction::read24 ( )
virtual

Reads 24 bits from the bus.

Returns
Bytes read from the bus (MSB of the uint32_t value will be 0).

Definition at line 57 of file SPITransaction.cpp.

◆ read32()

uint32_t Boardcore::SPITransaction::read32 ( )
virtual

Reads 32 bits from the bus.

Returns
Word read from the bus.

Definition at line 65 of file SPITransaction.cpp.

◆ readRegister()

uint8_t Boardcore::SPITransaction::readRegister ( uint8_t reg)

Reads an 8 bit register.

Returns
Byte read from the register.

Definition at line 181 of file SPITransaction.cpp.

◆ readRegister16()

uint16_t Boardcore::SPITransaction::readRegister16 ( uint8_t reg)

Reads a 16 bit register.

Returns
Byte read from the register.

Definition at line 194 of file SPITransaction.cpp.

◆ readRegister24()

uint32_t Boardcore::SPITransaction::readRegister24 ( uint8_t reg)

Reads a 24 bit register.

Returns
Byte read from the register.

Definition at line 210 of file SPITransaction.cpp.

◆ readRegister32()

uint32_t Boardcore::SPITransaction::readRegister32 ( uint8_t reg)

Reads a 32 bit register.

Returns
Byte read from the register.

Definition at line 226 of file SPITransaction.cpp.

◆ readRegisters()

void Boardcore::SPITransaction::readRegisters ( uint8_t reg,
uint8_t * data,
size_t size )

Reads multiple bytes starting from the specified register.

Parameters
dataBuffer to be filled with received data.
sizeSize of the buffer in bytes.

Definition at line 242 of file SPITransaction.cpp.

◆ transfer() [1/2]

void Boardcore::SPITransaction::transfer ( uint8_t * data,
size_t size )

Full duplex transmission of multiple bytes on the bus.

Parameters
dataBuffer containing data to transfer.
sizeSize of the buffer in bytes.

Definition at line 165 of file SPITransaction.cpp.

◆ transfer() [2/2]

uint8_t Boardcore::SPITransaction::transfer ( uint8_t data)

Full duplex transmission of one byte on the bus.

Parameters
dataByte to write.
Returns
Byte read from the bus.

Definition at line 129 of file SPITransaction.cpp.

◆ transfer16() [1/2]

void Boardcore::SPITransaction::transfer16 ( uint16_t * data,
size_t size )

Full duplex transmission of multiple half words on the bus.

Parameters
dataBuffer containing data to transfer.
sizeSize of the buffer in bytes.

Definition at line 172 of file SPITransaction.cpp.

◆ transfer16() [2/2]

uint16_t Boardcore::SPITransaction::transfer16 ( uint16_t data)

Full duplex transmission of one half word on the bus.

Parameters
dataHalf word to write.
Returns
Half word read from the bus.

Definition at line 138 of file SPITransaction.cpp.

◆ transfer24()

uint32_t Boardcore::SPITransaction::transfer24 ( uint32_t data)
virtual

Full duplex transmission of 24 bits on the bus.

Parameters
dataBytes to write (the MSB of the uint32_t is not used).
Returns
Bytes read from the bus (the MSB of the uint32_t will be 0).

Definition at line 147 of file SPITransaction.cpp.

◆ transfer32()

uint32_t Boardcore::SPITransaction::transfer32 ( uint32_t data)
virtual

Full duplex transmission of 32 bits on the bus.

Parameters
dataWord to write.
Returns
Half word read from the bus.

Definition at line 156 of file SPITransaction.cpp.

◆ write() [1/2]

void Boardcore::SPITransaction::write ( uint8_t * data,
size_t size )

Writes multiple bytes to the bus.

Parameters
dataBuffer containing data to write.
sizeSize of the buffer in bytes.

Definition at line 115 of file SPITransaction.cpp.

◆ write() [2/2]

void Boardcore::SPITransaction::write ( uint8_t data)

Writes a single byte to the bus.

Parameters
dataByte to write.

Definition at line 87 of file SPITransaction.cpp.

◆ write16() [1/2]

void Boardcore::SPITransaction::write16 ( uint16_t * data,
size_t size )

Writes multiple half words to the bus.

Parameters
dataBuffer containing data to write.
sizeSize of the buffer in bytes.

Definition at line 122 of file SPITransaction.cpp.

◆ write16() [2/2]

void Boardcore::SPITransaction::write16 ( uint16_t data)

Writes a single half word to the bus.

Parameters
dataHalf word to write.

Definition at line 94 of file SPITransaction.cpp.

◆ write24()

void Boardcore::SPITransaction::write24 ( uint32_t data)
virtual

Writes 24 bits to the bus.

Parameters
dataBytes to write (the MSB of the uint32_t is not used).

Definition at line 101 of file SPITransaction.cpp.

◆ write32()

void Boardcore::SPITransaction::write32 ( uint32_t data)
virtual

Writes 32 bits to the bus.

Parameters
dataWord to write.

Definition at line 108 of file SPITransaction.cpp.

◆ writeRegister()

void Boardcore::SPITransaction::writeRegister ( uint8_t reg,
uint8_t data )

Writes an 8 bit register.

Parameters
regRegister address.
dataByte to write.

Definition at line 253 of file SPITransaction.cpp.

◆ writeRegister16()

void Boardcore::SPITransaction::writeRegister16 ( uint8_t reg,
uint16_t data )

Writes a 16 bit register.

Parameters
regRegister address.
dataByte to write.

Definition at line 264 of file SPITransaction.cpp.

◆ writeRegister24()

void Boardcore::SPITransaction::writeRegister24 ( uint8_t reg,
uint32_t data )

Writes a 24 bit register.

Parameters
regRegister address.
dataByte to write.

Definition at line 275 of file SPITransaction.cpp.

◆ writeRegister32()

void Boardcore::SPITransaction::writeRegister32 ( uint8_t reg,
uint32_t data )

Writes a 32 bit register.

Parameters
regRegister address.
dataByte to write.

Definition at line 286 of file SPITransaction.cpp.

◆ writeRegisters()

void Boardcore::SPITransaction::writeRegisters ( uint8_t reg,
uint8_t * data,
size_t size )

Writes multiple bytes starting from the specified register.

Parameters
regRegister start address.
dataBuffer containing data to write.
sizeSize of the buffer in bytes.

Definition at line 297 of file SPITransaction.cpp.


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