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

📄 k9f1g08.h

📁 三星新一代2k page的k9f1g8u0a的底层驱动,已应用于工程之中.
💻 H
字号:
// K9F1G08.h

// NAND FLASH: K9F1G08U0A

#ifndef _K9F1G08_H
#define _K9F1G08_H

#include "config.h"
#include "board.h"

// CPU 分配给第一片 FLASH 的地址: CLE->A0, ALE->A1
#define K9F1G08_DATA1 &BANK1_0(0) // ALE=0, CLE=0
#define K9F1G08_CLE1  &BANK1_0(1) // ALE=0, CLE=1
#define K9F1G08_ALE1  &BANK1_0(2) // ALE=1, CLE=0

// CPU 分配给第二片 FLASH 的地址
#define K9F1G08_DATA2 &BANK2_0(0) // ALE=0, CLE=0
#define K9F1G08_CLE2  &BANK2_0(1) // ALE=0, CLE=1
#define K9F1G08_ALE2  &BANK2_0(2) // ALE=1, CLE=0

// K9F1G08U0A 内部结构
#define BYTESPERPAGE 		2048	// 每页字节数
#define BYTESPERPAGESPARE 	64		// 页附加字节数
#define PAGEPERBLOCK		64		// 每块页数
#define BLOCKPERCHIP		1024	// 芯片包含的块数

#ifdef __cplusplus
extern "C" {
// #define __inline inline // in c and c++, inline isn't compatible
#endif

// Chip==0 为第一片NAND FLASH, 其它值为第二片NAND FLASH
// xIndex 为0序

// 芯片复位
void K9F1G_Reset(uint8 Chip);

// 读芯片状态
uint8 K9F1G_ReadStatus(uint8 Chip);

// 读芯片ID
uint32 K9F1G_ReadID(uint8 Chip);

// 判断操作是否完成, 返回FALSE为失败, 返回TRUE为成功
uint8 K9F1G08OK(uint8 Chip);

// 页读, size<=BYTESPERPAGE(2048)+BYTESPERPAGESPARE(64)
uint8 K9F1G_PageRead(uint8 *Buf, uint32 size, uint32 PageIndex, uint8 Chip);

// 读页附加数据, size<=BYTESPERPAGESPARE(64)
uint8 K9F1G_PageSpareRead(uint8 *Buf, uint32 size, uint32 PageIndex, uint8 Chip);

// 页内随机读, start+size<=BYTESPERPAGE(2048)+BYTESPERPAGESPARE(64)
uint8 K9F1G_PageRandRead(uint8 *Buf, uint32 size, uint32 start, uint32 PageIndex, uint8 Chip);

// 页编程, size<=BYTESPERPAGE(2048)+BYTESPERPAGESPARE(64)
// 返回FALSE为失败, 返回TRUE为成功
uint8 K9F1G_PageProgram(uint8 *Buf, uint32 size, uint32 PageIndex, uint8 Chip);

// 编程页附加数据, size<=BYTESPERPAGESPARE(64)
// 返回FALSE为失败, 返回TRUE为成功
uint8 K9F1G_PageSpareProgram(uint8 *Buf, uint32 size, uint32 PageIndex, uint8 Chip);

// 页内随机编程, start+size<=BYTESPERPAGE(2048)+BYTESPERPAGESPARE(64)
// 返回FALSE为失败, 返回TRUE为成功
uint8 K9F1G_PageRandProgram(uint8 *Buf, uint32 size, uint32 start, uint32 PageIndex, uint8 Chip);

// 芯片内页拷贝, 包括附加数据, 返回FALSE表示失败, TRUE为成功
uint8 K9F1G_PageCopyBackProgram(uint32 SourcePageIndex, uint32 DestPageIndex, uint8 Chip);

// 块擦除, 返回FALSE为失败, 返回TRUE为成功
uint8 K9F1G_BlockErase(uint32 BlockIndex, uint8 Chip);

// 可用块检测, 返回FALSE为坏块, TRUE为可用块
uint8 K9F1G_BlockCheck(uint32 BlockIndex, uint8 Chip);

// end of K9F1G08U0A basic operation
///////////////////////////////////////////////////////////////////////////
// customer board operation

// 初始化CPU与nand flash连接的管脚
void K9F1G_init(void);

// 写保护, Chip==0为第一片NAND FLASH, 其它值为第二片NAND FLASH
void K9F1G_lock(uint8 Chip);
void K9F1G_unlock(uint8 Chip);
uint8 K9F1G_chkbusy(uint8 Chip);

///////////////////////////////////////////////////////////////////////////


#ifdef __cplusplus
}
#endif

#endif // #ifndef _K9F1G08_H

// end of K9F1G08.h

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -