📄 w25x32drv.h
字号:
/**--------------File Info-------------------------------------------------------------------------------
** File Name: W25X32Drv.h
** Last modified Date:
** Last Version:
** Descriptions: SSP下W25X32的操作函数头文件
**
********************************************************************************************************/
#ifndef __W25X32DRV_H
#define __W25X32DRV_H
/* 定义操作W25X32所需的数据 */
enum PARAMETER_TYPE {Invalid}; // 定义1个常量,代表无效参数
enum OptResult{ERROR,OK};
typedef enum ERTYPE{Sec1,Sec8,Sec16,Chip} ErType;
typedef enum IDTYPE{Manu_ID,Dev_ID,Jedec_ID} idtype;
#define FIRSTSEC 0
#define LASTSEC 1022
#define STARTADDR(sec) (sec*SEC_SIZE)
#define GetAddr(sec,addr) (STARTADDR(sec)|(addr))
#define MAX_ADDR 0x3FFFFF // 定义芯片内部最大地址
#define SEC_MAX 1022 // 定义最大扇区号
#define SEC_SIZE 0x1000 // 扇区大小
#define MAX_SEC_NO 255 //max section no can use for r/w max add
#define F121B_CS (1 << 21) // P1.21为片选脚
#define F006B_CS (1<<6) //P0.6片选脚
#define W25X32_CELow() (IO1CLR |= F121B_CS)
#define W25X32_CEHigh() (IO1SET |= F121B_CS)
#define W25X32_CELow_2() (IO0CLR |= F006B_CS)
#define W25X32_CEHigh_2() (IO0SET |= F006B_CS)
/*******************************************************************************************
** 函数名称:SSP_Init
** 功能说明:初始化LPC2300系列ARM和W25X32芯片的控制和通讯接口。
** 入口参数:无
** 出口参数:无
*******************************************************************************************/
extern void SSP_Init(void);
/************************************************************************
** 函数名称:Get_Byte
** 函数功能:以DMA方式通过硬件SSP接口接收一个字节到处理器
** 入口参数:无
** 出口参数:无
************************************************************************/
extern uint8 Get_Byte(void);
extern uint8 Get_Byte_2(void);
/************************************************************************
** 函数名称: Send_Byte
** 函数功能:以DMA方式通过硬件SSP接口发送一个字节到W25X32
** 入口参数:data
** 出口参数:无
************************************************************************/
extern void Send_Byte(uint8 data);
extern void Send_Byte_2(uint8 data);
/************************************************************************
** 函数名称:W25X32_WR
** 函数功能:W25X32的写函数,可写1个和多个数据到指定地址
** 入口参数:
** uint32 Dst:目标地址,范围 0x0 - MAX_ADDR(MAX_ADDR = 0x1FFFFF)
** uint8* SndbufPt:发送缓存区指针
** uint32 NByte:要写的数据字节数
** 出口参数:操作成功则返回OK,失败则返回ERROR
** 注 意:若某功能下,某一入口参数无效,可在该入口参数处填Invalid,该参数将被忽略
************************************************************************/
extern uint8 W25X32_WR(uint32 Dst,uint8* SndbufPt,uint32 NByte);
extern uint8 W25X32_WR_2(uint32 Dst,uint8* SndbufPt,uint32 NByte);
/************************************************************************
** 函数名称:W25X32_RD
** 函数功能:W25X32的读函数,可选择读ID和读数据操作
** 入口参数:
** uint32 Dst:目标地址,范围 0x0 - MAX_ADDR(MAX_ADDR = 0x1FFFFF)
** uint32 NByte: 要读取的数据字节数
** uint8* RcvBufPt:接收缓存的指针
** 出口参数:操作成功则返回OK,失败则返回ERROR
** 注 意:若某功能下,某一入口参数无效,可在该入口参数处填Invalid,该参数将被忽略
************************************************************************/
extern uint8 W25X32_RD(uint32 Dst, uint32 NByte,uint8* RcvBufPt);
extern uint8 W25X32_RD_2(uint32 Dst, uint32 NByte,uint8* RcvBufPt);
/************************************************************************
** 函数名称:W25X32_RdID
** 函数功能:W25X32的读ID函数,可选择读ID和读数据操作
** 入口参数:
** idtype IDType:ID类型。用户可在Jedec_ID,Dev_ID,Manu_ID三者里选择
** uint32* RcvbufPt:存储ID变量的指针
** 出口参数:操作成功则返回OK,失败则返回ERROR
** 注 意:若填入的参数不符合要求,则返回ERROR
************************************************************************/
extern uint8 W25X32_RdID(idtype IDType,uint32* RcvbufPt);
extern uint8 W25X32_RdID_2(idtype IDType,uint32* RcvbufPt);
/************************************************************************
** 函数名称:W25X32_Erase
** 函数功能:根据指定的扇区号选取最高效的算法擦除
** 入口参数:
** uint32 sec1:起始扇区号,范围(0~499)
** uint32 sec2:终止扇区号,范围(0~499)
** 出口参数:操作成功则返回OK,失败则返回ERROR
************************************************************************/
extern uint8 W25X32_Erase(uint32 sec1, uint32 sec2);
extern uint8 W25X32_Erase_2(uint32 sec1, uint32 sec2);
extern uint8 W25X32_Erase_Semphore(uint32 sec1, uint32 sec2);
extern uint8 W25X32_Erase_2_Semphore(uint32 sec1, uint32 sec2);
extern uint8 W25X32_READ_Semphore(uint32 Oid_Addr, uint32 Oid_Len, uint8 * Buff);
extern uint8 W25X32_READ_2_Semphore(uint32 Oid_Addr, uint32 Oid_Len, uint8 * Buff);
extern uint8 W25X32_INIT(void);
extern uint8 W25X32_WRITE(uint32 Oid_Addr,uint32 Oid_Len,uint8 * Buff,uint32 Data_Size);
extern uint8 W25X32_READ(uint32 Oid_Addr,uint32 Oid_Len,uint8 * Buff);
extern uint8 W25X32_READ_2_BlindSection(uint8 * uiReviceBuf0,uint32 * puiNum);
extern uint8 W25X32_WRITE_2_BlindSection(uint8 * uiReviceBuf0,uint32 uiNum);
extern uint8 W25X32_WRITE_2(uint32 Oid_Addr,uint32 Oid_Len,uint8 * Buff,uint32 Data_Size);
extern uint8 W25X32_READ_2(uint32 Oid_Addr,uint32 Oid_Len,uint8 * Buff);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -