⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 w25x32drv.h

📁 C语言源代码及相关资料
💻 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 + -