新唐M051 ISP(LDROM、FMC,相当于8位机EEPROM操作)程序

发布者:rockstar7最新更新时间:2014-12-12 来源: 51hei关键字:新唐M051  ISP  EEPROM操作 手机看文章 扫描二维码
随时随地手机看文章

发一个M051单片机的 ISP操作程序(LDROM、FMC,相当于8位机EEPROM操作)

#include "SmartM_M0.h"
#define DEBUGMSG printf

#define PAGE_SIZE               512
#define DATAFLASH_START_ADDRESS 0x0001F000
#define DATAFLASH_SIZE          0x00001000
#define RW_SIZE                 0x20
STATIC UINT8 g_unDataFlashWRBuf[10];    //全局读写缓冲区
/****************************************
*函数名称:ISPTriger
*输    入:无
*输    出:无
*功    能:ISP执行
******************************************/
VOID ISPTriger(VOID)
{
    ISPTRG |= ISPGO;
    while((ISPTRG&ISPGO) == ISPGO);
}
/****************************************
*函数名称:ISPEnable
*输    入:无
*输    出:无
*功    能:ISP使能
******************************************/
VOID ISPEnable(VOID)
{
    Un_Lock_Reg();
    ISPCON |= ISPEN;
}
/****************************************
*函数名称:ISPDisable
*输    入:无
*输    出:无
*功    能:ISP禁用
******************************************/
VOID ISPDisable(VOID)
{
    Un_Lock_Reg();
    ISPCON &= ~ISPEN;
}
/****************************************
*函数名称:DataFlashRWEnable
*输    入:无
*输    出:无
*功    能:数据区读写使能
******************************************/
VOID DataFlashRWEnable(VOID)
{
    Un_Lock_Reg();
    ISPCON |= LDUEN;
}
/****************************************
*函数名称:DataFlashErase
*输    入:unPage 页地址
*输    出:无
*功    能:数据区擦除
******************************************/
VOID DataFlashErase(UINT32 unPage)
{
    ISPEnable();
    DataFlashRWEnable();
    ISPCMD = PAGE_ERASE;
    ISPADR = (unPage*PAGE_SIZE+DATAFLASH_START_ADDRESS);
    ISPTriger();
    ISPDisable();       
}
/****************************************
*函数名称:DataFlashWrite
*输    入:pucBuf 写数据缓冲区
    unSize 写数据大小
*输    出:无
*功    能:数据区写
******************************************/
VOID DataFlashWrite(UINT8 *pucBuf,UINT32 unSize)//unSize要为4的倍数
{
    UINT32 i;   
    ISPEnable();
    DataFlashRWEnable();
    ISPCMD = PROGRAM;
 for(i=0; i {
     ISPADR = (i*4+DATAFLASH_START_ADDRESS);
     ISPDAT = *(UINT32 *)(pucBuf+i);
     ISPTriger();    
 }
    ISPDisable();       
}
/****************************************
*函数名称:DataFlashRead
*输    入:pucBuf 读数据缓冲区
    unSize 读数据大小
*输    出:无
*功    能:数据区读
******************************************/
VOID DataFlashRead(UINT8 *pucBuf,UINT32 unSize)
{
    UINT32 i;
    ISPEnable();
    DataFlashRWEnable();
    ISPCMD = READ;
    for(i=0; i    {
     ISPADR = (i*4+DATAFLASH_START_ADDRESS);
        ISPTriger();
  *(UINT32 *)(pucBuf+i)=ISPDAT;
    }    
    ISPDisable();       
}
/****************************************
*函数名称:main
*输    入:无
*输    出:无
*功    能:函数主体
******************************************/
INT32 main(VOID)
{
  UINT32 i;            
  PROTECT_REG         //ISP下载时保护FLASH存储器
  (
   PWRCON |= XTL12M_EN;      //默认时钟源为外部晶振
   while((CLKSTATUS & XTL12M_STB) == 0);   //等待12MHz时钟稳定 
  
   CLKSEL0 = (CLKSEL0 & (~HCLK)) | HCLK_12M; //设置外部晶振为系统时钟 
  ) 
  UartInit(12000000,9600);     //串口0波特率为9600
  while(1)
  {
      //擦除第0页
         DataFlashErase(0);      
   DEBUGMSG(" Data Flash Write: ");
   //初始化缓冲区,所有数值全为0x11
   memset(g_unDataFlashWRBuf,0x11,sizeof(g_unDataFlashWRBuf));  
   for(i=0; i   {
       DEBUGMSG("%02X ",g_unDataFlashWRBuf[i]);
   }
   //数据区写
         DataFlashWrite(g_unDataFlashWRBuf,sizeof(g_unDataFlashWRBuf));
   DEBUGMSG(" Data Flash Read: ");
   //清零缓冲区
   memset(g_unDataFlashWRBuf,0,sizeof(g_unDataFlashWRBuf));  
   //数据区读
         DataFlashRead(g_unDataFlashWRBuf,sizeof(g_unDataFlashWRBuf));
   for(i=0; i   {
       DEBUGMSG("%02X ",g_unDataFlashWRBuf[i]);
   } 
  
   Delayms(500); 
  }
}
关键字:新唐M051  ISP  EEPROM操作 引用地址:新唐M051 ISP(LDROM、FMC,相当于8位机EEPROM操作)程序

上一篇:新唐M051中断唤醒(睡眠)演示程序
下一篇:新唐M051 ADC模数转换程序

推荐阅读最新更新时间:2024-03-16 13:48

ISP器件W78E516及其在系统编程的实现
      摘要: 近年来,在系统编程(ISP)技术的不断发展和成熟,使得硬件设计逐步软件化,硬件结构的通用性日益增强,系统设计、生产、维护、升级等环节都发生着深刻的变革。本文以WINBOND公司的W78E516为例介绍ISP器件的结构及其在系统编程原理。    关键词: W78E516在系统编程微控制器   使用传统方法对CPU重新编程存在诸多不便,   在系统编程技术(以下简称ISP技术)的出现是对传统编程方法的突破。ISP(In System Programming)技术是指,在用户设计的目标系统中或印刷电路板上,为重新配置逻辑或实现新的功能,而对器件进行编程或反复编程的能力。ISP技术的出现和发展开创了数字电子
[单片机]
<font color='red'>ISP</font>器件W78E516及其在系统编程的实现
嵌入式系统实现在系统编程(ISP)
随着嵌入式系统技术的发展,电可擦除的Flash芯片以容量大、价格低、编程方便等优势得到了广泛的应用。由于同一片Flash作业程序存储器的系统无法直接实现在系统编程(ISP)。为了方便现场调试和程序升级,可以采用集成ISP功能较新的MCU(如AVR、部分ARM芯片等),或者采用双Flash 设计等方法实现ISP功能。但有不少系统仍然使用不具备直接ISP功能的MCU(如M68K、N80C196等),由于印制版面积、成本等原因的考虑也没有采用双Flash芯片,此类系统在程序升级时通常需要如编程器、仿真器等特定工具,在现场应用时不很方便。为解决这些系统的ISP问题,本文以 MC68332平台为例提出了一种通用的ISP方案。 1 方法分
[单片机]
嵌入式系统实现在系统编程(<font color='red'>ISP</font>)
图像传感与处理是否集成?
  众所周知,手机的体积起来越小,价格也越来越低。当你针对消费者需求,要为手机增添更多功能时,如为静止图像和视频提供高分辨率的成像功能,你就会面临一个相当有意思的研究案例,也就是作为一种经典工程学科的折衷处理问题。   为了更好地进行选择,首先就要看一下可拍照机手机及其相关应用所需的基本功能,其中包括了图像质量、去马赛克(demosaicing)算法(把Bayer色彩滤光片的信号流转换为真实的图像)、噪声补偿、自动白平衡(auto white balance)、自动曝光、文件较小以及低功耗。    以集成追随超薄手机潮流   通过采用JPEG压缩,可以降低文件大小,并满足存储器要求。这种算法出现在某些图像传感器IC上,但更多
[手机便携]
在远程通信中实现89LPC932的ISP功能
    ISP(In-System Programming,在系统编程)是指电路板上的空白器件可以编程写入最终用户代码,而不需要从电路板上取下器件,已经编程的器件也可以用ISP方式擦除或再编程。     用反汇编软件将89LPC932中Boot ROM源代码(机器码)反汇编为ASM文件,分析其数据处理与通信控制,就能明白ISP功能实现的具体方法,并修改使其能够为我们所用,在远程RS485通信网络中实现ISP功能,从而在某些特定环境下依然能够稳定工作。 1 对Boot ROM中部分代码的分析     在这里只针对通信部分进行简要阐述。 1.1 自动波特率的确定与校验     上位机按照自身的波特率,向下位机发送一个大写的英文字符“
[单片机]
在远程通信中实现89LPC932的<font color='red'>ISP</font>功能
单片机ISP编程器使用
在Keil集成开发环境中完成了工程建立、源程序输入、源程序编译等工作后,得到了.HEX目标文件。单片机ISP编程器就是用来把这个hex文件烧写到单片机里去的工具,这样我们的程序才会被执行。 简单介绍一下我们使用的ISP编程器,什么是在系统编程技术呢?在系统可编程技术即In System Programming,简单地说就是指待编程的单片机在实验板(目标板)上,不用拆下来用编程器进行编程,只需利用ISP编程接口,通过下载线就可把程序代码下载到单片机内部,ISP技术是对传统编程技术的一大革新。通过ISP技术,我们在烧写程序的时候就不用频繁拔插芯片,只要鼠标点击即可把程序写入单片机,彻底告别以前那样用编程器反复烧写拨插芯片的烦
[单片机]
单片机<font color='red'>ISP</font>编程器使用
N76E003 串口ISP如何使用
1.所需硬件, N76E003开发板,USB2TTL串口线,NU-LINK烧录器 2.所需软件。官网ISP源码。对应的工程是如图所示工程。 https://github.com/OpenNuvoton/N76E003-BSP 3.和普通的工程一样,使用NU-LINK将工程烧录进IC就行。 4.将串口线连接到UART0接口。P0.6和P0.7 5.打开ISP程序。如下 1.选择UART,2.选择对应串口号,3.选择APROM。4.选择dataflash(如果没有设计这部分就不选)5.设置setting(注意根据情况设置开门狗。默认烧ISP程序后是开了的。)6.勾选programming复选框。根据自己的情况勾选就行。7.star
[单片机]
N76E003 串口<font color='red'>ISP</font>如何使用
基于MTV412微控制器1对8的ISP系统
引 言 随着微控制器应用领域的不断扩展和深入,越来越多种类的微控制器具有ISP(In System Programming,在系统编程)功能。使用ISP可以使工厂在产品设计、制造过程中不必把微控制器从目标板中拔出,通过I2C实现在线体上程序升级。目前,在国内一线工厂,主设备(上位机)一般都用PC,这样不仅浪费资源,而且灵活性较差;同时由于在线体上只能对单个从设备进行程序更新,严重影响了工厂的生产效率。为此,本文设计了一种基于MTV412微控制器的1对8的ISP系统,主设备采用Myson公司的MTV412,可以同时对8台从设备进行在线程序更新。 目前,51内核的微控制器ISP模式一般分为两大类:一类是使用JTAG协议的ISP模式
[工业控制]
如何编写STC单片机的ISP协议
STC单片机包含两个Flash块,在一块Flash中运行的程序可对另一块Flash进行擦除和重新编程.一般都将ISP程序存放在容量较小的一块Flash中(Block1),而将用户代码存放在容量较大的一块Flash中(Block0).Block1中的ISP程序对Block0中的用户代码进行擦除和重新编程. 在做STC单片机解密或是使用的朋友都知道,在STC单片机的程序存储区后,还有一段大约3K的代码,这段代码就是STC单片机的ISP程序,在STC单片机的数据手册里有关于对于ISP的生机资料,既然这段代码是可以升级的,那么我们就可以肯定这个区域是可以改写的,呵呵,这些涉及到了对STC单片机软解密的技术,我不多提了,大家可以动用自己
[单片机]
如何编写STC单片机的<font color='red'>ISP</font>协议
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved