这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » SPIFLASH存储器W25Q80读写操作的一点经验

共1条 1/1 1 跳转至

SPIFLASH存储器W25Q80读写操作的一点经验

工程师
2021-06-15 22:08:05     打赏

SPI FLASH存储器W25Q80读写操作的一点经验,希望大家注意这个问题: SPI 写入速度或者说时钟不能太快!


另外贡献一个驱动该FLASH的主要源码片段:

 

//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[i]);       
        }   
          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[i]=SPISwap(0xff);       
             }
         SPISS = 1; //W25q80芯片使能
  }




关键词: W25Q80     FLASH     存储器     经验    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]