
UM10800
All information provided in this document is subject to legal disclaimers.
© NXP Semiconductors N.V. 2016. All rights reserved.
User manual
Rev. 1.2 — 5 October 2016
461 of 487
NXP Semiconductors
UM10800
Chapter 34: LPC82x Code examples
34.3 Code examples SPI
34.3.1 Definitions
34.3.2 Interrupt handler
Table 422. SPI Code example
SPI defines
#define SPI_CFG_ENABLE (0x1)
#define SPI_CFG_MASTER (0x4)
#define SPI_STAT_RXRDY (0x1)
#define SPI_STAT_TXRDY (0x2)
#define SPI_STAT_SSD (0x20)
#define SPI_STAT_MSTIDLE (0x100)
#define SPI_TXDATCTL_SSEL_N(s) ((s) << 16)
#define SPI_TXDATCTL_EOT (1 << 20)
#define SPI_TXDATCTL_EOF (1 << 21)
#define SPI_TXDATCTL_RXIGNORE (1 << 22)
#define SPI_TXDATCTL_FLEN(l) ((l) << 24)
Table 423. SPI Code example
Interrupt handler
void Spi_IRQHandler() {
uint16_t data;
uint32_t intstat = LPC_SPI->INTSTAT;
if(intstat & SPI_STAT_TXRDY) {
if(tx_state == 0) {
LPC_SPI->TXDATCTL = SPI_TXDATCTL_FLEN(15) |
SPI_TXDATCTL_SSEL_N(0xe) | 0xdddd;
t+;
}
if(tx_state == 1) {
LPC_SPI->TXDATCTL = SPI_TXDATCTL_FLEN(7) | SPI_TXDATCTL_SSEL_N(0xe)
| 0xdd;
LPC_SPI->INTENCLR = SPI_STAT_TXRDY;
}
}
if(intstat & SPI_STAT_RXRDY) {
if(rx_state == 0) {
data = LPC_SPI->RXDAT;
if(data != 0xdddd) abort();
r+;
}
if(rx_state == 1) {
data = LPC_SPI->RXDAT;
if(data != 0xdd) abort();
LPC_SPI->INTENCLR = SPI_STAT_RXRDY;
}
}
}