• 大小: 3KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-04-07
  • 语言: 其他
  • 标签: spiflash  w25q128  

资源简介

spiflash w25q128驱动函数 包含block擦数,sector擦数 页写 多页写 页读 多页读函数 已调试通过

资源截图

代码片段和文件信息

/*****************************************************************************
** 文件名称:flash.c
** 功    能:
** 修改日志:
******************************************************************************/
#include “includes.h“

/*****************************************************************************
** 文件名称:uint8_t SpiFlash_ReadOneByte(void)
** 功    能:
** 修改日志:
******************************************************************************/

uint8_t SpiFlash_ReadOneByte(void)
{
    uint8_t BitCount = 0;
    uint8_t retValue = 0;
    SPIFlash_Set_SCLK;            //时钟线拉高恢复时钟线为高电平

    for(BitCount = 0;BitCount < 8; BitCount++)
    {
        retValue <<= 1;
        SPIFlash_Set_SCLK;            //时钟线拉高恢复时钟线为高电平
        if(SPIFlash_Get_DI)
        {
            retValue |= 0x01;
        }
        else
        {
            retValue &= 0xFE;
        }
        SPIFlash_Clr_SCLK;            //时钟线拉低产生下降沿读出数据
    }
    SPIFlash_Set_SCLK;
    return (retValue);
}

/*****************************************************************************
** 文件名称:void SpiFlash_WriteOneByte(uint8_t DataBuffer)
** 功    能:
** 修改日志:
******************************************************************************/

void SpiFlash_WriteOneByte(uint8_t DataBuffer)
{
    uint8_t BitCount = 0;
    SPIFlash_Clr_SCLK;          //时钟线拉低,恢复时钟线为低电平
    for(BitCount = 0;BitCount < 8; BitCount++)
    {
        SPIFlash_Clr_SCLK;          //时钟线拉低,恢复时钟线为低电平
        if(DataBuffer & 0x80)
        {
            SPIFlash_Set_DO;
        }
        else
        {
            SPIFlash_Clr_DO;
        }
        DataBuffer <<= 1;
        SPIFlash_Set_SCLK;            //时钟线拉高,产生上升沿写入数据
    }
    SPIFlash_Clr_SCLK;
    SPIFlash_Set_DO;                //一字节数据传送完毕,MOSI数据线置高表示空闲状态

}

/*****************************************************************************
** 文件名称:static uint8_t SpiFlash_Write_CMD(uint8_t *CMD)
** 功    能:
** 修改日志:
******************************************************************************/

static uint8_t SpiFlash_Write_CMD(uint8_t *CMD)
{
    uint32_t i = 0;
    for(i = 0;i < SPIFLASH_CMD_LENGTH; i++)
    {
        SpiFlash_WriteOneByte(CMD[i]);  //打开SD卡的片选信号并写入命令数据
    }

    return RET_SUCCESS;
}

/*****************************************************************************
** 文件名称:static uint8_t SpiFlash_ReadSR(void)
** 功    能:
** 修改日志:
******************************************************************************/

static uint8_t SpiFlash_ReadSR(void)
{
    uint8_t retValue = 0;
    SPIFlash_Enable_CS;
    SpiFlash_WriteOneByte(SPIFlash_ReadSR_CMD);
    retValue = SpiFlash_ReadOneByte();
    SPIFlash_Disable_CS;
    return retValue;
}


/*****************************************************************************
** 文件名称:static uint8_t SpiFlash_Wait_Busy(void)
** 功    能:
** 修改日志:
******************************************************************************/

static uin

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       3265  2013-12-05 14:15  flash\flash.h

     文件      15813  2013-12-05 15:57  flash\flash.c

     目录          0  2013-11-28 15:41  flash

----------- ---------  ---------- -----  ----

                19078                    3


评论

共有 条评论