14 #include <hal/SPITypes.h>
15 #include <wpi/ArrayRef.h>
16 #include <wpi/deprecated.h>
18 #include "frc/ErrorBase.h"
33 enum Port { kOnboardCS0 = 0, kOnboardCS1, kOnboardCS2, kOnboardCS3, kMXP };
40 explicit SPI(Port port);
85 WPI_DEPRECATED(
"Use SetSampleDataOnTrailingEdge in most cases.")
92 WPI_DEPRECATED(
"Use SetSampleDataOnLeadingEdge in most cases")
124 virtual int Write(uint8_t* data,
int size);
139 virtual int Read(
bool initiate, uint8_t* dataReceived,
int size);
148 virtual int Transaction(uint8_t* dataToSend, uint8_t* dataReceived,
int size);
252 void InitAccumulator(
double period,
int cmd,
int xferSize,
int validMask,
253 int validValue,
int dataShift,
int dataSize,
254 bool isSigned,
bool bigEndian);
348 HAL_SPIPort m_port = HAL_SPI_kInvalid;
349 bool m_msbFirst =
false;
350 bool m_sampleOnTrailing =
false;
351 bool m_clockIdleHigh =
false;
357 std::unique_ptr<Accumulator> m_accum;
WPILib FRC namespace.
Definition: SPIAccelerometerSim.h:18
void SetSampleDataOnLeadingEdge()
Configure that the data is stable on the leading edge and the data changes on the trailing edge...
double GetAccumulatorIntegratedValue() const
Read the integrated value.
void SetChipSelectActiveHigh()
Configure the chip select line to be active high.
void SetLSBFirst()
Configure the order that bits are sent and received on the wire to be least significant bit first...
void SetAccumulatorDeadband(int deadband)
Set the accumulator's deadband.
virtual int Read(bool initiate, uint8_t *dataReceived, int size)
Read a word from the receive FIFO.
void SetMSBFirst()
Configure the order that bits are sent and received on the wire to be most significant bit first...
int GetAutoDroppedCount()
Get the number of bytes dropped by the automatic SPI transfer engine due to the receive buffer being ...
double GetAccumulatorIntegratedAverage() const
Read the average of the integrated value.
void StartAutoRate(double period)
Start running the automatic SPI transfer engine at a periodic rate.
void ResetAccumulator()
Resets the accumulator to zero.
int64_t GetAccumulatorValue() const
Read the accumulated value.
void SetAccumulatorCenter(int center)
Set the center value of the accumulator.
void SetClockActiveLow()
Configure the clock output line to be active low.
void SetAutoTransmitData(wpi::ArrayRef< uint8_t > dataToSend, int zeroSize)
Set the data to be transmitted by the engine.
SPI bus interface class.
Definition: SPI.h:31
void StartAutoTrigger(DigitalSource &source, bool rising, bool falling)
Start running the automatic SPI transfer engine when a trigger occurs.
double GetAccumulatorAverage() const
Read the average of the accumulated value.
void SetChipSelectActiveLow()
Configure the chip select line to be active low.
void SetClockActiveHigh()
Configure the clock output line to be active high.
void InitAccumulator(double period, int cmd, int xferSize, int validMask, int validValue, int dataShift, int dataSize, bool isSigned, bool bigEndian)
Initialize the accumulator.
void SetSampleDataOnRising()
Configure that the data is stable on the rising edge and the data changes on the falling edge...
int64_t GetAccumulatorCount() const
Read the number of accumulated values.
virtual int Write(uint8_t *data, int size)
Write data to the slave device.
DigitalSource Interface.
Definition: DigitalSource.h:25
void InitAuto(int bufferSize)
Initialize automatic SPI transfer engine.
void FreeAccumulator()
Frees the accumulator.
void StopAuto()
Stop running the automatic SPI transfer engine.
SPI(Port port)
Constructor.
int ReadAutoReceivedData(uint32_t *buffer, int numToRead, double timeout)
Read data that has been transferred by the automatic SPI transfer engine.
Base class for most objects.
Definition: ErrorBase.h:74
void GetAccumulatorOutput(int64_t &value, int64_t &count) const
Read the accumulated value and the number of accumulated values atomically.
void FreeAuto()
Frees the automatic SPI transfer engine.
void SetSampleDataOnTrailingEdge()
Configure that the data is stable on the trailing edge and the data changes on the leading edge...
void SetAccumulatorIntegratedCenter(double center)
Set the center value of the accumulator integrator.
virtual int Transaction(uint8_t *dataToSend, uint8_t *dataReceived, int size)
Perform a simultaneous read/write transaction with the device.
void SetClockRate(double hz)
Configure the rate of the generated clock signal.
void SetSampleDataOnFalling()
Configure that the data is stable on the falling edge and the data changes on the rising edge...
int GetAccumulatorLastValue() const
Read the last value read by the accumulator engine.
void ForceAutoRead()
Force the engine to make a single transfer.