用论坛的BF531核心板,做了个底板,SPI连接TF卡,PF1为片选,
SPI初始化代码:
*pFIO_DIR |= PF1;
*pFIO_FLAG_S |= PF1;
*pSPI_FLG |= FLS1;
*pSPI_BAUD = 800;
*pSPI_CTL = 0x0000;
*pSPI_CTL = 0x0001 | MSTR | CPHA | CPOL;
*pSPI_CTL = (*pSPI_CTL | SPE);
SD卡初始化完毕后,切换SPI时钟到高速:
void SPI_SetSpeed(u8 SpeedSet)
{
while((*pSPI_STAT & TXS));//等待数据发送完毕
*pSPI_CTL &= ~SPE;
if(SpeedSet == 0)
{
*pSPI_BAUD = 500;
}
else
{
*pSPI_BAUD = 14;//14,SHDC速度到5,普通的只到14,原因未知
}
*pSPI_CTL |= SPE;
ssync();
}
SD卡初始化正常,读卡中的数据也正常,连续向卡内写数据,会经常出问题,
测试波形,发送SCLK信号开始正常,传输一些数量的数据后,突然波形就混乱了,程序打了断点,数据异常后,后续波形都是异常的。
板子上没有大功率器件。
波形如下图,麻烦大家帮忙分析分析,谢谢了!