专栏中心

EEPW首页 > 专栏 > AT45DB161D 擦除算法

AT45DB161D 擦除算法

发布人:0750long 时间:2009-04-02 来源:工程师 发布文章
AT45DB161D 擦除算法

 

// 1 Chip = 16 Sectors = 512 Blocks = 4096 Pages
//            1 Sector = 32 Blocks  = 256 Pages
//                          1 Block = 8 Pages
//------------------------------------------------------------------------------
// Pm ... Pn [Bm ... Bn] [Sm ... Sn] [Bm ... Bn] Pm ... Pn
//------------------------------------------------------------------------------
// Caller must make dwAddress in Page boundary
// Example : AT45_ErasePages(247*512, 1+1*8+1*256+1*8+1);
//
void AT45_ErasePages(u32 dwAddress, u32 dwPageCount)
{

  if ( dwPageCount == 0)
    return;

  if ( ( dwAddress == 0) && ( dwPageCount >= 4096) )
  {
    AT45_ChipErase();
    return;
  }

  if ( dwPageCount >= 256 )
  {
    if ( (dwAddress & 0x1FFFF) == 0x00000000 )   // At Sector boundary
    {
      while ( dwPageCount >= 256 )
      {
        AT45_SectorErase(dwAddress);
        dwAddress += 256 * 512;
        dwPageCount -= 256;
      }

      BOOT_AT45_ErasePages(dwAddress, dwPageCount);
      return;
    }
  }

  if ( dwPageCount >= 8 )                      // Erase Blocks until Sector boundary
  {
    if ( (dwAddress & 0xFFF) == 0x00000000 )   // At Block boundary
    {
      while ( dwPageCount >= 8 )
      {
        if ( (dwAddress & 0x1FFFF) == 0x00000000 )   // At Sector boundary
        {
          if ( dwPageCount >= 256 )
          {
            BOOT_AT45_ErasePages(dwAddress, dwPageCount);
            return;
          }
        }

        AT45_BlockErase(dwAddress);
        dwAddress += 8 * 512;
        dwPageCount -= 8;
      }

      BOOT_AT45_ErasePages(dwAddress, dwPageCount);
      return;

    }
  }

  while ( dwPageCount > 0 )                    // Erase Pages until Block boundary
  {
    if ( (dwAddress & 0xFFF) == 0x00000000 )   // At Block boundary
    {
      if ( dwPageCount >= 8 )
      {
        BOOT_AT45_ErasePages(dwAddress, dwPageCount);
        return;
      }
    }

    AT45_PageErase(dwAddress);
    dwAddress += 1*512;
    dwPageCount -= 1;
  }

}

专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词:

相关推荐

700V EconoDUAL™ 3 IGBT7助力690V变频器扩容提频

Pickering扩展了LXI微波开关产品系列,满足跨行业最新测试需求

V2001全中文教程

射频功率放大器的动态非线性:双音测试的启示

电解电容真的不可靠吗?

湃睿科技×东鸿电子:PLM项目签约启动,共筑研发管理数字化新基座

国际视野 2025-09-26

testbench入门文档

资源下载 2007-03-23

决战希腊:微软“创新杯”2009实况-——软件设计和嵌入式开发项目组决赛4

视频 2009-07-08

uC_OS-Ⅱ:源码公开的实时嵌入式操作系统

调研显示,精通AI的学生群体期待更强大的数字身份保护

摩尔斯微电子宣布屡获殊荣的MM8108 Wi-Fi HaLow系统级芯片、模组、评估套件及 HaLowLink 2正式量产

高斯白躁

meigd 2005-09-22

Vishay携AI和电动汽车方案参展PCIM Asia 2025

TI公司PCB LAYOUT技术文章两篇

电子设计实用经验

资源下载 2007-03-23

DPU构建新一代AI网络的优势与关键技术

网络与存储 2025-09-24

Altera: 采用全系列40-nm收发器FPGA和ASIC实现创新

视频 2009-07-13

使用LabVIEW构建简易数据采集系统

视频 2009-07-17

数据采集技术第一讲:DAQ基础知识简介

视频 2009-07-17

应用材料公司与格罗方德合作加速AI驱动的光子技术发展

决战希腊:微软“创新杯”2009实况-——软件设计和嵌入式开发项目组决赛3

视频 2009-07-08
更多 培训课堂
更多 焦点
更多 视频

技术专区