搜索
bottom↓
回复: 8

C8051F330内部flash擦写问题

[复制链接]

出0入0汤圆

发表于 2009-9-25 21:45:44 | 显示全部楼层 |阅读模式
F330是8K的内部flash程序存储区,以512字节为单位扇区,可在系统以扇区单位编写flash,地址从0X1E00-0X1FFF的部分由公司保留,因此我选用0X1C00-0X1DFF这512字节作为我的标定数据存储区,但是发现读函数读出来的全是1,更写函数没有起作用似的,如果写函数成功,应该读出来的是0才对!代码如下:

定义了一个全局变量用来提供写入数据或保存读出数据
unsigned char Data;

//读flash
void Flash_Read(void)
{
        uchar i;
        uchar code *P_Read;                        //指向程序储存空间的地址指针
        P_Read=0x1C00;                        //flash段的首地址
        Data=*P_Read;
}

//写flash
void Flash_Write(void)
{
        uchar xdata *P_Write;                           //程序存储器空间的指针(Flash),指向待写地址
        uchar *P_Data;                        //一般指针
       
           //关中断
        EA=0;
       
           //擦出待写扇区
        PSCTL&=0X02;                        //erase enable
        PSCTL&=0X01;                        //write enable
        FLKEY=0XA5;                        //写入关键码
        FLKEY=0XF1;
        P_Write=0x1C00;                        //指向待擦出Flash扇区的任一地址
        *P_Write=0;                        //向该地址flash写入任意数据,以擦除该Flash扇区
        PSCTL&=~0X02;                        //erase disable
        PSCTL&=~0X01;                        //write disable
        //写入
        PSCTL&=0X01;                        //write enable
        FLKEY=0XA5;
        FLKEY=0XF1;
        P_Data=&Data;                        //记录数据首地址
        *P_Write=*P_Data;                        //写入flash
        *P_Write=0x00;
        PSCTL&=~0X01;                        //write disable
        //开中断
        EA=1;               
}



这段代码的目的,read函数把0x1c00开始的一个字节读到Data中,write函数把Data中的一个字节数据写到0x1c00开始的flash中,

但测试read能读出数据,write不能完成写功能.请用过C8051F的朋友帮忙看看问题在什么地方.

阿莫论坛20周年了!感谢大家的支持与爱护!!

如果想吃一顿饺子,就得从冰箱里取出肉,剁馅儿,倒面粉、揉面、醒面,擀成皮儿,下锅……
一整个繁琐流程,就是为了出锅时那一嘴滚烫流油的热饺子。

如果这个过程,禁不住饿,零食下肚了,饺子出锅时也就不香了……《非诚勿扰3》

出0入0汤圆

发表于 2009-9-25 23:43:44 | 显示全部楼层
看看这个文件吧,从新华龙网站上下载的,我在020里用过,读写都没问题,写前记得要擦除先。

点击此处下载 ourdev_485522.pdf(文件大小:1.32M) (原文件名:an009.pdf)

出0入0汤圆

 楼主| 发表于 2009-9-26 11:10:20 | 显示全部楼层
感谢楼上的解答,发现问题了,我用的0x1C00-0x1DFF这段空间为加密锁定页,不能进行flash操作

出0入0汤圆

发表于 2012-12-20 18:46:55 | 显示全部楼层
路过,学习了,我也遇到了类似的问题

出0入0汤圆

发表于 2013-1-31 11:04:23 | 显示全部楼层
收了!!呵呵呵 有空学习学习!!

出0入0汤圆

发表于 2013-4-8 11:36:03 | 显示全部楼层
bobojust 发表于 2009-9-26 11:10
感谢楼上的解答,发现问题了,我用的0x1C00-0x1DFF这段空间为加密锁定页,不能进行flash操作 ...

加密锁定页?什么意思?
另外想问:片内flash用来存储程序和数据,我怎么才知道我写入的数据和程序保存的地址不重复呢?

出0入0汤圆

发表于 2013-10-16 14:05:10 | 显示全部楼层
我来看看新华龙的大码先!

出0入0汤圆

发表于 2017-6-18 21:52:50 | 显示全部楼层
z_zt 发表于 2009-9-25 23:43
看看这个文件吧,从新华龙网站上下载的,我在020里用过,读写都没问题,写前记得要擦除先。

点击此处下载  ...

多谢分享~~~

出0入0汤圆

发表于 2017-6-25 09:03:15 | 显示全部楼层
F330需要打开VDD monitor吧,我现在参考的是http://blog.csdn.net/lizhoubob/article/details/5862929 代码可以用
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 00:21

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表