BF53X的芯片调通GD25QXXX的flash芯片
SPI设置:
void SPI_init(void)
{
//配置速率为1/4系统时钟 SPI速率 = SCLK/2*SPI_BAUD
//*pSPI_BAUD=0xffff;
*pSPI_BAUD=0x3;
//PF2脚
*pSPI_FLG |=FLS2; //选择SPISEL2接口
//CPHA = 1,CPOL = 1
*pSPI_CTL = 0x1001|CPHA| CPOL; //配置模式为手动片选模式
//*pSPI_CTL = 0x1001; //配置模式为手动片选模式
*pSPI_CTL = (*pSPI_CTL | SPE); //使能SPI接口
}
unsigned char SPI_TransferByte(unsigned char value)
{
unsigned char incoming=0;
unsigned long retry=0;
static int j = 0;
while((*pSPI_STAT & TXS));
{
retry++;
if(retry >200) return 0;
}
*pSPI_TDBR = value;
retry=0;
while(*pSPI_STAT & RXS)
{
incoming = *pSPI_RDBR;
if(*pSPI_RDBR != 0xff)
{
buff_w[j++] = *pSPI_RDBR;
return 0;
}
}
return(incoming);
}
main函数:
int main()
{
unsigned long i;
Set_PLL(16,4);
Init_EBIU();
SPI_init();
*pSPI_FLG &= ~FLG2; //将SPISEL2拉到0
//1.读flash内存
#if 1
for(i = 0;i<2;i++)
{
//*pSPI_FLG &= ~FLG2; //将SPISEL2拉到0
//CMD
SPI_TransferByte(0x03);
//地址
SPI_TransferByte(0x00);
SPI_TransferByte(0x00);
SPI_TransferByte(i);
//给两个波形给slave(GD25QXXX)
SPI_TransferByte(0x00);
SPI_TransferByte(0x00);
//得到值
SPI_TransferByte(0x00);
}
*pSPI_FLG |= FLG2; //将SPISEL2拉到1
#endif
}
得到值:
示波器的波形图:
0X80