Мне кажется дело не в том. Вот заменил функцию SPI_Read_PDC, что бы было более понятно, результат тот же

((
Код
short SPI_Read_PDC(PSPI self, void* data, unsigned short count) {
PSPI_BASE->SPI_RPR = (UINT)buff; // destination address
PSPI_BASE->SPI_RCR = btr; // number of frames (here: frame=byte)
// SPI PDC TX buffer (dummy bytes):
PSPI_BASE->SPI_TPR = (UINT)dma_dummy; // source address
PSPI_BASE->SPI_TCR = btr; // number of frames (here: frame=byte)
PSPI_BASE->SPI_PTCR = AT91C_PDC_TXTEN | AT91C_PDC_RXTEN;
while( !( (PSPI_BASE->SPI_SR) & AT91C_SPI_RXBUFF ) ) {
// wait for RX Buffer Full (counters 0)
}
}
Проблемы не могут идти от каких-то особенностей карты или PDC-режима?