Код
unsigned char At45Status(void)
{
unsigned char a;
Flash_Send(0xD7,0);
a=Flash_Send(0,LAST);
if ((a&1)==0) return(a&0x80);
At45error=1;//error status byte
return(1);
}
Код
void SPIConfig(void)
{
AT91C_BASE_SPI0->SPI_CR=0x82;//disable and reset
//AT91C_BASE_SPI1->SPI_CR=0x82;//disable and reset
AT91C_BASE_SPI0->SPI_MR=0x0a0f0013;//master
//AT91C_BASE_SPI1->SPI_MR=0x0a0f0013;//master
//SerialFlash 25 Mhz 8 bit
AT91C_BASE_SPI0->SPI_CSR[0]=0x00220F0A;
//SSM2602 14 MHz 16 bit
AT91C_BASE_SPI0->SPI_CSR[1]=0x00020782;
//ADC 7877 14 Mhz 16 bit
AT91C_BASE_SPI0->SPI_CSR[2]=0x00020782;;
AT91C_BASE_SPI0->SPI_CR=0x1000001;//enable SPI0
}
unsigned char Flash_Send(unsigned char u,unsigned int last)
{
//last=0x1000000
AT91C_BASE_SPI0->SPI_TDR=((unsigned int)u)|0x000E0000|last;
while ((AT91C_BASE_SPI0->SPI_SR & AT91C_SPI_TXEMPTY) == 0);
return(AT91C_BASE_SPI0->SPI_RDR&0xFF);
}