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

📄 flash.c

📁 读取FLASH的厂商ID和芯片ID-读取FLASH的厂商ID和芯片ID
💻 C
字号:
#include "PublHead.h"

#define ADDRESS(addr)               (volatile U16 *)(FLASH_ADDR|(addr))

/*
函数    读取FLASH的厂商ID和芯片ID
*/
extern Ulong ReadFlashID(void)
{
    volatile U16 * ptr;
    UNION32 Id;

    // 进入产商ID模式
    ptr = ADDRESS(0x5555<<1);
    *ptr = 0xaa;
    ptr = ADDRESS(0x2aaa<<1);
    *ptr = 0x55;
    ptr = ADDRESS(0x5555<<1);
    *ptr = 0x90;
    // 读取产商ID
    ptr = ADDRESS(0<<1);
    Id.i[1] = *ptr;
    ptr = ADDRESS(1<<1);
    Id.i[0] = *ptr;
    // 退出产商ID模式
    *ptr = 0xf0;
    return(Id.l);
}

extern Boolean FlashErase(Ulong addr,Uint SecOrBlk)
{
    volatile U16 * ptr;

#ifdef PC_PLATFORM
       return Pc_FlashErase(addr,SecOrBlk);
#endif


    ptr = ADDRESS(0x5555<<1);
    *ptr = 0xaa;
    ptr = ADDRESS(0x2aaa<<1);
    *ptr = 0x55;
    ptr = ADDRESS(0x5555<<1);
    *ptr = 0x80;
    ptr = ADDRESS(0x5555<<1);
    *ptr = 0xaa;
    ptr = ADDRESS(0x2aaa<<1);
    *ptr = 0x55;
    ptr = ADDRESS(addr);
    *ptr = SecOrBlk;
    while(1)
    {
        Uint temp1,temp2;

        temp1 = *ptr;
        temp2 = *ptr;
        if(temp1 == temp2)
        {
            if(temp1 != 0xffff)
            {
                return(FALSE);
            }
            else
            {
                return(TRUE);
            }
        }
    }
}

extern void FlashWriteOneWord(Ulong addr,Uint dt)
{
    volatile U16 * ptr;

    // 写入一个字节
    ptr = ADDRESS(0x5555<<1);       // 自动写入时序
    *ptr = 0xaa;
    ptr = ADDRESS(0x2aaa<<1);
    *ptr = 0x55;
    ptr = ADDRESS(0x5555<<1);
    *ptr = 0xa0;
    ptr = ADDRESS(addr);
    *ptr = dt;               // 写入数据
    while(1)                        // 等待写入完成
    {
        Uint temp1,temp2;

        temp1 = *ptr;
        temp2 = *ptr;
        if(temp1 == temp2)
        {
            temp1 = *ptr;
            temp2 = *ptr;
            if(temp1 == temp2)
            {
                break;
            }
        }
    }
}

⌨️ 快捷键说明

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