14 #include <wpi/ArrayRef.h> 15 #include <wpi/deprecated.h> 17 #include "ErrorBase.h" 19 enum HAL_SPIPort : int32_t;
34 enum Port { kOnboardCS0 = 0, kOnboardCS1, kOnboardCS2, kOnboardCS3, kMXP };
41 explicit SPI(Port port);
46 SPI& operator=(
const SPI&) =
delete;
86 WPI_DEPRECATED(
"Use SetSampleDataOnTrailingEdge in most cases.")
93 WPI_DEPRECATED(
"Use SetSampleDataOnLeadingEdge in most cases")
125 virtual int Write(uint8_t* data,
int size);
140 virtual int Read(
bool initiate, uint8_t* dataReceived,
int size);
149 virtual int Transaction(uint8_t* dataToSend, uint8_t* dataReceived,
int size);
248 void InitAccumulator(
double period,
int cmd,
int xferSize,
int validMask,
249 int validValue,
int dataShift,
int dataSize,
250 bool isSigned,
bool bigEndian);
319 bool m_msbFirst =
false;
320 bool m_sampleOnTrailing =
false;
321 bool m_clk_idle_high =
false;
327 std::unique_ptr<Accumulator> m_accum;
Definition: Utility.cpp:119
void SetAccumulatorCenter(int center)
Set the center value of the accumulator.
Definition: SPI.cpp:320
void SetAccumulatorDeadband(int deadband)
Set the accumulator's deadband.
Definition: SPI.cpp:326
void GetAccumulatorOutput(int64_t &value, int64_t &count) const
Read the accumulated value and the number of accumulated values atomically.
Definition: SPI.cpp:361
double GetAccumulatorAverage() const
Read the average of the accumulated value.
Definition: SPI.cpp:353
void SetMSBFirst()
Configure the order that bits are sent and received on the wire to be most significant bit first...
Definition: SPI.cpp:143
void SetSampleDataOnLeadingEdge()
Configure that the data is stable on the leading edge and the data changes on the trailing edge...
Definition: SPI.cpp:153
void FreeAccumulator()
Frees the accumulator.
Definition: SPI.cpp:307
virtual int Write(uint8_t *data, int size)
Write data to the slave device.
Definition: SPI.cpp:195
int64_t GetAccumulatorValue() const
Read the accumulated value.
Definition: SPI.cpp:339
void StartAutoRate(double period)
Start running the automatic SPI transfer engine at a periodic rate.
Definition: SPI.cpp:238
void SetChipSelectActiveLow()
Configure the chip select line to be active low.
Definition: SPI.cpp:189
void SetChipSelectActiveHigh()
Configure the chip select line to be active high.
Definition: SPI.cpp:183
void StartAutoTrigger(DigitalSource &source, bool rising, bool falling)
Start running the automatic SPI transfer engine when a trigger occurs.
Definition: SPI.cpp:244
SPI bus interface class.
Definition: SPI.h:32
void StopAuto()
Stop running the automatic SPI transfer engine.
Definition: SPI.cpp:253
int ReadAutoReceivedData(uint8_t *buffer, int numToRead, double timeout)
Read data that has been transferred by the automatic SPI transfer engine.
Definition: SPI.cpp:265
void SetAutoTransmitData(wpi::ArrayRef< uint8_t > dataToSend, int zeroSize)
Set the data to be transmitted by the engine.
Definition: SPI.cpp:231
void SetSampleDataOnTrailingEdge()
Configure that the data is stable on the trailing edge and the data changes on the leading edge...
Definition: SPI.cpp:158
void FreeAuto()
Frees the automatic SPI transfer engine.
Definition: SPI.cpp:225
void ResetAccumulator()
Resets the accumulator to zero.
Definition: SPI.cpp:312
void ForceAutoRead()
Force the engine to make a single transfer.
Definition: SPI.cpp:259
DigitalSource Interface.
Definition: DigitalSource.h:25
void SetSampleDataOnRising()
Configure that the data is stable on the rising edge and the data changes on the falling edge...
Definition: SPI.cpp:168
virtual int Read(bool initiate, uint8_t *dataReceived, int size)
Read a word from the receive FIFO.
Definition: SPI.cpp:201
Base class for most objects.
Definition: ErrorBase.h:74
void SetClockActiveHigh()
Configure the clock output line to be active high.
Definition: SPI.cpp:178
int GetAutoDroppedCount()
Get the number of bytes dropped by the automatic SPI transfer engine due to the receive buffer being ...
Definition: SPI.cpp:273
void SetLSBFirst()
Configure the order that bits are sent and received on the wire to be least significant bit first...
Definition: SPI.cpp:148
void InitAccumulator(double period, int cmd, int xferSize, int validMask, int validValue, int dataShift, int dataSize, bool isSigned, bool bigEndian)
Initialize the accumulator.
Definition: SPI.cpp:280
virtual int Transaction(uint8_t *dataToSend, uint8_t *dataReceived, int size)
Perform a simultaneous read/write transaction with the device.
Definition: SPI.cpp:213
void SetClockRate(double hz)
Configure the rate of the generated clock signal.
Definition: SPI.cpp:141
void InitAuto(int bufferSize)
Initialize automatic SPI transfer engine.
Definition: SPI.cpp:219
int GetAccumulatorLastValue() const
Read the last value read by the accumulator engine.
Definition: SPI.cpp:332
int64_t GetAccumulatorCount() const
Read the number of accumulated values.
Definition: SPI.cpp:346
void SetClockActiveLow()
Configure the clock output line to be active low.
Definition: SPI.cpp:173
SPI(Port port)
Constructor.
Definition: SPI.cpp:129
void SetSampleDataOnFalling()
Configure that the data is stable on the falling edge and the data changes on the rising edge...
Definition: SPI.cpp:163