?? nandflash.h
字號(hào):
#ifndef _NANDFlash_H_
#define _NANDFlash_H_
#include <S3C2440.H>
/*****************參數(shù)*************/
//TACLS + TWRPH0 + TWRPH1 >= 50ns
#define TACLS 2 //1-clk(0ns)
#define TWRPH0 5 //3-clk(25ns)
#define TWRPH1 1 //1-clk(10ns)
#define pagesize 2048
/*****************寄存器配置***********/
//NFCONF
//CLE/ALE持續(xù)時(shí)間設(shè)置值(0-3),持續(xù)時(shí)間=HCLK * TACLS
#define NF_TACLS (TACLS)
//TWRPH0持續(xù)持續(xù)時(shí)間設(shè)置值(0-7),持續(xù)時(shí)間=HCKL*(TWRPH0 +1)
#define NF_TWRPH0 (TWRPH0)
//TWRPH1持續(xù)時(shí)間設(shè)置值(0-7),持續(xù)時(shí)間=HCLK*(TWRPH1+1)
#define NF_TWRPH1 (TWRPH1)
#define NFCONF_VAL ((NF_TACLS <<12) |(NF_TWRPH0<<8) |(NF_TWRPH1<<4))
//NFCONT
//0--只寫,1--初始化ECC編碼器
#define NF_INIT_ECC (1)
//0--允許片選,1--禁止片選,該值只在MODE位為1時(shí)有效
#define NF_REG_NCE (1)
//0-禁止NandFlash控制器,1--使能NandFlash控制器
#define NF_MODE (1)
#define NFCONT_VAL ((NF_INIT_ECC<<4)|(NF_REG_NCE <<1) | (NF_MODE<<0))
//NFSTAT
#define NF_RB_TRANS (1) //0--未檢測(cè)到Rnb轉(zhuǎn)換,1--檢測(cè)到Rnb轉(zhuǎn)換
/*******************宏定義*****************/
#define NF_INVALIDBLOCK_BYTE (2047+1) //壞塊標(biāo)志位地址
#define NF_VALID_BLOCK_SIGN (0XFF) //可用塊標(biāo)志
#define NF_nFCE_L() {NFCONT &= ~(NF_REG_NCE << 1);}
#define NF_nFCE_H() {NFCONT |= (NF_REG_NCE << 1);}
#define NF_CLEAR_RB() {NFSTAT |= (NF_RB_TRANS << 2);}
#define NF_DETECT_RB() {while(!(NFSTAT & (NF_RB_TRANS << 0)));}
#define NF_RDDATA() (NFDATA)
#define NF_RDDATA8() (*((unsigned char *)(&NFDATA)))
#define NF_WRDATA(data) {NFDATA = data;}
#define NF_WRDATA8(data) {*((unsigned char *)(&NFDATA)) = data;}
#define NF_CMD(cmd) {NFCMD = cmd;}
#define NF_ADDRESS(addr) {NFADDR = addr;}
//Nand Flash復(fù)位
void NAND_Reset(void);
//Nand初始化
void NAND_Init(void) ;
//讀取Nand Flash的ID
unsigned int NAND_ReadId(char * th2,char * th3,char * th4,char * th5);
unsigned int NF_ReadStatus(void);
int NF_write_addr(int nRowAddr,int nColAddr);
int NF_CheckBlock(unsigned int nBlock);
int NF_ReadPage(int nRowAddr,int nColAddr,void * pvReadBuff,int nSize);
int NAND_WritePage(int nRowAddr,int nColAddr,void *pvWireBuff,int nLeng);
int NF_EreaseBlock(int nBlock);
//void nand_read(unsigned char *buf, unsigned long start_addr, int len);
//int nand_write(unsigned char *buf, unsigned long start_addr, int len);
int nand_read(int nRowAddr,int nColAddr,char * pvReadBuff,int nBuffSize);
int nand_write(int nRowAddr,int nColAddr,char *pvWireBuff,int nBuffSize);
#endif
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -