LPCOpen Platform
LPCOpen Platform for NXP LPC Microcontrollers
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
SSP/SPI example

Macros

#define BUFFER_SIZE   (0x100)
 
#define SSP_DATA_BITS   (SSP_BITS_8)
 
#define SSP_DATA_BIT_NUM(databits)   (databits+1)
 
#define SSP_DATA_BYTES(databits)   (((databits) > SSP_BITS_8) ? 2:1)
 
#define SSP_LO_BYTE_MSK(databits)   ((SSP_DATA_BYTES(databits) > 1) ? 0xFF:(0xFF>>(8-SSP_DATA_BIT_NUM(databits))))
 
#define SSP_HI_BYTE_MSK(databits)   ((SSP_DATA_BYTES(databits) > 1) ? (0xFF>>(16-SSP_DATA_BIT_NUM(databits))):0)
 
#define SSP_MODE_SEL   (0x31)
 
#define SSP_TRANSFER_MODE_SEL   (0x32)
 
#define SSP_MASTER_MODE_SEL   (0x31)
 
#define SSP_SLAVE_MODE_SEL   (0x32)
 
#define SSP_POLLING_SEL   (0x31)
 
#define SSP_INTERRUPT_SEL   (0x32)
 
#define SSP_DMA_SEL   (0x33)
 

Functions

static void Buffer_Init (void)
 
static uint8_t Buffer_Verify (void)
 
static void appSSPTest (void)
 
static void appSSPSelectModeMenu (void)
 
static void appSSPMainMenu (void)
 
void SSPIRQHANDLER (void)
 SSP interrupt handler sub-routine.
 
void DMA_IRQHandler (void)
 DMA interrupt handler sub-routine. Set the waiting flag when transfer is successful.
 
int main (void)
 Main routine for SSP example.
 

Variables

static uint8_t Tx_Buf [BUFFER_SIZE]
 
static uint8_t Rx_Buf [BUFFER_SIZE]
 
static SSP_ConfigFormat ssp_format
 
static Chip_SSP_DATA_SETUP_Type xf_setup
 
static volatile uint8_t isXferCompleted = 0
 
static uint8_t dmaChSSPTx
 
static uint8_t dmaChSSPRx
 
static volatile uint8_t isDmaTxfCompleted = 0
 
static volatile uint8_t isDmaRxfCompleted = 0
 

Detailed Description

This example describes how to use SSP in POLLING, INTERRUPT or DMA mode. It is needed to connect 2 hardware boards, one for Master and one for Slave.

 SSP configuration:
     - CPHA = 0: data is sampled on the first clock edge of SCK.
     - CPOL = 0: SCK is active high.
     - Sample rate = 400kHz.
     - DSS = 8: 8 bits per transfer.
     - FRF= 0: SPI Frame format.
 After initialize transmit buffer, SPI master/slave will transfer a number of bytes 
 to SPI slave/master and receive data concurrently.
 After a transfer completed, receive and transmit buffer will be compared and
 the result will be print out via UART port.
 This example supports 3 transfer modes: POLLING mode, INTERRUPT mode and DMA mode.

Supported boards:

How to run: hardware configuration

Notes :

Submit bug reports for LPCOpen code here.

Macro Definition Documentation

#define BUFFER_SIZE   (0x100)

Definition at line 105 of file ssp.c.

#define SSP_DATA_BIT_NUM (   databits)    (databits+1)

Definition at line 107 of file ssp.c.

#define SSP_DATA_BITS   (SSP_BITS_8)

Definition at line 106 of file ssp.c.

#define SSP_DATA_BYTES (   databits)    (((databits) > SSP_BITS_8) ? 2:1)

Definition at line 108 of file ssp.c.

#define SSP_DMA_SEL   (0x33)

Definition at line 118 of file ssp.c.

#define SSP_HI_BYTE_MSK (   databits)    ((SSP_DATA_BYTES(databits) > 1) ? (0xFF>>(16-SSP_DATA_BIT_NUM(databits))):0)

Definition at line 110 of file ssp.c.

#define SSP_INTERRUPT_SEL   (0x32)

Definition at line 117 of file ssp.c.

#define SSP_LO_BYTE_MSK (   databits)    ((SSP_DATA_BYTES(databits) > 1) ? 0xFF:(0xFF>>(8-SSP_DATA_BIT_NUM(databits))))

Definition at line 109 of file ssp.c.

#define SSP_MASTER_MODE_SEL   (0x31)

Definition at line 114 of file ssp.c.

#define SSP_MODE_SEL   (0x31)

Definition at line 112 of file ssp.c.

#define SSP_POLLING_SEL   (0x31)

Definition at line 116 of file ssp.c.

#define SSP_SLAVE_MODE_SEL   (0x32)

Definition at line 115 of file ssp.c.

#define SSP_TRANSFER_MODE_SEL   (0x32)

Definition at line 113 of file ssp.c.

Function Documentation

static void appSSPMainMenu ( void  )
static

Definition at line 351 of file ssp.c.

static void appSSPSelectModeMenu ( void  )
static

Definition at line 315 of file ssp.c.

static void appSSPTest ( void  )
static

Definition at line 210 of file ssp.c.

static void Buffer_Init ( void  )
static

Definition at line 169 of file ssp.c.

static uint8_t Buffer_Verify ( void  )
static

Definition at line 181 of file ssp.c.

void DMA_IRQHandler ( void  )

DMA interrupt handler sub-routine. Set the waiting flag when transfer is successful.

Returns
Nothing

Definition at line 411 of file ssp.c.

int main ( void  )

Main routine for SSP example.

Returns
Nothing

Definition at line 426 of file ssp.c.

void SSPIRQHANDLER ( void  )

SSP interrupt handler sub-routine.

Returns
Nothing

Definition at line 389 of file ssp.c.

Variable Documentation

uint8_t dmaChSSPRx
static

Definition at line 129 of file ssp.c.

uint8_t dmaChSSPTx
static

Definition at line 129 of file ssp.c.

volatile uint8_t isDmaRxfCompleted = 0
static

Definition at line 131 of file ssp.c.

volatile uint8_t isDmaTxfCompleted = 0
static

Definition at line 130 of file ssp.c.

volatile uint8_t isXferCompleted = 0
static

Definition at line 128 of file ssp.c.

uint8_t Rx_Buf[BUFFER_SIZE]
static

Definition at line 124 of file ssp.c.

SSP_ConfigFormat ssp_format
static

Definition at line 126 of file ssp.c.

uint8_t Tx_Buf[BUFFER_SIZE]
static

Definition at line 121 of file ssp.c.

Chip_SSP_DATA_SETUP_Type xf_setup
static

Definition at line 127 of file ssp.c.