打印
[ZLG-MCU]

LPC901单片机FLASH读写

[复制链接]
1918|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
413460743q|  楼主 | 2009-9-16 09:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
读写LPC901单片机FLASH时出现了问题,先写28位,再读28位。
模仿使用手册上写的,出现了很多错误。在此请教一下?
程序如下:
#include <REG932.H>
#define uchar unsigned char
#define uint  unsigned int
//uint  ADDRESS[4]= {0x0000,0x0100,0x0200,0x0300}; //4页flash的首地址
uchar data[4][8]={{1,0,1,0,0,1,0,1},
                  {1,0,1,0,0,1,0,1},
                  {1,0,1,0,0,1,0,1},
                  {1,0,1,0,0,1,0,1}};   //定义28位探头地址数组,后四位不用
bit prog_fail;
void write (uchar address,uchar data[4][8])
void read(uchar address,uchar data[4][8])
//#define PAGESIZEW       128   //LPC901的一个Flash页为128字
//#define PAGESIZEB       256   //LPC901的一个Flash页为256字节

void PGM_EL (uchar el_addr , uchar el_data )
  {
           #define CONF  0x6C       // 访问Flash 单元
           FMADRL = el_addr ;                      // 将单元地址写入地址寄存器
           FMCON = CONF;                   // 装载命令,清除页寄存器
           FMDATA = el_data;              // 写入数据并起动操作周期
           Fm_stat = FMCON;              // 读结果状态
           if ((Fm_stat & 0x0F)!=0 )
            prog_fail =1;
      else
         prog_fail = 0;
          // return (prog_fail);
}

uchar read_flash (uchar el_addr)
{     
   #define CONF   0x6C            // 访问Flash 单元
   uchar l_data;          // 读出的单元数据存放的位置
   FMADRL= el_addr;            // 将单元地址写入地址寄存器
   FMCON    = CONF;              // 写入访问Flash 单元的命令
   el_data = FMDATA;                 // 读单元数据
   return ( el_data ) ;
}

void main ( )
{
   write (uchar 0x0000,uchar data[4][8]);
   read(uchar 0x0000,uchar data[4][8])   
}

void write (uchar address,uchar data[4][8])   
{   
  uint i;
  uchar j=0,k=0;
  for(i=0;i<28;i++)
  {
    PGM_EL(address+i,data[j][k]);
    k++;
    if(k>=7)
      {
      k = 0;
      j++;
      }
  }
}
void read(uchar address,uchar data[4][8]) //此函数是将flash的数读出放入数组
{
     uint i;
     uchar j=0,k=0;
     for(i=0;i<28;i++)
     {
       data[j][k]=read_flash(address+i);
       k++;
      if(k >=7) {j++;k =0;}
     }   
}

相关帖子

沙发
linhai1986| | 2009-9-16 12:50 | 只看该作者
帮顶

使用特权

评论回复
板凳
xiaoxin1986| | 2009-9-19 14:19 | 只看该作者
路过

使用特权

评论回复
地板
yjsstk| | 2009-9-25 08:51 | 只看该作者
flash是先擦除后操作。
你好像还没有做擦除操作呢

使用特权

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

本版积分规则

1

主题

1

帖子

0

粉丝