Now you can download a copy of these docs so you can use them offline! Download now

#include <SPI.h>

Inheritance diagram for SPI:
Collaboration diagram for SPI:

List of all members.

Public Types

enum  tFrameMode { kChipSelect, kPreLatchPulse, kPostLatchPulse, kPreAndPostLatchPulse }
enum  tSPIConstants { kReceiveFIFODepth = 512, kTransmitFIFODepth = 512 }

Public Member Functions

 SPI (DigitalOutput &clk, DigitalOutput &mosi, DigitalInput &miso)
 SPI (DigitalOutput *clk, DigitalOutput *mosi, DigitalInput *miso)
 SPI (DigitalOutput &clk, DigitalOutput &mosi)
 SPI (DigitalOutput *clk, DigitalOutput *mosi)
 SPI (DigitalOutput &clk, DigitalInput &miso)
 SPI (DigitalOutput *clk, DigitalInput *miso)
virtual ~SPI ()
void SetBitsPerWord (UINT32 bits)
UINT32 GetBitsPerWord ()
void SetClockRate (double hz)
void SetMSBFirst ()
void SetLSBFirst ()
void SetSampleDataOnFalling ()
void SetSampleDataOnRising ()
void SetSlaveSelect (DigitalOutput *ss, tFrameMode mode=kChipSelect, bool activeLow=false)
void SetSlaveSelect (DigitalOutput &ss, tFrameMode mode=kChipSelect, bool activeLow=false)
DigitalOutputGetSlaveSelect (tFrameMode *mode=NULL, bool *activeLow=NULL)
void SetClockActiveLow ()
void SetClockActiveHigh ()
virtual void ApplyConfig ()
virtual UINT16 GetOutputFIFOAvailable ()
virtual UINT16 GetNumReceived ()
virtual bool IsDone ()
bool HadReceiveOverflow ()
virtual void Write (UINT32 data)
virtual UINT32 Read (bool initiate=false)
virtual void Reset ()
virtual void ClearReceivedData ()

Protected Attributes

tSPI * m_spi
tSPI::tConfig m_config
tSPI::tChannels m_channels
DigitalOutputm_ss

Static Protected Attributes

static SEM_ID m_semaphore = NULL

Detailed Description

SPI bus interface class.

This class is intended to be used by sensor (and other SPI device) drivers. It probably should not be used directly.

The FPGA only supports a single SPI interface.

Definition at line 24 of file SPI.h.


Constructor & Destructor Documentation

SPI::SPI ( DigitalOutput clk,
DigitalOutput mosi,
DigitalInput miso 
)

Constructor for input and output.

Parameters:
clk The digital output for the clock signal.
mosi The digital output for the written data to the slave (master-out slave-in).
miso The digital input for the input data from the slave (master-in slave-out).

Definition at line 29 of file SPI.cpp.

SPI::SPI ( DigitalOutput clk,
DigitalOutput mosi,
DigitalInput miso 
)

Constructor for input and output.

Parameters:
clk The digital output for the clock signal.
mosi The digital output for the written data to the slave (master-out slave-in).
miso The digital input for the input data from the slave (master-in slave-out).

Definition at line 43 of file SPI.cpp.

SPI::SPI ( DigitalOutput clk,
DigitalOutput mosi 
)

Constructor for output only.

Parameters:
clk The digital output for the clock signal.
mosi The digital output for the written data to the slave (master-out slave-in).

Definition at line 55 of file SPI.cpp.

SPI::SPI ( DigitalOutput clk,
DigitalOutput mosi 
)

Constructor for output only.

Parameters:
clk The digital output for the clock signal.
mosi The digital output for the written data to the slave (master-out slave-in).

Definition at line 67 of file SPI.cpp.

SPI::SPI ( DigitalOutput clk,
DigitalInput miso 
)

Constructor for input only.

Parameters:
clk The digital output for the clock signal.
miso The digital input for the input data from the slave (master-in slave-out).

Definition at line 79 of file SPI.cpp.

SPI::SPI ( DigitalOutput clk,
DigitalInput miso 
)

Constructor for input only.

Parameters:
clk The digital output for the clock signal.
miso The digital input for the input data from the slave (master-in slave-out).

Definition at line 91 of file SPI.cpp.

SPI::~SPI (  )  [virtual]

Destructor.

Definition at line 99 of file SPI.cpp.


Member Function Documentation

void SPI::ApplyConfig (  )  [virtual]

Apply configuration settings and reset the SPI logic.

Definition at line 358 of file SPI.cpp.

void SPI::ClearReceivedData (  )  [virtual]

Empty the receive FIFO.

Definition at line 518 of file SPI.cpp.

UINT32 SPI::GetBitsPerWord (  ) 

Get the number of bits from each word that the slave transmits or receives.

Returns:
The number of bits in one frame (1 to 32 bits).

Definition at line 181 of file SPI.cpp.

UINT16 SPI::GetNumReceived (  )  [virtual]

