用LPC2366的SSP0连接一个SPI fash(SST25VF032B),能读写到,发现速度不理想,看SCLK波形,如下:
发一串用了2.5us但是等待bus空闲发了3.5us;觉得这3.5us太浪费了
请问怎么缩短等待的时间呢,多谢
我的代码:
/************************************************************
函数功能: SPI操作 读一个字节数据
入口参数:
出口参数:返回读到的字节
返回说明:
其 他: 对于SPI读和写是同时进行的 全双工
************************************************************/
U8 ReadSpi2(U8 dat)
{
U8 temp;
SSP0DR = 0x55;
while ( !(SSP0SR & SSPSR_RNE) );
//while ( (SSP0SR & SSPSR_BSY) );
temp = SSP0DR;
return temp;
}
/************************************************************
函数功能: 连续读取指定长度的字节数
入口参数:
出口参数:
返回说明:
其 他:
************************************************************/
void ReadByteLen(U32 addr,U8 *readbuf,U16 len)
{
U8 tmp;
U16 tmp1;
U8 i;
volatile U8 dummy;
//SST25_CS = 0;
SSTT25_CS_L();
WriteSpi2(0x0b);
tmp = (U8)(addr >> 16); //写地址
WriteSpi2(tmp);
tmp = (U8)(addr >> 8);
WriteSpi2(tmp);
tmp = (U8)addr;
WriteSpi2(tmp);
WriteSpi2(tmp); //dummy addr
for(tmp=0; tmp <8; tmp++)
{
dummy = SSP0DR; //clear the RxFIFO
}
for (tmp1 = 0; tmp1 < len; tmp1++) //读数据
{
*readbuf = ReadSpi2(0x55);
readbuf++;
}
//SST25_CS = 1;
SSTT25_CS_H();
} |