25#include <interfaces/endianness.h>
41 slave.bus.select(slave.cs);
42 uint8_t data = slave.bus.read();
43 slave.bus.deselect(slave.cs);
50 slave.bus.select(slave.cs);
51 uint16_t data = slave.bus.read16();
52 slave.bus.deselect(slave.cs);
59 slave.bus.select(slave.cs);
60 uint32_t data = slave.bus.read24();
61 slave.bus.deselect(slave.cs);
67 slave.bus.select(slave.cs);
68 uint32_t data = slave.bus.read32();
69 slave.bus.deselect(slave.cs);
75 slave.bus.select(slave.cs);
76 slave.bus.read(data, size);
77 slave.bus.deselect(slave.cs);
82 slave.bus.select(slave.cs);
83 slave.bus.read16(data, size);
84 slave.bus.deselect(slave.cs);
89 slave.bus.select(slave.cs);
90 slave.bus.write(data);
91 slave.bus.deselect(slave.cs);
96 slave.bus.select(slave.cs);
97 slave.bus.write16(data);
98 slave.bus.deselect(slave.cs);
103 slave.bus.select(slave.cs);
104 slave.bus.write24(data);
105 slave.bus.deselect(slave.cs);
110 slave.bus.select(slave.cs);
111 slave.bus.write32(data);
112 slave.bus.deselect(slave.cs);
117 slave.bus.select(slave.cs);
118 slave.bus.write(data, size);
119 slave.bus.deselect(slave.cs);
124 slave.bus.select(slave.cs);
125 slave.bus.write16(data, size);
126 slave.bus.deselect(slave.cs);
131 slave.bus.select(slave.cs);
132 data = slave.bus.transfer(data);
133 slave.bus.deselect(slave.cs);
140 slave.bus.select(slave.cs);
141 data = slave.bus.transfer16(data);
142 slave.bus.deselect(slave.cs);
149 slave.bus.select(slave.cs);
150 data = slave.bus.transfer24(data);
151 slave.bus.deselect(slave.cs);
158 slave.bus.select(slave.cs);
159 data = slave.bus.transfer32(data);
160 slave.bus.deselect(slave.cs);
167 slave.bus.select(slave.cs);
168 slave.bus.transfer(data, size);
169 slave.bus.deselect(slave.cs);
174 slave.bus.select(slave.cs);
175 slave.bus.transfer16(data, size);
176 slave.bus.deselect(slave.cs);
186 slave.bus.select(slave.cs);
187 slave.bus.write(reg);
188 uint8_t data = slave.bus.read();
189 slave.bus.deselect(slave.cs);
199 slave.bus.select(slave.cs);
200 slave.bus.write(reg);
201 uint16_t data = slave.bus.read16();
202 slave.bus.deselect(slave.cs);
205 data = swapBytes16(data);
215 slave.bus.select(slave.cs);
216 slave.bus.write(reg);
217 uint32_t data = slave.bus.read24();
218 slave.bus.deselect(slave.cs);
221 data = swapBytes32(data) >> 8;
231 slave.bus.select(slave.cs);
232 slave.bus.write(reg);
233 uint32_t data = slave.bus.read32();
234 slave.bus.deselect(slave.cs);
237 data = swapBytes32(data) >> 8;
247 slave.bus.select(slave.cs);
248 slave.bus.write(reg);
249 slave.bus.read(data, size);
250 slave.bus.deselect(slave.cs);
258 slave.bus.select(slave.cs);
259 slave.bus.write(reg);
260 slave.bus.write(data);
261 slave.bus.deselect(slave.cs);
269 slave.bus.select(slave.cs);
270 slave.bus.write(reg);
271 slave.bus.write16(data);
272 slave.bus.deselect(slave.cs);
280 slave.bus.select(slave.cs);
281 slave.bus.write(reg);
282 slave.bus.write24(data);
283 slave.bus.deselect(slave.cs);
291 slave.bus.select(slave.cs);
292 slave.bus.write(reg);
293 slave.bus.write32(data);
294 slave.bus.deselect(slave.cs);
302 slave.bus.select(slave.cs);
303 slave.bus.write(reg);
304 slave.bus.write(data, size);
305 slave.bus.deselect(slave.cs);
Interface for low level access of a SPI bus as a master.
virtual void configure(SPIBusConfig config)=0
Configures the bus with the provided configuration parameters.
virtual uint32_t read32()
Reads 32 bits from the bus.
void write16(uint16_t data)
Writes a single half word to the bus.
void write(uint8_t data)
Writes a single byte to the bus.
uint8_t readRegister(uint8_t reg)
Reads an 8 bit register.
void writeRegister32(uint8_t reg, uint32_t data)
Writes a 32 bit register.
uint8_t read()
Reads a single byte from the bus.
void writeRegisters(uint8_t reg, uint8_t *data, size_t size)
Writes multiple bytes starting from the specified register.
virtual void write32(uint32_t data)
Writes 32 bits to the bus.
uint16_t transfer16(uint16_t data)
Full duplex transmission of one half word on the bus.
virtual uint32_t read24()
Reads 24 bits from the bus.
void writeRegister24(uint8_t reg, uint32_t data)
Writes 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.
SPIBusInterface & getBus()
Returns the underlying bus for low level access.
virtual void write24(uint32_t data)
Writes 24 bits to the bus.
SPITransaction(const SPISlave &slave)
Instantiates a new SPITransaction, configuring the bus with the provided parameters.
virtual uint32_t transfer24(uint32_t data)
Full duplex transmission of 24 bits on the bus.
uint32_t readRegister24(uint8_t reg)
Reads a 24 bit register.
void writeRegister16(uint8_t reg, uint16_t data)
Writes a 16 bit register.
uint8_t transfer(uint8_t data)
Full duplex transmission of one byte on the bus.
uint16_t readRegister16(uint8_t reg)
Reads a 16 bit register.
virtual uint32_t transfer32(uint32_t data)
Full duplex transmission of 32 bits on the bus.
uint16_t read16()
Reads a single half word from the bus.
@ NORMAL
Normal write bit settings (0 for write, 1 for reads)
@ INVERTED
Inverted write bit settings (1 for write, 0 for reads)
This file includes all the types the logdecoder script will decode.
Contains information about a single SPI slave device.
SPIBusInterface & bus
Bus on which the slave is connected.