такая же проблема. В sam7x spi работает, а в sam7s не работает. компилятор кейл 4.01.
этот работает как положено.
CODE
#include <AT91SAM7X128.H>
AT91S_PIO * pPIO = AT91C_BASE_PIOA;
AT91S_PMC * pPMC = AT91C_BASE_PMC;
AT91S_SPI * pSPI = AT91C_BASE_SPI0;
int main (void){
// Enable the PIO clock
pPMC->PMC_PCER = (1<<AT91C_ID_PIOA);//(1<<AT91C_ID_PIOA)|
pPIO->PIO_PDR = (AT91C_PA18_SPI0_SPCK|AT91C_PA17_SPI0_MOSI|AT91C_PA16_SPI0_MISO|AT91C_PA12_SPI0_
NPCS0);
pPIO->PIO_ASR = (AT91C_PA18_SPI0_SPCK|AT91C_PA17_SPI0_MOSI|AT91C_PA16_SPI0_MISO|AT91C_PA12_SPI0_
NPCS0);
pPIO->PIO_PPUER = AT91C_PA16_SPI0_MISO;
// Enable the SPI clock
pPMC->PMC_PCER = (1<<AT91C_ID_SPI0);//(1<<AT91C_ID_PIOA)|
// Execute a software reset of the SPI twice
pSPI->SPI_CR = AT91C_SPI_SWRST;
pSPI->SPI_CR = AT91C_SPI_SWRST;
// Configure SPI in Master Mode with No CS selected !!!
pSPI->SPI_MR = (AT91C_SPI_MSTR | AT91C_SPI_MODFDIS | AT91C_SPI_PCS);
// Disable the PDC transfer
pSPI->SPI_PTCR = (AT91C_PDC_RXTDIS | AT91C_PDC_TXTDIS);
pSPI->SPI_CSR[0] = 0x00000482;
pSPI->SPI_MR = (0x18000001);//(0x000E0011);
// Enable the SPI
pSPI->SPI_CR = AT91C_SPI_SPIEN;
}
а этот не работает. не запускается SPI. не устанавливается флаг SPIENS. и т.д.
CODE
#include <AT91SAM7S128.H>
AT91S_PIO * pPIO = AT91C_BASE_PIOA;
AT91S_PMC * pPMC = AT91C_BASE_PMC;
AT91S_SPI * pSPI = AT91C_BASE_SPI;
int main (void){
// Enable the PIO clock
pPMC->PMC_PCER = (1<<AT91C_ID_PIOA);//(1<<AT91C_ID_PIOA)|
pPIO->PIO_PDR = (AT91C_PA14_SPCK|AT91C_PA13_MOSI|AT91C_PA12_MISO|AT91C_PA11_NPCS0);
pPIO->PIO_ASR = (AT91C_PA14_SPCK|AT91C_PA13_MOSI|AT91C_PA12_MISO|AT91C_PA11_NPCS0);
pPIO->PIO_PPUER = AT91C_PA12_MISO;
// Enable the SPI clock
pPMC->PMC_PCER = (1<<AT91C_ID_SPI);//(1<<AT91C_ID_PIOA)|
// Execute a software reset of the SPI twice
pSPI->SPI_CR = AT91C_SPI_SWRST;
pSPI->SPI_CR = AT91C_SPI_SWRST;
// Configure SPI in Master Mode with No CS selected !!!
pSPI->SPI_MR = (AT91C_SPI_MSTR | AT91C_SPI_MODFDIS | AT91C_SPI_PCS);
// Disable the PDC transfer
pSPI->SPI_PTCR = (AT91C_PDC_RXTDIS | AT91C_PDC_TXTDIS);
pSPI->SPI_CSR[0] = 0x00000482;
pSPI->SPI_MR = (0x18000001);//(0x000E0011);
// Enable the SPI
pSPI->SPI_CR = AT91C_SPI_SPIEN;
}