找回密码
 立即注册

QQ登录

只需一步,快速开始

打印 上一主题 下一主题
开启左侧

[M051] 求助关于页写at24c02的问题,只能写入6个字节,7与8字节写...

[复制链接]
跳转到指定楼层
楼主
jyj_big 发表于 2014-3-14 13:40:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
只能写入6个字节,7与8字节写不进
uint32_t EEPROM_PageWrite(uint8_t u8Addr, uint8_t *pu8Buf)
{
    int32_t i32Err;
    int32_t i,k;
  k=0;
    do
    {
    k++;
        i32Err = 0;
        /* Send start */
        _I2C_START(I2C0);
        _I2C_WAIT_READY(I2C0);
        /* Send control byte */
        _I2C_WRITE(I2C0, EEPROM_WRITE_ADDR);
        _I2C_WAIT_READY(I2C0);
        if(I2C0->I2CSTATUS == 0x18)
        {
            {
                /* ACK */
   
                /* Send low address */
                _I2C_WRITE(I2C0, u8Addr); //address
                _I2C_WAIT_READY(I2C0);
                if(I2C0->I2CSTATUS == 0x28)
                {
                    /* ACK */
        
                    for(i=0;i<8;i++)
                    {
                        /* Send data */
            if(I2C0->I2CSTATUS == 0x28)
            {
             _I2C_WRITE(I2C0, pu8Buf[i]); // data
             _I2C_WAIT_READY(I2C0);
             if(I2C0->I2CSTATUS == 0x30)
             {
               /* NACK */
     
               /* Send data error */
               i32Err = 3;
             }
            }
            else i32Err = 1;
                    }
          if(I2C0->I2CSTATUS == 0x28)
          {
            /* ACK */
            /* Send stop */
            _I2C_STOP(I2C0);
          }
          else
          {
           /* NACK */
           /* Send data error */
           i32Err = 4;
          }
                }
                else
                {
                    /* NACK */
               
                    /* Send low address error */
                    i32Err = 2;
                }
            }
        }
        else
        {
            /* NACK */   
        
            /* Send control error */
            i32Err = 1;
        }
        if(i32Err)
        {
            /* Send stop */
            _I2C_STOP(I2C0);
    }
        Delay(200);
    }while(i32Err&&(k<4));
  return(i32Err);
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 顶 踩
回复

使用道具 举报

沙发
Angus 发表于 2015-5-11 11:19:33 | 只看该作者
这样的问题请与代理商的FAE或芯唐的FAE联系,  或上传整个工程并说明用的EEPROM的厂商和型号, 我们测试一下找到问题之所在.
回复 支持 反对

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

新唐MCU