Skyward boardcore
|
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. | |
SPITransaction & | operator= (const SPITransaction &)=delete |
SPITransaction (SPITransaction &&)=delete | |
SPITransaction & | operator= (SPITransaction &&)=delete |
SPIBusInterface & | getBus () |
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. | |
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.
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.
|
explicit |
Instantiates a new SPITransaction, configuring the bus with the provided parameters.
slave | Slave to communicate with. |
Definition at line 30 of file SPITransaction.cpp.
|
delete |
< Delete copy/move constructors/operators.
|
delete |
SPIBusInterface & Boardcore::SPITransaction::getBus | ( | ) |
Returns the underlying bus for low level access.
Definition at line 35 of file SPITransaction.cpp.
|
delete |
|
delete |
uint8_t Boardcore::SPITransaction::read | ( | ) |
Reads a single byte from the bus.
Definition at line 39 of file SPITransaction.cpp.
void Boardcore::SPITransaction::read | ( | uint8_t * | data, |
size_t | size ) |
Reads multiple bytes from the bus.
data | Buffer to be filled with received data. |
size | Size of the buffer in bytes. |
Definition at line 73 of file SPITransaction.cpp.
uint16_t Boardcore::SPITransaction::read16 | ( | ) |
Reads a single half word from the bus.
Definition at line 48 of file SPITransaction.cpp.
void Boardcore::SPITransaction::read16 | ( | uint16_t * | data, |
size_t | size ) |
Reads multiple half words from the bus.
data | Buffer to be filled with received data. |
size | Size of the buffer in bytes. |
Definition at line 80 of file SPITransaction.cpp.
|
virtual |
Reads 24 bits from the bus.
Definition at line 57 of file SPITransaction.cpp.
|
virtual |
Reads 32 bits from the bus.
Definition at line 65 of file SPITransaction.cpp.
uint8_t Boardcore::SPITransaction::readRegister | ( | uint8_t | reg | ) |
Reads an 8 bit register.
Definition at line 181 of file SPITransaction.cpp.
uint16_t Boardcore::SPITransaction::readRegister16 | ( | uint8_t | reg | ) |
Reads a 16 bit register.
Definition at line 194 of file SPITransaction.cpp.
uint32_t Boardcore::SPITransaction::readRegister24 | ( | uint8_t | reg | ) |
Reads a 24 bit register.
Definition at line 210 of file SPITransaction.cpp.
uint32_t Boardcore::SPITransaction::readRegister32 | ( | uint8_t | reg | ) |
Reads a 32 bit register.
Definition at line 226 of file SPITransaction.cpp.
void Boardcore::SPITransaction::readRegisters | ( | uint8_t | reg, |
uint8_t * | data, | ||
size_t | size ) |
Reads multiple bytes starting from the specified register.
data | Buffer to be filled with received data. |
size | Size of the buffer in bytes. |
Definition at line 242 of file SPITransaction.cpp.
void Boardcore::SPITransaction::transfer | ( | uint8_t * | data, |
size_t | size ) |
Full duplex transmission of multiple bytes on the bus.
data | Buffer containing data to transfer. |
size | Size of the buffer in bytes. |
Definition at line 165 of file SPITransaction.cpp.
uint8_t Boardcore::SPITransaction::transfer | ( | uint8_t | data | ) |
Full duplex transmission of one byte on the bus.
data | Byte to write. |
Definition at line 129 of file SPITransaction.cpp.
void Boardcore::SPITransaction::transfer16 | ( | uint16_t * | data, |
size_t | size ) |
Full duplex transmission of multiple half words on the bus.
data | Buffer containing data to transfer. |
size | Size of the buffer in bytes. |
Definition at line 172 of file SPITransaction.cpp.
uint16_t Boardcore::SPITransaction::transfer16 | ( | uint16_t | data | ) |
Full duplex transmission of one half word on the bus.
data | Half word to write. |
Definition at line 138 of file SPITransaction.cpp.
|
virtual |
Full duplex transmission of 24 bits on the bus.
data | Bytes to write (the MSB of the uint32_t is not used). |
Definition at line 147 of file SPITransaction.cpp.
|
virtual |
Full duplex transmission of 32 bits on the bus.
data | Word to write. |
Definition at line 156 of file SPITransaction.cpp.
void Boardcore::SPITransaction::write | ( | uint8_t * | data, |
size_t | size ) |
Writes multiple bytes to the bus.
data | Buffer containing data to write. |
size | Size of the buffer in bytes. |
Definition at line 115 of file SPITransaction.cpp.
void Boardcore::SPITransaction::write | ( | uint8_t | data | ) |
Writes a single byte to the bus.
data | Byte to write. |
Definition at line 87 of file SPITransaction.cpp.
void Boardcore::SPITransaction::write16 | ( | uint16_t * | data, |
size_t | size ) |
Writes multiple half words to the bus.
data | Buffer containing data to write. |
size | Size of the buffer in bytes. |
Definition at line 122 of file SPITransaction.cpp.
void Boardcore::SPITransaction::write16 | ( | uint16_t | data | ) |
Writes a single half word to the bus.
data | Half word to write. |
Definition at line 94 of file SPITransaction.cpp.
|
virtual |
Writes 24 bits to the bus.
data | Bytes to write (the MSB of the uint32_t is not used). |
Definition at line 101 of file SPITransaction.cpp.
|
virtual |
Writes 32 bits to the bus.
data | Word to write. |
Definition at line 108 of file SPITransaction.cpp.
void Boardcore::SPITransaction::writeRegister | ( | uint8_t | reg, |
uint8_t | data ) |
Writes an 8 bit register.
reg | Register address. |
data | Byte to write. |
Definition at line 253 of file SPITransaction.cpp.
void Boardcore::SPITransaction::writeRegister16 | ( | uint8_t | reg, |
uint16_t | data ) |
Writes a 16 bit register.
reg | Register address. |
data | Byte to write. |
Definition at line 264 of file SPITransaction.cpp.
void Boardcore::SPITransaction::writeRegister24 | ( | uint8_t | reg, |
uint32_t | data ) |
Writes a 24 bit register.
reg | Register address. |
data | Byte to write. |
Definition at line 275 of file SPITransaction.cpp.
void Boardcore::SPITransaction::writeRegister32 | ( | uint8_t | reg, |
uint32_t | data ) |
Writes a 32 bit register.
reg | Register address. |
data | Byte to write. |
Definition at line 286 of file SPITransaction.cpp.
void Boardcore::SPITransaction::writeRegisters | ( | uint8_t | reg, |
uint8_t * | data, | ||
size_t | size ) |
Writes multiple bytes starting from the specified register.
reg | Register start address. |
data | Buffer containing data to write. |
size | Size of the buffer in bytes. |
Definition at line 297 of file SPITransaction.cpp.