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

[复制链接]
641|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

粉丝
快速回复 在线客服 返回列表 返回顶部