找回密码
 立即注册
查看: 4228|回复: 13

关于EEPROM存储地址设置到最后0.5K时,写入及读出错误

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:484
  • 最近打卡:2025-05-01 08:52:01
已绑定手机

23

主题

589

回帖

2813

积分

金牌会员

积分
2813
发表于 2023-4-29 09:28:32 | 显示全部楼层 |阅读模式
我在往EEPROM里面写入及读取数据时,无论几个数据,只要是地址从0x0000设置都可以;但是当我需要把EEPROM存储地址设置到0XFE01、0xFE00、0XFDFF、0XFDFD(最后0.5K)时,写入及读出都会错误。真有点不知所措了,在此贴上读、写代码,恳请大神们指点指点,感谢啦!

一、读取代码:

        //下面的 recv_buff为接收到的数据临时数组缓存、 recv_len为接收到的数据长度
        u16 xdata i = 2;                                                 //判断数据起始点
        u8 xdata j = 0;
        u8 w_r_flag = 1;                                                //读写标志

        u8 xdata data[ 9 ];                                             //各个数据临时缓存
        for ( j = 0; j < 8; j++ )                                       //判断第2~7个数据是否为0
        {
                if ( recv_buff[ i + j ] != 0 )
                {
                        /*若接收到的数据域里面有不为0的数据,就判定为此时为写入*/
                        w_r_flag = 1;                                     //写入指令
                        break;
                }else   w_r_flag = 0;                                   //读取指令
        }
        if ( w_r_flag == 0 )                                             //获取接收到的信息
        {
                IapReadData(0xFE00, data, 9);                     //从eeprom里面的地址0xFE00开始连读
                recv_buff[ i++ ] = data[ 0 ];                        //获取并存入缓存
                recv_buff[ i++ ] = data[ 1 ];                        //获取并存入缓存
                recv_buff[ i++ ] = data[ 2 ];                         //获取并存入缓存
                recv_buff[ i++ ] = data[ 3 ];                         //获取并存入缓存
                recv_buff[ i++ ] = data[ 4 ];                        //获取并存入缓存
                recv_buff[ i++ ] = data[ 5 ];                        //获取并存入缓存
                recv_buff[ i++ ] = data[ 6 ];                        //获取并存入缓存
                recv_buff[ i++ ] = data[ 7 ];                        //获取并存入缓存
                recv_buff[ i++ ] = data[ 8 ];                        //获取并存入缓存
               Transfer_Car_Uart_Send( recv_buff, i );          //发送函数(已测试通过),此处原型略;目的把从eeprom连读的数据返回。

        }

二、写入代码:

        if ( w_r_flag == 1 )                                             //写入接收到的信息
        {
                data[ 0 ] = recv_buff[ 2 ];
                data[ 1 ] = recv_buff[ 3 ];
                data[ 2 ] = recv_buff[ 4 ];
                data[ 3 ] = recv_buff[ 5 ];
                data[ 4 ] = recv_buff[ 6 ];
                data[ 5 ] = recv_buff[ 7 ];
                data[ 6 ] = recv_buff[ 8 ];
                data[ 7 ] = recv_buff[ 9 ];
                data[ 8 ] = recv_buff[ 10 ];
                IapWriteData(0xFE00, data, 9);                    //把接收到的数据从地址0xFE00连写到EEPROM里面
                i = recv_len;
               Transfer_Car_Uart_Send( recv_buff, i );         //串口返回要写入的信息
        }


      


不停地学习
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:484
  • 最近打卡:2025-05-01 08:52:01
已绑定手机

23

主题

589

回帖

2813

积分

金牌会员

积分
2813
发表于 2023-4-29 09:39:13 | 显示全部楼层
写入后再次读出都是FF
不停地学习
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:484
  • 最近打卡:2025-05-01 08:52:01
已绑定手机

23

主题

589

回帖

2813

积分

金牌会员

积分
2813
发表于 2023-4-29 10:15:48 | 显示全部楼层
已经自行解决了,是地址不对,大意了
不停地学习
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:328
  • 最近打卡:2025-03-09 19:40:01

9

主题

328

回帖

4501

积分

荣誉版主

积分
4501
发表于 2023-4-29 10:24:24 | 显示全部楼层
读和写都是相对位置,只有movc是绝对地址
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2025-05-02 08:32:59

717

主题

1万

回帖

1万

积分

管理员

积分
15617
发表于 2023-4-29 11:37:20 | 显示全部楼层
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:484
  • 最近打卡:2025-05-01 08:52:01
已绑定手机

23

主题

589

回帖

2813

积分

金牌会员

积分
2813
发表于 2023-4-29 17:21:29 | 显示全部楼层
kk*** 发表于 2023-4-29 10:24
读和写都是相对位置,只有movc是绝对地址

感谢
不停地学习
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:484
  • 最近打卡:2025-05-01 08:52:01
已绑定手机

23

主题

589

回帖

2813

积分

金牌会员

积分
2813
发表于 2023-4-29 17:22:43 | 显示全部楼层
神*** 发表于 2023-4-29 11:37
后面大家还是用支持仿真的STC8/STC32来开发新产品

下一次就是改用8H8H64及32G来开发了!
不停地学习
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2025-05-02 08:32:59

717

主题

1万

回帖

1万

积分

管理员

积分
15617
发表于 2023-4-29 17:30:13 | 显示全部楼层
这样就可以共享我们 STC8H8K64U / STC32G12K128 实验箱 和 核心板 上大量正确的开源共享程序
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:484
  • 最近打卡:2025-05-01 08:52:01
已绑定手机

23

主题

589

回帖

2813

积分

金牌会员

积分
2813
发表于 2023-4-29 22:40:40 | 显示全部楼层
神*** 发表于 2023-4-29 17:30
这样就可以共享我们 STC8H8K64U / STC32G12K128 实验箱 和 核心板 上大量正确的开源共享程序 ...

嗯嗯,确实,我选择STC也是因为你们的示例程序及手册越来越丰富了,便于我们开发使用!最主要的还有你们的技术人员很给力,解答及支持很耐心、细致呀!!特别是梁工,感觉我从他那里受益匪浅!!感谢!!
不停地学习
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:11
  • 最近打卡:2025-04-25 07:43:18

8

主题

25

回帖

210

积分

中级会员

积分
210
发表于 2023-6-27 06:17:36 | 显示全部楼层
wenhuixuan 发表于 2023-4-29 10:15
已经自行解决了,是地址不对,大意了

我的情况和你一样,你最后设置地址是多少才正确?
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 13:14 , Processed in 0.159655 second(s), 112 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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