[11U68]fix P0_11 to use GPIO
Fork of
mbed-src
by mbed official
« Back to documentation index
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:
#include "mbed.h"
SPI device(p5, p6, p7);
DigitalOut cs(p8);
int main() {
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
)
Create a SPI master connected to the specified pins.
mosi or miso can be specfied as NC if not used
Parameters:
mosi SPI Master Out, Slave In pin
miso SPI Master In, Slave Out pin
sclk SPI Clock pin
ssel SPI chip select pin
Definition at line 26 of file SPI.cpp .
Member Function Documentation
void abort_all_transfers
(
)
Clear the transaction buffer and abort on-going transfer.
Definition at line 96 of file SPI.cpp .
void abort_transfer
(
void
)
Abort the on-going SPI transfer, and continue with transfer's in the queue if any.
Definition at line 80 of file SPI.cpp .
void clear_transfer_buffer
(
)
Clear the transaction buffer.
Definition at line 89 of file SPI.cpp .
void dequeue_transaction
(
)
[protected]
Dequeue a transaction.
Definition at line 150 of file SPI.cpp .
void format
(
int
bits ,
int
mode = 0
)
Configure the data transmission format.
Parameters:
bits Number of bits per SPI frame (4 - 16)
mode Clock polarity and phase mode (0 - 3)
mode | POL PHA
-----+--------
0 | 0 0
1 | 0 1
2 | 1 0
3 | 1 1
Definition at line 40 of file SPI.cpp .
void frequency
(
int
hz = 1000000
)
Set the spi bus clock frequency.
Parameters:
hz SCLK frequency in hz (default = 1MHz)
Definition at line 47 of file SPI.cpp .
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
Definition at line 111 of file SPI.cpp .
int set_dma_usage
(
DMAUsage
usage )
Configure DMA usage suggestion for non-blocking transfers.
Parameters:
usage The usage DMA hint for peripheral
Returns: Zero if the usage was set, -1 if a transaction is on-going
Definition at line 102 of file SPI.cpp .
Start a new transaction.
Parameters:
Definition at line 145 of file SPI.cpp .
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
Definition at line 135 of file SPI.cpp .
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
Definition at line 127 of file SPI.h .
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
Definition at line 71 of file SPI.cpp .
int write
(
int
value )
[virtual]
Write to the SPI Slave and return the response.
Parameters:
value Data to be sent to the SPI slave
Returns: Response from the SPI slave
Definition at line 64 of file SPI.cpp .