打印
[经验分享]

用户程序如何操作IAP存储资料?

[复制链接]
476|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
uptown|  楼主 | 2024-5-13 20:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
MA86系列(MTP型)
步骤1:将要修改的数据直接写入到MTP

其它系列(FLASH型)
步骤1:保存Flash数据到缓存
步骤2:擦除此页(使用页擦除模式)
步骤3:在缓存里修改要更新的数据
步骤4:将缓存里的数据写入到Flash(使用字节编程模式)
// 页擦除
        bit bEA=EA;
        IFADRH = ByteAddr;        //送地址高字节
        IFADRL= 0x00;               //送地址低字节;
        EA = 0;                        //关中断
        ISPCR = 0x80;               //允许ISP/IAP操作
        IFMT =0x03;                 //页擦除
        SCMD = 0x46;
        SCMD = 0xB9;
        nop();
        IFMT=0;
        ISPCR = 0;                    //清ISP/IAP特殊寄存器
        EA = bEA;                     //恢复中断


// 字节编程
        bit bEA=EA;
        IFD = ByteData;             //送所要写的数据   
        IFADRH = ByteAddr>>8;   //送地址高字节
        IFADRL= ByteAddr;          //送地址低字节;
        EA = 0;                         //关中断
        ISPCR = 0x80;                //允许ISP/IAP操作
        IFMT =0x02;                  // 字节编程
        SCMD = 0x46;
        SCMD = 0xB9;
        nop();
        IFMT=0;
        ISPCR = 0;                    //清ISP/IAP特殊寄存器
        EA = bEA;                     //恢复中断

// 字节读取
        bit bEA=EA;
        IFADRH = ByteAddr>>8;  //送地址高字节
        IFADRL= ByteAddr;         //送地址低字节;
        EA = 0;                        //关中断
        ISPCR = 0x80;               //允许ISP/IAP操作
        IFMT = 0x01;                //字节读取
        SCMD = 0x46;
        SCMD = 0xB9;
        nop();
        IFMT=0;
        ISPCR = 0;                   //清ISP/IAP特殊寄存器
        EA = bEA;                    //恢复中断
        return IFD;

使用特权

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

本版积分规则

36

主题

3316

帖子

2

粉丝