#include <cfg/arch.h>
#include <dev/board.h>
#include <dev/irqreg.h>
#include <sys/event.h>
#include <sys/timer.h>
#include <dev/at91_spi.h>
Functions | |
int | At91Spi0Init (void) |
Initialize the first serial peripheral interface on the AT91 MCU. | |
int | At91Spi0InitChipSelects (unsigned int mask) |
Initialize specified SPI0 chip selects on the AT91 MCU. | |
int | At91Spi0Enable (void) |
Initialize the second serial peripheral interface on the AT91 MCU. | |
int | At91SpiInit (unsigned int base) |
Initialize serial peripheral interface on the AT91 MCU. | |
int | At91SpiEnable (unsigned int base) |
int | At91SpiDisable (unsigned int base) |
int | At91SpiReset (unsigned int base) |
Reset serial peripheral interface on the AT91 MCU. | |
int | At91SpiInitChipSelects (unsigned int base, unsigned int mask) |
Initialize specified SPI chip selects on the AT91 MCU. | |
int | At91SpiSetRate (unsigned int base, unsigned int cs, uint32_t rate) |
Configure the SPI rate. | |
uint32_t | At91SpiGetModeFlags (unsigned int base, unsigned int cs) |
int | At91SpiSetModeFlags (unsigned int base, unsigned int cs, uint32_t mode) |
Configure the SPI operation mode. | |
unsigned int | At91SpiGetBits (unsigned int base, unsigned int cs) |
int | At91SpiSetBits (unsigned int base, unsigned int cs, unsigned int bits) |
unsigned int | At91SpiGetSckDelay (unsigned int base, unsigned int cs) |
int | At91SpiSetSckDelay (unsigned int base, unsigned int cs, unsigned int dly) |
unsigned int | At91SpiGetTxDelay (unsigned int base, unsigned int cs) |
int | At91SpiSetTxDelay (unsigned int base, unsigned int cs, unsigned int dly) |
unsigned int | At91SpiGetCsDelay (unsigned int base) |
int | At91SpiSetCsDelay (unsigned int base, unsigned int dly) |
int | At91SpiTransfer2 (unsigned int base, unsigned int cs, const void *txbuf, void *rxbuf, int xlen, const void *txnbuf, void *rxnbuf, int xnlen) |
Transfer two SPI buffers. |
int At91Spi0Init | ( | void | ) |
Initialize the first serial peripheral interface on the AT91 MCU.
References _BV, At91Spi0Enable(), At91SpiReset(), NutIrqEnable(), NutRegisterIrqHandler(), outr, PMC_PCER, sig_SPI0, SPI0_BASE, and SPI0_ID.
Referenced by At91SpiInit().
int At91Spi0InitChipSelects | ( | unsigned int | mask | ) |
Initialize specified SPI0 chip selects on the AT91 MCU.
mask | Chip selects to use. Set bit 0 for NPCS0, bit 1 for NPCS1 and so on. |
References _BV, outr, PIO_PDR_OFF, SPI0_CS0_PIN, SPI0_CS0_PIO_BASE, SPI0_CS0_PSR_OFF, SPI0_CS1_PIN, SPI0_CS1_PIO_BASE, SPI0_CS1_PSR_OFF, SPI0_CS2_PIN, SPI0_CS2_PIO_BASE, SPI0_CS2_PSR_OFF, SPI0_CS3_PIN, SPI0_CS3_PIO_BASE, and SPI0_CS3_PSR_OFF.
int At91Spi0Enable | ( | void | ) |
Initialize the second serial peripheral interface on the AT91 MCU.
References outr, PIO_PDR_OFF, SPI0_PINS, SPI0_PIO_BASE, and SPI0_PSR_OFF.
int At91SpiInit | ( | unsigned int | base | ) |
Initialize serial peripheral interface on the AT91 MCU.
base | Interface base address, either SPI_BASE, SPI0_BASE or SPI1_BASE. |
References At91Spi0Init(), rc, SPI0_BASE, and SPI1_BASE.
int At91SpiEnable | ( | unsigned int | base | ) |
References outr, SPI_CR_OFF, and SPI_SPIEN.
Referenced by At91SpiReset().
int At91SpiDisable | ( | unsigned int | base | ) |
References outr, SPI_CR_OFF, and SPI_SPIDIS.
Referenced by At91SpiReset().
int At91SpiReset | ( | unsigned int | base | ) |
Reset serial peripheral interface on the AT91 MCU.
base | Interface base address, either SPI_BASE, SPI0_BASE or SPI1_BASE. |
References At91SpiDisable(), At91SpiEnable(), outr, rc, SPI_CR_OFF, SPI_DLYBCS_LSB, SPI_MODFDIS, SPI_MR_OFF, SPI_MSTR, SPI_PCS, and SPI_SWRST.
int At91SpiInitChipSelects | ( | unsigned int | base, |
unsigned int | mask | ||
) |
Initialize specified SPI chip selects on the AT91 MCU.
base | Interface base address, either SPI_BASE, SPI0_BASE or SPI1_BASE. |
mask | Chip selects to use. Set bit 0 for NPCS0, bit 1 for NPCS1 and so on. |
References At91Spi0InitChipSelects(), rc, SPI0_BASE, and SPI1_BASE.
int At91SpiSetRate | ( | unsigned int | base, |
unsigned int | cs, | ||
uint32_t | rate | ||
) |
Configure the SPI rate.
base | SPI register base. |
cs | Chip select line. |
rate | Baudrate. The maximum is MCK/1 and the minimum is MCK/255. If the specified rate is above the maximum or below the minimum, the maximum or minimum value resp. will be set. |
References inr, NUT_HWCLK_PERIPHERAL, NutClockGet, outr, rc, SPI_CSR0_OFF, SPI_CSR1_OFF, SPI_CSR2_OFF, SPI_CSR3_OFF, SPI_SCBR, and SPI_SCBR_LSB.
uint32_t At91SpiGetModeFlags | ( | unsigned int | base, |
unsigned int | cs | ||
) |
References inr, rc, SPI_CPOL, SPI_CSR0_OFF, SPI_LLB, SPI_MODFDIS, SPI_MR_OFF, SPI_MSTR, SPI_NCPHA, SPI_PCSDEC, SPIMF_CAPRISE, SPIMF_LOOPBACK, SPIMF_MASTER, SPIMF_MFDETECT, and SPIMF_SCKIAHI.
int At91SpiSetModeFlags | ( | unsigned int | base, |
unsigned int | cs, | ||
uint32_t | mode | ||
) |
Configure the SPI operation mode.
base | SPI register base. |
cs | Chip select line. |
mode | Any of the following
|
References At91SpiGetModeFlags(), inr, outr, SPI_CPOL, SPI_CSAAT, SPI_CSR0_OFF, SPI_LLB, SPI_MODFDIS, SPI_MR_OFF, SPI_MSTR, SPI_NCPHA, SPI_PCSDEC, SPIMF_CAPRISE, SPIMF_KEEPCS, SPIMF_LOOPBACK, SPIMF_MASTER, SPIMF_MFDETECT, SPIMF_PCSDEC, and SPIMF_SCKIAHI.
unsigned int At91SpiGetBits | ( | unsigned int | base, |
unsigned int | cs | ||
) |
References inr, rc, SPI_BITS, SPI_BITS_10, SPI_BITS_11, SPI_BITS_12, SPI_BITS_13, SPI_BITS_14, SPI_BITS_15, SPI_BITS_16, SPI_BITS_9, and SPI_CSR0_OFF.
int At91SpiSetBits | ( | unsigned int | base, |
unsigned int | cs, | ||
unsigned int | bits | ||
) |
References At91SpiGetBits(), inr, outr, SPI_BITS, SPI_BITS_10, SPI_BITS_11, SPI_BITS_12, SPI_BITS_13, SPI_BITS_14, SPI_BITS_15, SPI_BITS_16, SPI_BITS_8, SPI_BITS_9, and SPI_CSR0_OFF.
unsigned int At91SpiGetSckDelay | ( | unsigned int | base, |
unsigned int | cs | ||
) |
References inr, SPI_CSR0_OFF, and SPI_DLYBS_LSB.
int At91SpiSetSckDelay | ( | unsigned int | base, |
unsigned int | cs, | ||
unsigned int | dly | ||
) |
References At91SpiGetSckDelay(), inr, outr, SPI_CSR0_OFF, SPI_DLYBS, and SPI_DLYBS_LSB.
unsigned int At91SpiGetTxDelay | ( | unsigned int | base, |
unsigned int | cs | ||
) |
References inr, SPI_CSR0_OFF, and SPI_DLYBCT_LSB.
int At91SpiSetTxDelay | ( | unsigned int | base, |
unsigned int | cs, | ||
unsigned int | dly | ||
) |
References At91SpiGetTxDelay(), inr, outr, SPI_CSR0_OFF, SPI_DLYBCT, and SPI_DLYBCT_LSB.
unsigned int At91SpiGetCsDelay | ( | unsigned int | base | ) |
References inr, SPI_DLYBCS_LSB, and SPI_MR_OFF.
int At91SpiSetCsDelay | ( | unsigned int | base, |
unsigned int | dly | ||
) |
References At91SpiGetCsDelay(), inr, outr, SPI_DLYBCS, SPI_DLYBCS_LSB, and SPI_MR_OFF.
int At91SpiTransfer2 | ( | unsigned int | base, |
unsigned int | cs, | ||
const void * | txbuf, | ||
void * | rxbuf, | ||
int | xlen, | ||
const void * | txnbuf, | ||
void * | rxnbuf, | ||
int | xnlen | ||
) |
Transfer two SPI buffers.
base | SPI port base address. |
cs | SPI device chip select. |
txbuf | First transmit buffer. |
rxbuf | First receive buffer. |
xlen | Length of first transfer. |
txnbuf | Second transmit buffer. |
rxnbuf | Second receive buffer. |
xnlen | Length of second transfer. |
References inr, NutEventWait(), outr, PDC_RXTDIS, PDC_RXTEN, PDC_TXTDIS, PDC_TXTEN, PERIPH_PTCR_OFF, PERIPH_RCR_OFF, PERIPH_RNCR_OFF, PERIPH_RNPR_OFF, PERIPH_RPR_OFF, PERIPH_TCR_OFF, PERIPH_TNCR_OFF, PERIPH_TNPR_OFF, PERIPH_TPR_OFF, rc, SPI0_BASE, SPI1_BASE, SPI_IDR_OFF, SPI_IER_OFF, SPI_MR_OFF, SPI_PCS, SPI_PCS_0, SPI_PCS_1, SPI_PCS_2, SPI_PCS_3, SPI_RXBUFF, and SPI_SR_OFF.