SDK4.0
This document shows Ameba SDK 4.0 APIs
Enumerator
SPI_EX

spi extended functions More...

Ameba Common

enum  { SPI_SCLK_IDLE_LOW =0, SPI_SCLK_IDLE_HIGH =2 }
 
enum  { SPI_CS_TOGGLE_EVERY_FRAME =0, SPI_CS_TOGGLE_START_STOP =1 }
 
enum  { SPI_SCLK_TOGGLE_MIDDLE =0, SPI_SCLK_TOGGLE_START =1 }
 
enum  ChipSelect {
  CS_0 = 0, CS_1 = 1, CS_2 = 2, CS_3 = 3,
  CS_4 = 4, CS_5 = 5, CS_6 = 6, CS_7 = 7
}
 
enum  SpiIrq { SpiRxIrq, SpiTxIrq }
 
typedef void(* spi_irq_handler) (uint32_t id, SpiIrq event)
 
void spi_irq_hook (spi_t *obj, spi_irq_handler handler, uint32_t id)
 Set SPI interrupt handler if needed. More...
 
void spi_bus_tx_done_irq_hook (spi_t *obj, spi_irq_handler handler, uint32_t id)
 Set SPI interrupt bus tx done handler if needed. More...
 
void spi_slave_flush_fifo (spi_t *obj)
 Slave device to flush tx fifo. More...
 
int32_t spi_slave_read_stream (spi_t *obj, char *rx_buffer, uint32_t length)
 slave recv target length data use interrupt mode. More...
 
int32_t spi_slave_write_stream (spi_t *obj, char *tx_buffer, uint32_t length)
 slave send target length data use interrupt mode. More...
 
int32_t spi_master_read_stream (spi_t *obj, char *rx_buffer, uint32_t length)
 master recv target length data use interrupt mode. More...
 
int32_t spi_master_write_stream (spi_t *obj, char *tx_buffer, uint32_t length)
 master send target length data use interrupt mode. More...
 
int32_t spi_master_write_read_stream (spi_t *obj, char *tx_buffer, char *rx_buffer, uint32_t length)
 master send & recv target length data use interrupt mode. More...
 
int32_t spi_slave_read_stream_timeout (spi_t *obj, char *rx_buffer, uint32_t length, uint32_t timeout_ms)
 slave recv target length data use interrupt mode and timeout mechanism. More...
 
int32_t spi_slave_read_stream_terminate (spi_t *obj, char *rx_buffer, uint32_t length)
 slave recv target length data use interrupt mode and stop if the spi bus is idle. More...
 
int32_t spi_slave_read_stream_dma (spi_t *obj, char *rx_buffer, uint32_t length)
 slave recv target length data use DMA mode. More...
 
int32_t spi_slave_write_stream_dma (spi_t *obj, char *tx_buffer, uint32_t length)
 slave send target length data use DMA mode. More...
 
int32_t spi_master_write_read_stream_dma (spi_t *obj, char *tx_buffer, char *rx_buffer, uint32_t length)
 master send & recv target length data use DMA mode. More...
 
int32_t spi_master_read_stream_dma (spi_t *obj, char *rx_buffer, uint32_t length)
 master recv target length data use DMA mode. More...
 
int32_t spi_master_write_stream_dma (spi_t *obj, char *tx_buffer, uint32_t length)
 master send target length data use DMA mode. More...
 
int32_t spi_slave_read_stream_dma_timeout (spi_t *obj, char *rx_buffer, uint32_t length, uint32_t timeout_ms)
 slave recv target length data use DMA mode and timeout mechanism. More...
 
int32_t spi_slave_read_stream_dma_terminate (spi_t *obj, char *rx_buffer, uint32_t length)
 slave recv target length data use DMA mode and stop if the spi bus is idle. More...
 
#define SPI_DMA_RX_EN   (1<<0)
 
#define SPI_DMA_TX_EN   (1<<1)
 
#define SPI_STATE_READY   0x00
 
#define SPI_STATE_RX_BUSY   (1<<1)
 
#define SPI_STATE_TX_BUSY   (1<<2)
 

Detailed Description

spi extended functions

Function Documentation

void spi_bus_tx_done_irq_hook ( spi_t *  obj,
spi_irq_handler  handler,
uint32_t  id 
)

Set SPI interrupt bus tx done handler if needed.

Parameters
objspi object define in application software.
handlerinterrupt bus tx done callback function
idinterrupt callback parameter
Return values
none
void spi_irq_hook ( spi_t *  obj,
spi_irq_handler  handler,
uint32_t  id 
)

Set SPI interrupt handler if needed.

Parameters
objspi object define in application software.
handlerinterrupt callback function
idinterrupt callback parameter
Return values
none
int32_t spi_master_read_stream ( spi_t *  obj,
char *  rx_buffer,
uint32_t  length 
)

master recv target length data use interrupt mode.

Parameters
objspi master object define in application software.
rx_bufferbuffer to save data read from SPI FIFO.
lengthnumber of data bytes to be read.
Return values
stream init status
int32_t spi_master_read_stream_dma ( spi_t *  obj,
char *  rx_buffer,
uint32_t  length 
)

