81#ifndef SPI_ARCH_LEGACY_H_
82#define SPI_ARCH_LEGACY_H_
89#ifdef SPI_CONF_DEFAULT_INSTANCE
90#if SPI_CONF_DEFAULT_INSTANCE > (SSI_INSTANCE_COUNT - 1)
91#error Invalid SPI_CONF_DEFAULT_INSTANCE: valid values are 0 and 1
93#define SPI_DEFAULT_INSTANCE SPI_CONF_DEFAULT_INSTANCE
98#ifdef SPI0_CONF_CPRS_CPSDVSR
99#define SPI0_CPRS_CPSDVSR SPI0_CONF_CPRS_CPSDVSR
101#define SPI0_CPRS_CPSDVSR 2
104#ifdef SPI1_CONF_CPRS_CPSDVSR
105#define SPI1_CPRS_CPSDVSR SPI1_CONF_CPRS_CPSDVSR
107#define SPI1_CPRS_CPSDVSR 2
111#define SPIX_WAITFORTxREADY(spi) do { \
112 while(!(REG(SSI_BASE(spi) + SSI_SR) & SSI_SR_TNF)) ; \
114#define SPIX_BUF(spi) REG(SSI_BASE(spi) + SSI_DR)
115#define SPIX_WAITFOREOTx(spi) do { \
116 while(REG(SSI_BASE(spi) + SSI_SR) & SSI_SR_BSY) ; \
118#define SPIX_WAITFOREORx(spi) do { \
119 while(!(REG(SSI_BASE(spi) + SSI_SR) & SSI_SR_RNE)) ; \
121#define SPIX_FLUSH(spi) do { \
122 while(REG(SSI_BASE(spi) + SSI_SR) & SSI_SR_RNE) { \
126#define SPIX_CS_CLR(port, pin) do { \
127 GPIO_CLR_PIN(GPIO_PORT_TO_BASE(port), GPIO_PIN_MASK(pin)); \
129#define SPIX_CS_SET(port, pin) do { \
130 GPIO_SET_PIN(GPIO_PORT_TO_BASE(port), GPIO_PIN_MASK(pin)); \
134#ifdef SPI_DEFAULT_INSTANCE
135#define SPI_WAITFORTxREADY() SPIX_WAITFORTxREADY(SPI_DEFAULT_INSTANCE)
136#define SPI_TXBUF SPIX_BUF(SPI_DEFAULT_INSTANCE)
137#define SPI_RXBUF SPI_TXBUF
138#define SPI_WAITFOREOTx() SPIX_WAITFOREOTx(SPI_DEFAULT_INSTANCE)
139#define SPI_WAITFOREORx() SPIX_WAITFOREORx(SPI_DEFAULT_INSTANCE)
141#error You must include spi-arch-legacy.h before spi-legacy.h for the CC2538
143#define SPI_FLUSH() SPIX_FLUSH(SPI_DEFAULT_INSTANCE)
145#define SPI_CS_CLR(port, pin) SPIX_CS_CLR(port, pin)
146#define SPI_CS_SET(port, pin) SPIX_CS_SET(port, pin)
197 uint32_t clock_polarity, uint32_t clock_phase,
void spix_set_mode(uint8_t spi, uint32_t frame_format, uint32_t clock_polarity, uint32_t clock_phase, uint32_t data_size)
Configure the SPI data and clock polarity and the data size for the instance given.
void spix_enable(uint8_t spi)
Enables the SPI peripheral for the instance given.
void spix_init(uint8_t spi)
Initialize the SPI bus for the instance given.
void spix_cs_init(uint8_t port, uint8_t pin)
Configure a GPIO to be the chip select pin.
void spix_disable(uint8_t spi)
Disables the SPI peripheral for the instance given.
void spix_set_clock_freq(uint8_t spi, uint32_t freq)
Sets the SPI clock frequency of the given SSI instance.
Header file for the cc2538 Synchronous Serial Interface.