打印
[其它应用]

中颖EEPROM 操作

[复制链接]
608|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhamatu|  楼主 | 2020-2-26 22:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
 中颖EEPROM,使用比较方便,但有个注意点,就是每次无论你写入
        什么数据或者在哪个地址写数据,都需要将对 对应的块擦除,擦
        除后才能写入成功。
*/
#define         SSPWriteFlag          0x5A
#define         SSPEraseFlag          0xA5       

//数据区 扇形区1
#define                ADDR_START1                                (uint16)0x100 //数据存储区起始地址

#define                ADDR_START2                                (uint16)0x200 //数据存储区起始地址
//数据区 扇形区2
#define                Addr1UserHave                        (uint16)0x101 //用户地址1
#define                Addr2UserHave                        (uint16)0x102 //用户地址2

uint8 Ssp_Flag = 0 ;

//*************************************
// 函数名称:Ssp_Write
// 函数功能:SSP擦除某块的地址
// 入口参数:被写数据的地址 数据
// 出口参数:无
//***************************************
void Ssp_EraseBlock(uint16 addr)
{
        CY=EA;
        EA=0;
        IB_CON1 = 0xE6;
        IB_CON2 = 0x05;
        IB_CON3 = 0x0A;
        IB_CON4 = 0x09;
        if(Ssp_Flag != SSPEraseFlag)
                {
                        IB_CON2=0;
                        goto Erase_Err;
                }
        XPAGE = (addr>>8) & 0x07;          
        FLASHCON=1;
        IB_CON5 = 0x06;
        _nop_();
        _nop_();
        _nop_();
Erase_Err:
        Ssp_Flag=0;       
        FLASHCON=0;
        XPAGE=0;
        EA = CY;
}



使用特权

评论回复
沙发
zhamatu|  楼主 | 2020-2-26 22:04 | 只看该作者
//**************************************
// 函数名称:Ssp_Write
// 函数功能:SSP向某地址写一字节数据
// 入口参数:被写数据的地址 数据
// 出口参数:无
//***************************************
void Ssp_WriteByte(uint16 addr,uint8 dat)
{
        CY=EA;
        EA=0;
        IB_DATA = dat;
        IB_OFFSET = addr&0xff; //取被编程的低8位地址
        IB_CON1 = 0x6E;
        IB_CON2 = 0x05;
        IB_CON3 = 0x0A;
        IB_CON4 = 0x09;
        if(Ssp_Flag != SSPWriteFlag)
        {
                IB_CON2=0;
                goto Write_Err;
        }
        XPAGE = ((addr>>8) & 7); //被编程的扇形区0-3          
        FLASHCON=1;        //对类EPROM编程开始
        IB_CON5 = 0x06;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
Write_Err:
        Ssp_Flag=0;
        FLASHCON=0;
        XPAGE=0;
        EA = CY;
}

使用特权

评论回复
板凳
zhamatu|  楼主 | 2020-2-26 22:06 | 只看该作者
//*************************************
// 函数名称:Read_Flash
// 函数功能:读数据 向FLASH
// 入口参数:读数据的地址
// 出口参数:无
//***************************************
uint8 Read_FlashByte(uint16 addr)
{
        uint8 temp;
        FLASHCON=1;
        temp=*(uint8 code *)(addr);
           FLASHCON=0;
        return(temp);
}


//应用实例:
Ssp_EraseBlock(ADDR_START1);//擦除块1
Ssp_WriteByte(Addr1UserHave,0x88);//在地址Addr1UserHave中写入0x88
R_Data = Read_FlashByte(Addr1UserHave);//读地址Addr1UserHave的值

使用特权

评论回复
地板
eanry| | 2020-2-27 11:44 | 只看该作者
通用操作?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

63

主题

504

帖子

1

粉丝