master recv target length data use DMA mode.

Parameters
objspi master object define in application software.
rx_bufferbuffer to save data read from SPI FIFO.
lengthnumber of data bytes to be read.
Return values
stream init status
Note
: DMA or Interrupt mode can be used to TX dummy data
int32_t spi_master_write_read_stream ( spi_t *  obj,
char *  tx_buffer,
char *  rx_buffer,
uint32_t  length 
)

master send & recv target length data use interrupt mode.

Parameters
objspi master object define in application software.
tx_bufferbuffer to be written to Tx FIFO.
rx_bufferbuffer to save data read from SPI FIFO.
lengthnumber of data bytes to be send & recv.
Return values
stream init status
int32_t spi_master_write_read_stream_dma ( spi_t *  obj,
char *  tx_buffer,
char *  rx_buffer,
uint32_t  length 
)

master send & recv target length data use DMA mode.

Parameters
objspi master object define in application software.
tx_bufferbuffer to be written to Tx FIFO.
rx_bufferbuffer to save data read from SPI FIFO.
lengthnumber of data bytes to be send & recv.
Return values
stream init status
int32_t spi_master_write_stream ( spi_t *  obj,
char *  tx_buffer,
uint32_t  length 
)

master send target length data use interrupt mode.

Parameters
objspi master object define in application software.
tx_bufferbuffer to be written to Tx FIFO.
lengthnumber of data bytes to be send.
Return values
stream init status
int32_t spi_master_write_stream_dma ( spi_t *  obj,
char *  tx_buffer,
uint32_t  length 
)

master send target length data use DMA mode.

Parameters
objspi master object define in application software.
tx_bufferbuffer to be written to Tx FIFO.
lengthnumber of data bytes to be send.
Return values
stream init status
void spi_slave_flush_fifo ( spi_t *  obj)

Slave device to flush tx fifo.

Parameters
objspi slave object define in application software.
Note
: It will discard all data in both tx fifo and rx fifo
int32_t spi_slave_read_stream ( spi_t *  obj,
char *  rx_buffer,
uint32_t  length 
)

slave recv target length data use interrupt mode.

Parameters
objspi slave object define in application software.
rx_bufferbuffer to save data read from SPI FIFO.
lengthnumber of data bytes to be read.
Return values
stream init status
int32_t spi_slave_read_stream_dma ( spi_t *  obj,
char *  rx_buffer,
uint32_t  length 
)

slave recv target length data use DMA mode.

Parameters
objspi slave object define in application software.
rx_bufferbuffer to save data read from SPI FIFO.
lengthnumber of data bytes to be read.
Return values
stream init status
int32_t spi_slave_read_stream_dma_terminate ( spi_t *  obj,
char *  rx_buffer,
uint32_t  length 
)

slave recv target length data use DMA mode and stop if the spi bus is idle.

Parameters
objspi slave object define in application software.
rx_bufferbuffer to save data read from SPI FIFO.
lengthnumber of data bytes to be read.
Return values
number of bytes read already
int32_t spi_slave_read_stream_dma_timeout ( spi_t *  obj,
char *  rx_buffer,
uint32_t  length,
uint32_t  timeout_ms 
)

slave recv target length data use DMA mode and timeout mechanism.

Parameters
objspi slave object define in application software.
rx_bufferbuffer to save data read from SPI FIFO.
lengthnumber of data bytes to be read.
timeout_mstimeout waiting time.
Return values
number of bytes read already
int32_t spi_slave_read_stream_terminate ( spi_t *  obj,
char *  rx_buffer,
uint32_t  length 
)

slave recv target length data use interrupt mode and stop if the spi bus is idle.

Parameters
objspi slave object define in application software.
rx_bufferbuffer to save data read from SPI FIFO.
lengthnumber of data bytes to be read.
Return values
number of bytes read already
int32_t spi_slave_read_stream_timeout ( spi_t *  obj,
char *  rx_buffer,
uint32_t  length,
uint32_t  timeout_ms 
)

slave recv target length data use interrupt mode and timeout mechanism.

Parameters
objspi slave object define in application software.
rx_bufferbuffer to save data read from SPI FIFO.
lengthnumber of data bytes to be read.
timeout_mstimeout waiting time.
Return values
number of bytes read already
int32_t spi_slave_write_stream ( spi_t *  obj,
char *  tx_buffer,
uint32_t  length 
)

slave send target length data use interrupt mode.

Parameters
objspi slave object define in application software.
tx_bufferbuffer to be written to Tx FIFO.
lengthnumber of data bytes to be send.
Return values
stream init status
int32_t spi_slave_write_stream_dma ( spi_t *  obj,
char *  tx_buffer,
uint32_t  length 
)

slave send target length data use DMA mode.

Parameters
objspi slave object define in application software.
tx_bufferbuffer to be written to Tx FIFO.
lengthnumber of data bytes to be send.
Return values
stream init status