WPILibC++  2019.3.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
SPI Functions

Functions

 HAL_ENUM (HAL_SPIPort)
 
void HAL_InitializeSPI (HAL_SPIPort port, int32_t *status)
 Initializes the SPI port. More...
 
int32_t HAL_TransactionSPI (HAL_SPIPort port, const uint8_t *dataToSend, uint8_t *dataReceived, int32_t size)
 Performs an SPI send/receive transaction. More...
 
int32_t HAL_WriteSPI (HAL_SPIPort port, const uint8_t *dataToSend, int32_t sendSize)
 Executes a write transaction with the device. More...
 
int32_t HAL_ReadSPI (HAL_SPIPort port, uint8_t *buffer, int32_t count)
 Executes a read from the device. More...
 
void HAL_CloseSPI (HAL_SPIPort port)
 Closes the SPI port. More...
 
void HAL_SetSPISpeed (HAL_SPIPort port, int32_t speed)
 Sets the clock speed for the SPI bus. More...
 
void HAL_SetSPIOpts (HAL_SPIPort port, HAL_Bool msbFirst, HAL_Bool sampleOnTrailing, HAL_Bool clkIdleHigh)
 Sets the SPI options. More...
 
void HAL_SetSPIChipSelectActiveHigh (HAL_SPIPort port, int32_t *status)
 Sets the CS Active high for a SPI port. More...
 
void HAL_SetSPIChipSelectActiveLow (HAL_SPIPort port, int32_t *status)
 Sets the CS Active low for a SPI port. More...
 
int32_t HAL_GetSPIHandle (HAL_SPIPort port)
 Gets the stored handle for a SPI port. More...
 
void HAL_SetSPIHandle (HAL_SPIPort port, int32_t handle)
 Sets the stored handle for a SPI port. More...
 
void HAL_InitSPIAuto (HAL_SPIPort port, int32_t bufferSize, int32_t *status)
 Initializes the SPI automatic accumulator. More...
 
void HAL_FreeSPIAuto (HAL_SPIPort port, int32_t *status)
 Frees an SPI automatic accumulator. More...
 
void HAL_StartSPIAutoRate (HAL_SPIPort port, double period, int32_t *status)
 Sets the period for automatic SPI accumulation. More...
 
void HAL_StartSPIAutoTrigger (HAL_SPIPort port, HAL_Handle digitalSourceHandle, HAL_AnalogTriggerType analogTriggerType, HAL_Bool triggerRising, HAL_Bool triggerFalling, int32_t *status)
 Starts the auto SPI accumulator on a specific trigger. More...
 
void HAL_StopSPIAuto (HAL_SPIPort port, int32_t *status)
 Stops an automatic SPI accumlation. More...
 
void HAL_SetSPIAutoTransmitData (HAL_SPIPort port, const uint8_t *dataToSend, int32_t dataSize, int32_t zeroSize, int32_t *status)
 Sets the data to be transmitted to the device to initiate a read. More...
 
void HAL_ForceSPIAutoRead (HAL_SPIPort port, int32_t *status)
 Immediately forces an SPI read to happen. More...
 
int32_t HAL_ReadSPIAutoReceivedData (HAL_SPIPort port, uint32_t *buffer, int32_t numToRead, double timeout, int32_t *status)
 Reads data received by the SPI accumulator. More...
 
int32_t HAL_GetSPIAutoDroppedCount (HAL_SPIPort port, int32_t *status)
 Gets the count of how many SPI accumulations have been missed. More...
 

Detailed Description

Function Documentation

void HAL_CloseSPI ( HAL_SPIPort  port)

Closes the SPI port.

Parameters
portThe number of the port to use. 0-3 for Onboard CS0-CS2, 4 for MXP
void HAL_ForceSPIAutoRead ( HAL_SPIPort  port,
int32_t *  status 
)

Immediately forces an SPI read to happen.

Parameters
portThe number of the port to use. 0-3 for Onboard CS0-CS2, 4 for MXP.
void HAL_FreeSPIAuto ( HAL_SPIPort  port,
int32_t *  status 
)

Frees an SPI automatic accumulator.

Parameters
portThe number of the port to use. 0-3 for Onboard CS0-CS2, 4 for MXP.
int32_t HAL_GetSPIAutoDroppedCount ( HAL_SPIPort  port,
int32_t *  status 
)

Gets the count of how many SPI accumulations have been missed.

Parameters
portThe number of the port to use. 0-3 for Onboard CS0-CS2, 4 for MXP.
Returns
The number of missed accumulations.
int32_t HAL_GetSPIHandle ( HAL_SPIPort  port)

Gets the stored handle for a SPI port.

Parameters
portThe number of the port to use. 0-3 for Onboard CS0-CS2, 4 for MXP
Returns
The stored handle for the SPI port. 0 represents no stored handle.
void HAL_InitializeSPI ( HAL_SPIPort  port,
int32_t *  status 
)

Initializes the SPI port.

Opens the port if necessary and saves the handle.

If opening the MXP port, also sets up the channel functions appropriately.

Parameters
portThe number of the port to use. 0-3 for Onboard CS0-CS3, 4 for MXP
void HAL_InitSPIAuto ( HAL_SPIPort  port,
int32_t  bufferSize,
int32_t *  status 
)

Initializes the SPI automatic accumulator.

Parameters
portThe number of the port to use. 0-3 for Onboard CS0-CS2, 4 for MXP.
bufferSizeThe accumulator buffer size.
int32_t HAL_ReadSPI ( HAL_SPIPort  port,
uint8_t *  buffer,
int32_t  count 
)

Executes a read from the device.

