打印
[技术问答]

有没有人用N76E003 IAP升级程序的 介绍介绍哈

[复制链接]
1547|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
c475301174|  楼主 | 2018-8-24 08:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题  有做过iap 升级软件程序的介绍一下哈
沙发
gaoyang9992006| | 2018-8-24 09:57 | 只看该作者
#include <intrins.h>
#include "..\lib\n76e003.h"
#include "..\lib\my.h"

unsigned char xdata UIDBuf[12];                //存储96bit的UID内容


//读出芯片的96bit的UID
void ReadUID(void)
{
        unsigned char ch;


        TA = 0xaa;
        TA = 0x55;
        CHPCON |= 0x01;                        //使能IAP

       
        for (ch=0; ch<0x0c; ch++)
        {
                IAPAH = 0x00;
                IAPAL = ch;                        //0x02;
                IAPCN = 0X04;
       
                TA = 0xaa;
                TA = 0x55;
                IAPTRG |= 0x01;
                UIDBuf[ch] = IAPFD;
        }

//        ch = IAPFD;

//        TA = 0xaa;
//        TA = 0x55;
//        IAPTRG |= 0x01;

/*        TA = 0xaa;
        TA = 0x55;
        IAPUEN |= 0x01;                        //选择要写入的区域 BIT2 -- 1 使能IAP擦除或编程CONFIG  BIT1 -- 1 使能IAP擦除或编程LDROM  BIT0 -- 1 使能IAP擦除或编程APROM

        IAPCN = 0x22;
        IAPAH = 0x10;
        IAPAL = 0x00;
        IAPFD = 0xff;
        TA = 0xaa;
        TA = 0x55;
        IAPTRG |= 0x01;

        IAPCN = 0x21;
        IAPAH = 0x10;
        IAPAL = 0x00;
        IAPFD = 0xaa;
        TA = 0xaa;
        TA = 0x55;
        IAPTRG |= 0x01;

        TA = 0xaa;
        TA = 0x55;
        IAPUEN &= ~0x01;*/

        TA = 0xaa;
        TA = 0x55;
        CHPCON &= ~0x01;
}

bit CompUID(unsigned char code *cp_r)
{
        unsigned char code *cp;
        unsigned char xdata *xp;
        unsigned char xdata tmpx[128];
        unsigned char loop;
        cp = cp_r;                //&UID1;
        xp = &tmpx;
        for (loop=0,B=12; ; )
        {
                if (*cp == 0xff) loop++;
                cp++;
                B--;
                if (B==0) break;
        }
        cp = cp_r;                //&UID1;
        if (loop>5)                //没有写入UID,写入UID
        {
                for (loop=0; loop<12;loop++)
                {
                        *xp = UIDBuf[loop];
                        xp++;
                        cp++;
                }
                for ( ; loop<128; )
                {
                        *xp = *cp;
                        loop++;
                        xp++;
                        cp++;
                }

                TA = 0xaa;
                TA = 0x55;
                CHPCON |= 0x01;                        //使能IAP


//                TA = 0xaa;
//                TA = 0x55;
//                IAPTRG |= 0x01;

                TA = 0xaa;
                TA = 0x55;
                IAPUEN |= 0x01;                        //选择要写入的区域 BIT2 -- 1 使能IAP擦除或编程CONFIG  BIT1 -- 1 使能IAP擦除或编程LDROM  BIT0 -- 1 使能IAP擦除或编程APROM
       
                IAPCN = 0x22;                        //APRROM擦除

                IAPAH = (unsigned char)(((unsigned int)cp_r)/256);                //0x10;
                IAPAL = (unsigned char)cp_r;                        //0x00;
                IAPFD = 0xff;

                TA = 0xaa;
                TA = 0x55;
                IAPTRG |= 0x01;                         //执行IAP

//APROM写入
                xp = &tmpx;
                for (loop=0; loop<128; loop++)
                {
                        IAPCN = 0x21;
                        IAPAH = (unsigned char)(((unsigned int)cp_r)/256);                //0x10;
                        IAPAL = loop;        //0x00;
                        IAPFD = *xp;        //0xaa;
                        xp++;
                        TA = 0xaa;
                        TA = 0x55;
                        IAPTRG |= 0x01;
                }

                TA = 0xaa;
                TA = 0x55;
                IAPUEN &= ~0x01;
       
                TA = 0xaa;
                TA = 0x55;
                CHPCON &= ~0x01;
                return(TRUE);
        }
        else                        //比较UID
        {
                cp = cp_r;                //&UID1;
                xp = &UIDBuf;
                for (B=12; ; )
                {
                        if(*xp != *cp) return(FALSE);
                        B--;
                        if (B==0) break;
                }
                return(TRUE);
        }
       

}

使用特权

评论回复
板凳
c475301174|  楼主 | 2018-8-25 08:27 | 只看该作者

这直接就是官网的列子  bootloarer程序应该怎样写 已经如何设置

使用特权

评论回复
地板
天灵灵地灵灵| | 2018-8-25 22:04 | 只看该作者
没研究过,这个跟ISP还不一样吧?

使用特权

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

本版积分规则

13

主题

113

帖子

3

粉丝