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

📄 flash.c

📁 arm_bootloader _flash writter &USB
💻 C
字号:
#include "config.h"
#include "2410addr.h"
#include "2410lib.h"
#include "flash.h"

__inline void NFChipEn()                    { rNFCONF &= ~0x800; }
__inline void NFChipDis()                   { rNFCONF |= 0x800; }
__inline void WrNFCmd(unsigned char cmd)    { rNFCMD = cmd; }
__inline void WrNFAddr(unsigned char addr)  { rNFADDR = addr; }
__inline void WrNFData(unsigned char data)  { rNFDATA = data; }
__inline unsigned char RdNFStat(void)       { return rNFSTAT; }
__inline unsigned char RdNFData(void)       { return rNFDATA; }

void Flash_fill_mem_addr(unsigned int linear_addr, flash_mem *f_addr)
{
    f_addr->linear_addr = linear_addr;
    f_addr->column = linear_addr & 0xFF;
    f_addr->row = linear_addr >> 9;
    f_addr->half = (linear_addr >> 8) & 1;
}

unsigned int Flash_ReadID(void)
{
    unsigned short id = 0;
    
    NFChipEn();
    WrNFCmd(NAND_FLASH_CMD_RDID);
    WrNFAddr(0);
    while(!RdNFStat());
    id = (unsigned short)(RdNFData());
    id <<= 8;
    id |= RdNFData();
    NFChipDis();
    
    return id;
}

// return value == 0 -> BUSY
// return value != 0 -> READY
unsigned char Flash_ReadStatus(void)
{
    unsigned char status;
    
    NFChipEn();
    WrNFCmd(NAND_FLASH_CMD_READ_STATUS);
    status = RdNFData();
    NFChipDis();
    
    return status;
}

static unsigned char Flash_Busywait()
{
    unsigned char status;
    unsigned int count = 0;
    
    WrNFCmd(NAND_FLASH_CMD_READ_STATUS);    // Command 

⌨️ 快捷键说明

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