W25Q80读写操作不成功,写不进去,麻烦高手帮忙看看
//SPI数据读写函数uchar SPISwap(BYTE dat) //SPI数据读写函数
{
SPDAT = dat; //trigger SPI send
while (!(SPSTAT & SPIF)); //wait send complete
SPSTAT = SPIF | WCOL; //clear SPI status
return SPDAT; //return received SPI data
}
////SPI页编程,LEN不能超过255
void WriteW25Q80(long addre,uchar *databuf,uchar LEN)
{
uchar i=0;
SPISS = 0; //W25q80芯片使能
SPISwap(WRITE_ENABLE); //W25Q80芯片写使能
SPISwap( BYTE_PAGE_PROGRAM); //页编程命令
SPISwap((BYTE)( addre>>16)); //写地址高8位 ,共24位
SPISwap((BYTE)( addre>>8));//写地址中间8位
SPISwap((BYTE)( addre)); //写地址低8 位
for(i=0; i<LEN;i++)
{
SPISwap(databuf);
}
SPISwap(WRITE_DISABLE); //W25Q80芯片写失能
SPISS = 1; //W25q80芯片失能
}
/////////读取LEN个字节
void ReadW25Q80(long addre,uchar *databuf,uchar LEN)
{
uchar i=0;
SPISS = 0; //W25q80芯片使能
SPISwap(READ_ARREY);//读取命令
SPISwap((BYTE)( addre>>16)); //写地址高8位 ,共24位
SPISwap((BYTE)( addre>>8));//写地址中间8位
SPISwap((BYTE)( addre)); //写地址低8 位
for(i=0; i<LEN;i++)
{
databuf=SPISwap(0xff);
}
SPISS = 1; //W25q80芯片使能
} 自己顶下 不要光看代码,要用逻辑分析仪结合波形来分析。 原因找到,172k的写入速率正常了,原来写入比读出慢百倍。原以为写入也可以几十m的速度
页:
[1]