This method does not write any data out to the device.

Most spi devices will require a register address to be written before they begin returning data.

Parameters
portThe number of the port to use. 0-3 for Onboard CS0-CS2, 4 for MXP
bufferA pointer to the array of bytes to store the data read from the device.
countThe number of bytes to read in the transaction. [1..7]
Returns
Number of bytes read. -1 for error.
int32_t HAL_ReadSPIAutoReceivedData ( HAL_SPIPort  port,
uint32_t *  buffer,
int32_t  numToRead,
double  timeout,
int32_t *  status 
)

Reads data received by the SPI accumulator.

Each received data sequence consists of a timestamp followed by the received data bytes, one byte per word (in the least significant byte). The length of each received data sequence is the same as the combined dataSize + zeroSize set in HAL_SetSPIAutoTransmitData.

Parameters
portThe number of the port to use. 0-3 for Onboard CS0-CS2, 4 for MXP.
bufferThe buffer to store the data into.
numToReadThe number of words to read.
timeoutThe read timeout (in seconds).
Returns
The number of words actually read.
void HAL_SetSPIAutoTransmitData ( HAL_SPIPort  port,
const uint8_t *  dataToSend,
int32_t  dataSize,
int32_t  zeroSize,
int32_t *  status 
)

Sets the data to be transmitted to the device to initiate a read.

Parameters
portThe number of the port to use. 0-3 for Onboard CS0-CS2, 4 for MXP.
dataToSendPointer to the data to send (Gets copied for continue use, so no need to keep alive).
dataSizeThe length of the data to send.
zeroSizeThe number of zeros to send after the data.
void HAL_SetSPIChipSelectActiveHigh ( HAL_SPIPort  port,
int32_t *  status 
)

Sets the CS Active high for a SPI port.

Parameters
portThe number of the port to use. 0-3 for Onboard CS0-CS2, 4 for MXP
void HAL_SetSPIChipSelectActiveLow ( HAL_SPIPort  port,
int32_t *  status 
)

Sets the CS Active low for a SPI port.

Parameters
portThe number of the port to use. 0-3 for Onboard CS0-CS2, 4 for MXP
void HAL_SetSPIHandle ( HAL_SPIPort  port,
int32_t  handle 
)

Sets the stored handle for a SPI port.

Parameters
portThe number of the port to use. 0-3 for Onboard CS0-CS2, 4 for MXP.
handleThe value of the handle for the port.
void HAL_SetSPIOpts ( HAL_SPIPort  port,
HAL_Bool  msbFirst,
HAL_Bool  sampleOnTrailing,
HAL_Bool  clkIdleHigh 
)

Sets the SPI options.

Parameters
portThe number of the port to use. 0-3 for Onboard CS0-CS2, 4 for MXP
msbFirstTrue to write the MSB first, False for LSB first
sampleOnTrailingTrue to sample on the trailing edge, False to sample on the leading edge
clkIdleHighTrue to set the clock to active low, False to set the clock active high
void HAL_SetSPISpeed ( HAL_SPIPort  port,
int32_t  speed 
)

Sets the clock speed for the SPI bus.

Parameters
portThe number of the port to use. 0-3 for Onboard CS0-CS2, 4 for MXP
speedThe speed in Hz (0-1MHz)
void HAL_StartSPIAutoRate ( HAL_SPIPort  port,
double  period,
int32_t *  status 
)

Sets the period for automatic SPI accumulation.

Parameters
portThe number of the port to use. 0-3 for Onboard CS0-CS2, 4 for MXP.
periodThe accumlation period (seconds).
void HAL_StartSPIAutoTrigger ( HAL_SPIPort  port,
HAL_Handle  digitalSourceHandle,
HAL_AnalogTriggerType  analogTriggerType,
HAL_Bool  triggerRising,
HAL_Bool  triggerFalling,
int32_t *  status 
)

Starts the auto SPI accumulator on a specific trigger.

Note that triggering on both rising and falling edges is a valid configuration.

Parameters
portThe number of the port to use. 0-3 for Onboard CS0-CS2, 4 for MXP.
digitalSourceHandleThe trigger source to use (Either HAL_AnalogTriggerHandle or HAL_DigitalHandle).
analogTriggerTypeThe analog trigger type, if the source is an analog trigger.
triggerRisingTrigger on the rising edge if true.
triggerFallingTrigger on the falling edge if true.
void HAL_StopSPIAuto ( HAL_SPIPort  port,
int32_t *  status 
)

Stops an automatic SPI accumlation.

Parameters
portThe number of the port to use. 0-3 for Onboard CS0-CS2, 4 for MXP.
int32_t HAL_TransactionSPI ( HAL_SPIPort  port,
const uint8_t *  dataToSend,
uint8_t *  dataReceived,
int32_t  size 
)

Performs an SPI send/receive transaction.

This is a lower-level interface to the spi hardware giving you more control over each transaction.

Parameters
portThe number of the port to use. 0-3 for Onboard CS0-CS2, 4 for MXP
dataToSendBuffer of data to send as part of the transaction.
dataReceivedBuffer to read data into.
sizeNumber of bytes to transfer. [0..7]
Returns
Number of bytes transferred, -1 for error
int32_t HAL_WriteSPI ( HAL_SPIPort  port,
const uint8_t *  dataToSend,
int32_t  sendSize 
)

Executes a write transaction with the device.

Writes to a device and wait until the transaction is complete.

Parameters
portThe number of the port to use. 0-3 for Onboard CS0-CS2, 4 for MXP
datToSendThe data to write to the register on the device.
sendSizeThe number of bytes to be written
Returns
The number of bytes written. -1 for an error