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

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

[复制链接]
  • TA的每日心情
    无聊
    昨天 08:20
  • 签到天数: 139 天

    [LV.7]常住居民III

    17

    主题

    530

    回帖

    1237

    积分

    金牌会员

    积分
    1237
    发表于 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 );         //串口返回要写入的信息
            }


          


    不停地学习
    回复 送花

    使用道具 举报

  • TA的每日心情
    无聊
    昨天 08:20
  • 签到天数: 139 天

    [LV.7]常住居民III

    17

    主题

    530

    回帖

    1237

    积分

    金牌会员

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

    使用道具 举报

  • TA的每日心情
    无聊
    昨天 08:20
  • 签到天数: 139 天

    [LV.7]常住居民III

    17

    主题

    530

    回帖

    1237

    积分

    金牌会员

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

    使用道具 举报

  • TA的每日心情
    开心
    前天 10:21
  • 签到天数: 153 天

    [LV.7]常住居民III

    9

    主题

    305

    回帖

    3733

    积分

    荣誉版主

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

    使用道具 举报

    该用户从未签到

    550

    主题

    9328

    回帖

    1万

    积分

    管理员

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

    使用道具 举报

  • TA的每日心情
    无聊
    昨天 08:20
  • 签到天数: 139 天

    [LV.7]常住居民III

    17

    主题

    530

    回帖

    1237

    积分

    金牌会员

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

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

    使用道具 举报

  • TA的每日心情
    无聊
    昨天 08:20
  • 签到天数: 139 天

    [LV.7]常住居民III

    17

    主题

    530

    回帖

    1237

    积分

    金牌会员

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

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

    使用道具 举报

    该用户从未签到

    550

    主题

    9328

    回帖

    1万

    积分

    管理员

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

    使用道具 举报

  • TA的每日心情
    无聊
    昨天 08:20
  • 签到天数: 139 天

    [LV.7]常住居民III

    17

    主题

    530

    回帖

    1237

    积分

    金牌会员

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

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

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-13 20:31
  • 签到天数: 2 天

    [LV.1]初来乍到

    0

    主题

    9

    回帖

    60

    积分

    注册会员

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

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

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-6 00:48 , Processed in 0.069860 second(s), 67 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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