找回密码
 立即注册

QQ登录

只需一步,快速开始

打印 上一主题 下一主题
开启左侧

[NUC] NUC100系列APROM中不能擦除APROM?

[复制链接]
跳转到指定楼层
楼主
kingpon 发表于 2013-12-19 16:21:09 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
我想在APROM中接受一段新的程序代码,然后把它写在APROM中其他地址中,在APROM中不能对APROM中个的FLASH进行擦除,写入吗?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 顶 踩
回复

使用道具 举报

12#
a_ziliu 发表于 2013-12-30 17:11:24 | 只看该作者
nuc120 a/b版沒有這個功能,要d版才有。
回复 支持 反对

使用道具 举报

11#
zhbbhz 发表于 2013-12-30 08:49:35 | 只看该作者
把代码移到LDROM中运行看看。
回复 支持 反对

使用道具 举报

10#
 楼主| kingpon 发表于 2013-12-27 18:03:52 | 只看该作者


这是我的技术手册对ISPCON的描述。版本是V2.01,我用的是NUC120。bit3是保留用还是有APUEN用呢?
回复 支持 反对

使用道具 举报

9#
a_ziliu 发表于 2013-12-27 13:10:00 | 只看该作者
回复 支持 反对

使用道具 举报

8#
 楼主| kingpon 发表于 2013-12-26 16:36:20 | 只看该作者
a_ziliu 发表于 2013-12-26 09:26
1,沒有UNLOCK
2,沒有ENANBLE ISP功能
3,有個AP UPDATED ENABLE 的暫存器要打開

1,去掉UNLOCK也不行
2,ENANBLE ISP功能已开启,用同意的擦除函数,擦除数据FLASH是可以的
3,AP UPDATED ENABLE 的暫存器在哪里呢?技术手册好像没有描述呀
回复 支持 反对

使用道具 举报

7#
 楼主| kingpon 发表于 2013-12-26 10:06:48 | 只看该作者
1,去掉UNLOCK也不行
2,ENANBLE ISP功能已开启,用同意的擦除函数,擦除数据FLASH是可以的
3,AP UPDATED ENABLE 的暫存器在哪里呢?技术手册好像没有描述呀
回复 支持 反对

使用道具 举报

6#
a_ziliu 发表于 2013-12-26 09:26:35 | 只看该作者
1,沒有UNLOCK
2,沒有ENANBLE ISP功能
3,有個AP UPDATED ENABLE 的暫存器要打開
回复 支持 反对

使用道具 举报

5#
 楼主| kingpon 发表于 2013-12-26 08:46:59 | 只看该作者
// erase fun
INTU8 STORELOC_Erase(INTU32 u32addr)
{
        FMC->ISPCMD.FCTRL = 2;
        FMC->ISPCMD.FCEN = 0;
        FMC->ISPCMD.FOEN = 1;
        FMC->ISPADR        = u32addr;
        FMC->ISPTRG.ISPGO = 1;       

        if (FMC->ISPCON.ISPFF == 1)
        {
                FMC->ISPCON.ISPFF = 0;
                return FALSE;
        }
        return TRUE;
}

INTU8 STORELOC_Write(INTU32 u32addr, INTU32 u32data)
{
        FMC->ISPCMD.FCTRL = 1;
        FMC->ISPCMD.FCEN = 0;
        FMC->ISPCMD.FOEN = 1;
        FMC->ISPADR        = u32addr;
        FMC->ISPDAT        = u32data;
        FMC->ISPTRG.ISPGO = 1;       
        if (FMC->ISPCON.ISPFF == 1)
        {
                FMC->ISPCON.ISPFF = 1;
                return FALSE;
        }
        return TRUE;
}

void APP_Program(INTU8 page,INTU32* PBuf)
{
    INTU16 i,j;
    INTU32 addr;
    UNLOCKREG();
    addr=page*512+STORELOC_DATA_BASE;   //STORELOC_DATA_BASE=0x8000
    STORELOC_Erase(addr);
    for (i=0,j=0;i<512;i+=4)
    {
        STORELOC_Write(addr+i,PBuf[j++]);
    }
    dfu.deviceState=DEVICE_IDLE;
    dfu.dfuRecvCnt=0;
}

发现0X8000后面的数据不会变,都是FF
回复 支持 反对

使用道具 举报

地板
admin 发表于 2013-12-24 16:49:33 | 只看该作者
你代码贴上看看, 或者参考\SampleCode\StdDriver\FMC_IAP 样例
牛卧堂
回复 支持 反对

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

新唐MCU