unsigned char SPI_ReadBuffer(AT91S_SPI *spi, void *buffer, unsigned int length) { // Check if the first bank is free if (spi->SPI_RCR == 0) { spi->SPI_RPR = (unsigned int) buffer; spi->SPI_RCR = length; spi->SPI_PTCR = AT91C_PDC_RXTEN; return 1; } // Check if second bank is free else if (spi->SPI_RNCR == 0) { spi->SPI_RNPR = (unsigned int) buffer; spi->SPI_RNCR = length; return 1; } // No free bank return 0; }