Get the number of words received and currently available to be read from the receive FIFO.

Returns:
The number of words available to read.

Definition at line 389 of file SPI.cpp.

UINT16 SPI::GetOutputFIFOAvailable (  )  [virtual]

Get the number of words that can currently be stored before being transmitted to the device.

Returns:
The number of words available to be written.

Definition at line 375 of file SPI.cpp.

DigitalOutput * SPI::GetSlaveSelect ( tFrameMode *  mode = NULL,
bool *  activeLow = NULL 
)

Get the slave select line behavior.

Parameters:
mode Frame mode: kChipSelect: active for the duration of the frame. kPreLatchPulse: pulses before the transfer of each frame. kPostLatchPulse: pulses after the transfer of each frame. kPreAndPostLatchPulse: pulses before and after each frame.
activeLow True if slave select line is active low.
Returns:
The slave select digital output.

Definition at line 324 of file SPI.cpp.

bool SPI::HadReceiveOverflow (  ) 

Determine if the receive FIFO was full when attempting to add new data at end of a transfer.

Returns:
True if the receive FIFO overflowed.

Definition at line 416 of file SPI.cpp.

bool SPI::IsDone (  )  [virtual]

Have all pending transfers completed?

Returns:
True if no transfers are pending.

Definition at line 402 of file SPI.cpp.

UINT32 SPI::Read ( bool  initiate = false  )  [virtual]

Read a word from the receive FIFO.

Waits for the current transfer to complete if the receive FIFO is empty.

If the receive FIFO is empty, there is no active transfer, and initiate is false, errors.

Parameters:
initiate If true, this function pushes "0" into the transmit buffer and initiates a transfer. If false, this function assumes that data is already in the receive FIFO from a previous write.

Definition at line 463 of file SPI.cpp.

void SPI::Reset (  )  [virtual]

Stop any transfer in progress and empty the transmit FIFO.

Definition at line 508 of file SPI.cpp.

void SPI::SetBitsPerWord ( UINT32  bits  ) 

Configure the number of bits from each word that the slave transmits or receives.

Parameters:
bits The number of bits in one frame (1 to 32 bits).

Definition at line 170 of file SPI.cpp.

void SPI::SetClockActiveHigh (  ) 

Configure the clock output line to be active high. This is sometimes called clock polarity low.

Definition at line 350 of file SPI.cpp.

void SPI::SetClockActiveLow (  ) 

Configure the clock output line to be active low. This is sometimes called clock polarity high.

Definition at line 341 of file SPI.cpp.

void SPI::SetClockRate ( double  hz  ) 

Configure the rate of the generated clock signal. The default and maximum value is 76,628.4 Hz.

Parameters:
hz The clock rate in Hertz.

Definition at line 192 of file SPI.cpp.

void SPI::SetLSBFirst (  ) 

Configure the order that bits are sent and received on the wire to be least significant bit first.

Definition at line 226 of file SPI.cpp.

void SPI::SetMSBFirst (  ) 

Configure the order that bits are sent and received on the wire to be most significant bit first.

Definition at line 217 of file SPI.cpp.

void SPI::SetSampleDataOnFalling (  ) 

Configure that the data is stable on the falling edge and the data changes on the rising edge.

Definition at line 235 of file SPI.cpp.

void SPI::SetSampleDataOnRising (  ) 

Configure that the data is stable on the rising edge and the data changes on the falling edge.

Definition at line 244 of file SPI.cpp.

void SPI::SetSlaveSelect ( DigitalOutput ss,
tFrameMode  mode = kChipSelect,
bool  activeLow = false 
)

Configure the slave select line behavior.

Parameters:
ss slave select digital output.
mode Frame mode: kChipSelect: active for the duration of the frame. kPreLatchPulse: pulses before the transfer of each frame. kPostLatchPulse: pulses after the transfer of each frame. kPreAndPostLatchPulse: pulses before and after each frame.
activeLow True if slave select line is active low.

Definition at line 260 of file SPI.cpp.

void SPI::SetSlaveSelect ( DigitalOutput ss,
tFrameMode  mode = kChipSelect,
bool  activeLow = false 
)

Configure the slave select line behavior.

Parameters:
ss slave select digital output.
mode Frame mode: kChipSelect: active for the duration of the frame. kPreLatchPulse: pulses before the transfer of each frame. kPostLatchPulse: pulses after the transfer of each frame. kPreAndPostLatchPulse: pulses before and after each frame.
activeLow True if slave select line is active low.

Definition at line 308 of file SPI.cpp.

void SPI::Write ( UINT32  data  )  [virtual]

Write a word to the slave device. Blocks until there is space in the output FIFO.

If not running in output only mode, also saves the data received on the MISO input during the transfer into the receive FIFO.

Definition at line 431 of file SPI.cpp.


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

Generated on Thu Jan 12 2012 22:35:37 for WPILibC++ by doxygen 1.7.1