打印

I2C的程序中,I2C_EE_BufferWrite函数里面Addr这个变量是用来干啥的?

[复制链接]
532|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
王将|  楼主 | 2018-6-27 15:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

void I2C_EE_BufferWrite(u8* pBuffer, u8 WriteAddr, u16 NumByteToWrite)

{

  u8 NumOfPage = 0, NumOfSingle = 0, Addr = 0, count = 0;



  Addr = WriteAddr % I2C_PageSize;

  count = I2C_PageSize - Addr;

  NumOfPage =  NumByteToWrite / I2C_PageSize;

  NumOfSingle = NumByteToWrite % I2C_PageSize;



  /* If WriteAddr is I2C_PageSize aligned  */

  if(Addr == 0)

  {

    /* If NumByteToWrite < I2C_PageSize */

    if(NumOfPage == 0)

    {

      I2C_EE_PageWrite(pBuffer, WriteAddr, NumOfSingle);

      I2C_EE_WaitEepromStandbyState();

    }

    /* If NumByteToWrite > I2C_PageSize */

    else  

    {

      while(NumOfPage--)

      {

        I2C_EE_PageWrite(pBuffer, WriteAddr, I2C_PageSize);

        I2C_EE_WaitEepromStandbyState();

        WriteAddr +=  I2C_PageSize;

        pBuffer += I2C_PageSize;

      }



      if(NumOfSingle!=0)

      {

        I2C_EE_PageWrite(pBuffer, WriteAddr, NumOfSingle);

        I2C_EE_WaitEepromStandbyState();

      }

    }

  }

  /* If WriteAddr is not I2C_PageSize aligned  */

  else

  {

    /* If NumByteToWrite < I2C_PageSize */

    if(NumOfPage== 0)

    {

      I2C_EE_PageWrite(pBuffer, WriteAddr, NumOfSingle);

      I2C_EE_WaitEepromStandbyState();

    }

    /* If NumByteToWrite > I2C_PageSize */

    else

    {

      NumByteToWrite -= count;

      NumOfPage =  NumByteToWrite / I2C_PageSize;

      NumOfSingle = NumByteToWrite % I2C_PageSize;   

      

      if(count != 0)

      {  

        I2C_EE_PageWrite(pBuffer, WriteAddr, count);

        I2C_EE_WaitEepromStandbyState();

        WriteAddr += count;

        pBuffer += count;

      }

      

      while(NumOfPage--)

      {

        I2C_EE_PageWrite(pBuffer, WriteAddr, I2C_PageSize);

        I2C_EE_WaitEepromStandbyState();

        WriteAddr +=  I2C_PageSize;

        pBuffer += I2C_PageSize;  

      }

      if(NumOfSingle != 0)

      {

        I2C_EE_PageWrite(pBuffer, WriteAddr, NumOfSingle);

        I2C_EE_WaitEepromStandbyState();

      }

    }

  }  

}



直接上程序吧



使用特权

评论回复

相关帖子

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

本版积分规则

419

主题

419

帖子

0

粉丝