Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of mbed-src by
SPI Class Reference
A SPI Master, used for communicating with SPI slave devices. More...
#include <SPI.h>
Public Member Functions | |
SPI (PinName mosi, PinName miso, PinName sclk, PinName ssel=NC) | |
Create a SPI master connected to the specified pins. | |
void | format (int bits, int mode=0) |
Configure the data transmission format. | |
void | frequency (int hz=1000000) |
Set the spi bus clock frequency. | |
virtual int | write (int value) |
Write to the SPI Slave and return the response. | |
template<typename Type > | |
int | transfer (const Type *tx_buffer, int tx_length, Type *rx_buffer, int rx_length, const event_callback_t &callback, int event=SPI_EVENT_COMPLETE) |
Start non-blocking SPI transfer using 8bit buffers. | |
void | abort_transfer () |
Abort the on-going SPI transfer, and continue with transfer's in the queue if any. | |
void | clear_transfer_buffer () |
Clear the transaction buffer. | |
void | abort_all_transfers () |
Clear the transaction buffer and abort on-going transfer. | |
int | set_dma_usage (DMAUsage usage) |
Configure DMA usage suggestion for non-blocking transfers. | |
Protected Member Functions | |
void | irq_handler_asynch (void) |
SPI IRQ handler. | |
int | transfer (const void *tx_buffer, int tx_length, void *rx_buffer, int rx_length, unsigned char bit_width, const event_callback_t &callback, int event) |
Common transfer method. | |
int | queue_transfer (const void *tx_buffer, int tx_length, void *rx_buffer, int rx_length, unsigned char bit_width, const event_callback_t &callback, int event) |
void | start_transfer (const void *tx_buffer, int tx_length, void *rx_buffer, int rx_length, unsigned char bit_width, const event_callback_t &callback, int event) |
Configures a callback, spi peripheral and initiate a new transfer. | |
void | start_transaction (transaction_t *data) |
Start a new transaction. | |
void | dequeue_transaction () |
Dequeue a transaction. |
Detailed Description
A SPI Master, used for communicating with SPI slave devices.
The default format is set to 8-bits, mode 0, and a clock frequency of 1MHz
Most SPI devices will also require Chip Select and Reset signals. These can be controlled using <DigitalOut> pins
Example:
// Send a byte to a SPI slave, and record the response #include "mbed.h" // hardware ssel (where applicable) //SPI device(p5, p6, p7, p8); // mosi, miso, sclk, ssel // software ssel SPI device(p5, p6, p7); // mosi, miso, sclk DigitalOut cs(p8); // ssel int main() { // hardware ssel (where applicable) //int response = device.write(0xFF); // software ssel cs = 0; int response = device.write(0xFF); cs = 1; }
Definition at line 66 of file SPI.h.
Constructor & Destructor Documentation
SPI | ( | PinName | mosi, |
PinName | miso, | ||
PinName | sclk, | ||
PinName | ssel = NC |
||
) |
Member Function Documentation
void abort_all_transfers | ( | ) |
void abort_transfer | ( | void | ) |
void dequeue_transaction | ( | ) | [protected] |
void format | ( | int | bits, |
int | mode = 0 |
||
) |
void frequency | ( | int | hz = 1000000 ) |
void irq_handler_asynch | ( | void | ) | [protected] |
int queue_transfer | ( | const void * | tx_buffer, |
int | tx_length, | ||
void * | rx_buffer, | ||
int | rx_length, | ||
unsigned char | bit_width, | ||
const event_callback_t & | callback, | ||
int | event | ||
) | [protected] |
- Parameters:
-
tx_buffer The TX buffer with data to be transfered. If NULL is passed, the default SPI value is sent tx_length The length of TX buffer in bytes rx_buffer The RX buffer which is used for received data. If NULL is passed, received data are ignored rx_length The length of RX buffer in bytes bit_width The buffers element width callback The event callback function event The logical OR of events to modify
- Returns:
- Zero if a transfer was added to the queue, or -1 if the queue is full
int set_dma_usage | ( | DMAUsage | usage ) |
void start_transaction | ( | transaction_t * | data ) | [protected] |
void start_transfer | ( | const void * | tx_buffer, |
int | tx_length, | ||
void * | rx_buffer, | ||
int | rx_length, | ||
unsigned char | bit_width, | ||
const event_callback_t & | callback, | ||
int | event | ||
) | [protected] |
Configures a callback, spi peripheral and initiate a new transfer.
- Parameters:
-
tx_buffer The TX buffer with data to be transfered. If NULL is passed, the default SPI value is sent tx_length The length of TX buffer in bytes rx_buffer The RX buffer which is used for received data. If NULL is passed, received data are ignored rx_length The length of RX buffer in bytes bit_width The buffers element width callback The event callback function event The logical OR of events to modify
int transfer | ( | const Type * | tx_buffer, |
int | tx_length, | ||
Type * | rx_buffer, | ||
int | rx_length, | ||
const event_callback_t & | callback, | ||
int | event = SPI_EVENT_COMPLETE |
||
) |
Start non-blocking SPI transfer using 8bit buffers.
- Parameters:
-
tx_buffer The TX buffer with data to be transfered. If NULL is passed, the default SPI value is sent tx_length The length of TX buffer in bytes rx_buffer The RX buffer which is used for received data. If NULL is passed, received data are ignored rx_length The length of RX buffer in bytes callback The event callback function event The logical OR of events to modify. Look at spi hal header file for SPI events.
- Returns:
- Zero if the transfer has started, or -1 if SPI peripheral is busy
int transfer | ( | const void * | tx_buffer, |
int | tx_length, | ||
void * | rx_buffer, | ||
int | rx_length, | ||
unsigned char | bit_width, | ||
const event_callback_t & | callback, | ||
int | event | ||
) | [protected] |
Common transfer method.
- Parameters:
-
tx_buffer The TX buffer with data to be transfered. If NULL is passed, the default SPI value is sent tx_length The length of TX buffer in bytes rx_buffer The RX buffer which is used for received data. If NULL is passed, received data are ignored rx_length The length of RX buffer in bytes bit_width The buffers element width callback The event callback function event The logical OR of events to modify
- Returns:
- Zero if the transfer has started or was added to the queue, or -1 if SPI peripheral is busy/buffer is full
Generated on Tue Jul 12 2022 16:30:33 by
