Fork of 
        mbed-dev 
        by  mbed official  
« Back to documentation index 
    
SPI Class Reference 
A SPI  Master, used for communicating with SPI  slave devices.  
More... 
#include <SPI.h >
  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.   virtual void  lock  (void)  Acquire exclusive access to this SPI  bus.   virtual void  unlock  (void)  Release exclusive access to this SPI  bus.   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.   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
Synchronization level: Thread safe
Example: 
 
 #include "mbed.h" 
 
 
 
 SPI  device(p5, p6, p7); 
 DigitalOut cs(p8); 
 int  main() {
     
     
     device.lock();
     
     cs = 0;
     int  response = device.write(0xFF);
     cs = 1;
     device.unlock();
 }
 Definition at line 73  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 27  of file SPI.cpp .
 
 
Member Function Documentation 
      
        
          void abort_all_transfers  
          ( 
           ) 
           
      
 
Clear the transaction buffer and abort on-going transfer. 
Definition at line 116  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 100  of file SPI.cpp .
 
 
      
        
          void clear_transfer_buffer  
          ( 
           ) 
           
      
 
Clear the transaction buffer. 
Definition at line 109  of file SPI.cpp .
 
 
      
        
          void dequeue_transaction  
          ( 
           ) 
           [protected] 
      
 
Dequeue a transaction. 
Definition at line 175  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 42  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 51  of file SPI.cpp .
 
 
      
        
          void irq_handler_asynch  
          ( 
          void  
           ) 
           [protected] 
      
 
 
      
        
          void lock  
          ( 
          void  
           ) 
           [virtual] 
      
 
Acquire exclusive access to this SPI  bus. 
Definition at line 81  of file SPI.cpp .
 
 
      
        
          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 131  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 122  of file SPI.cpp .
 
 
Start a new transaction. 
Parameters: 
  
   
Definition at line 170  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 160  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 142  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 91  of file SPI.cpp .
 
 
      
        
          void unlock  
          ( 
          void  
           ) 
           [virtual] 
      
 
Release exclusive access to this SPI  bus. 
Definition at line 85  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 73  of file SPI.cpp .