您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > NXP-ARM-Context-M0-内部Flash用作EEPROM使用详解
ContextM0内部Flash用作EEPROM使用详解1.LPC1114x的Flash简介LPC1114x的Flash存储器系统包含32kBFlash器件的8个扇区。Flash存储器从地址0开始并向上增加。Flashboot装载程序同时提供片内Flash存储器的ISP和IAP编程接口。IAP、ISP和RealMonitor程序都位于boot扇区。boot占有的Flash存储器扇区不能用来存放用户数据。LPC1114x系列提供在在应用中编程IAP,最终用户代码直接执行在应用编程(IAP)对片内Flash存储器进行擦除和编程操作。Falsh可以擦写10000次,512字节行编程时间为1ms。单扇区或整片擦除时间为400ms。有些IAP和ISP命令以“扇区”为单位进行操作,同时还指定扇区号。下面列出了LPC111x系列ARM的扇区号和存储器地址之间的对应关系。LPC111x系列ARM器件的扇区扇区号扇区大小(KB)地址范围040x00000000–0x00000FFF140x00001000–0x00001FFF240x00002000–0x00002FFF340x00003000–0x00003FFF440x00004000–0x00004FFF540x00005000–0x00005FFF640x00006000–0x00006FFF740x00007000–0x00007FFF2.向Flash中写数据Flash必须遵循选择扇区,擦除,选择扇区,写的过程,具体到程序的编写,必须先后有下面的代码:zyIrqDisable();/*在IAP操作前必须关闭所有中断*/ucErr=parIdRead();/*读器件ID*/ucErr=codeIdBoot();/*读Boot版本号*/ucErr=sectorPrepare(1,1);/*准备扇区1*/ucErr=sectorErase(1,1);/*擦除扇区1*/ucErr=blankChk(1,1);/*查空扇区1*/ucErr=sectorPrepare(1,1);/*选择扇区1*/ucErr=ramCopy(0x00001000,(uint32)GulData,512);/*写数据到扇区1*/ucErr=dataCompare(0x00001000,(uint32)GulData,512);/*比较数据*/zyIrqEnable();应用的时候需要注意下面几点:1)如果写之前没有选择扇区,是不能正确写入的。2)如果写之前没有擦除,写入是不正确的。3)最少写512字节,写入的字节数应当为512或1024或4096或8192.4)Flash在擦写时不能访问,这也是IAP是要关闭中断的原因。关中断可以用下面的语句来实现:__asm{MSRCPSR_c,#0xdf},与此对应,开中断可以下面的语句:__asm{MSRCPSR_c,#0x5f}。3.从Flash中读数据从Flash中读数据比较简单,可以定义一个指针变量,该指针变量指向特定的Flash地址,例如可以写成下面的样子:uint32i;uint32*p;p=(uint32*)0x00001000;for(i=0;i400;i++){flashdataread(*(p));p+=4;}但必须注意的是M0数据是按4字节方式存储,所以指针每次加4。
本文标题:NXP-ARM-Context-M0-内部Flash用作EEPROM使用详解
链接地址:https://www.777doc.com/doc-4568321 .html