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

📄 flash.c

📁 MiniARM2200基础包4:系统控制、FLASH
💻 C
字号:
/****************************************Copyright (c)**************************************************
**                               广州周立功单片机发展有限公司
**                                     研    究    所
**                                        ARM开发组
**
**                                 http://www.zlgmcu.com
**
**--------------文件信息--------------------------------------------------------------------------------
** 文   件   名: flash.c
** 创   建   人: 甘达
** 最后修改日期: 2005年10月11日
** 描        述: 39VF1601编程接口程序包
**              
**--------------历史版本信息----------------------------------------------------------------------------
** 创建人: 甘达
** 版  本: V1.0
** 日 期: 2005年10月11日
** 描 述: 原始版本
**
**--------------当前版本修订------------------------------------------------------------------------------
** 修改人: 
** 日 期:
** 描 述:
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/

#include "config.h"


uint32 FLASH_WordWrite(uint32 addr, uint16 data) 
{   uint16 temp1, temp2;

    CPU_IOWR_16(FLASH_BASEADDRESS+(0x5555<<1), 0xaaaa);
    CPU_IOWR_16(FLASH_BASEADDRESS+(0x2aaa<<1), 0x5555);
    CPU_IOWR_16(FLASH_BASEADDRESS+(0x5555<<1), 0xa0a0);
    
    CPU_IOWR_16(addr, data);

    while (1)
    {
        temp1 = CPU_IORD_16(addr);
        temp2 = CPU_IORD_16(addr);
        if ( temp1==temp2 )
        {
            if (data != CPU_IORD_16(addr) )
            {
                return FALSE;
            }
            else
            {
                return TRUE;
            }
        }
    }
    return FALSE;
}

uint32 FLASH_ChipErase(void) 
{   

    CPU_IOWR_16(FLASH_BASEADDRESS+(0x5555<<1), 0xaaaa);
    CPU_IOWR_16(FLASH_BASEADDRESS+(0x2aaa<<1), 0x5555);
    CPU_IOWR_16(FLASH_BASEADDRESS+(0x5555<<1), 0x8080);
    CPU_IOWR_16(FLASH_BASEADDRESS+(0x5555<<1), 0xaaaa);
    CPU_IOWR_16(FLASH_BASEADDRESS+(0x2aaa<<1), 0x5555);
    CPU_IOWR_16(FLASH_BASEADDRESS+(0x5555<<1), 0x1010);

    while (1)
    {
        if ( CPU_IORD_16(FLASH_BASEADDRESS)==CPU_IORD_16(FLASH_BASEADDRESS) )
        {
            if ( 0xffff!=CPU_IORD_16(FLASH_BASEADDRESS) )
            {
                return FALSE;
            }
            else
            {
                return TRUE;
            }
        }
    }
    return FALSE;
}


uint32 FLASH_SectorErase(uint32 index) 
{
    CPU_IOWR_16(FLASH_BASEADDRESS+0x5555, 0xaa);
    CPU_IOWR_16(FLASH_BASEADDRESS+0x2aaa, 0x55);
    CPU_IOWR_16(FLASH_BASEADDRESS+0x5555, 0x80);
    CPU_IOWR_16(FLASH_BASEADDRESS+0x5555, 0xaa);
    CPU_IOWR_16(FLASH_BASEADDRESS+0x2aaa, 0x55);
    CPU_IOWR_16(FLASH_BASEADDRESS+(index<<11), 0x30);

    while (1)
    {
        if ( CPU_IORD_16(FLASH_BASEADDRESS)==CPU_IORD_16(FLASH_BASEADDRESS) )
        {
            if ( 0xffff!=CPU_IORD_16(FLASH_BASEADDRESS) )
            {
                return FALSE;
            }
            else
            {
                return TRUE;
            }
        }
    }
    return FALSE;
}


/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

⌨️ 快捷键说明

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