野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 21101|回复: 2

STM32 I2C里面的I2C_EE_BufferWrite函数

[复制链接]
发表于 2021-8-5 22:13:21 | 显示全部楼层 |阅读模式
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;
          /*如果剩余可以写的字节数 >= 写入的字节数*/
          if(count >= NumByteToWrite)
          {
                  I2C_EE_PageWrite(pBuffer, WriteAddr, count);
                I2C_EE_WaitEepromStandbyState();
        }
        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();
                }
        }
}

回复

使用道具 举报

 楼主| 发表于 2021-8-6 16:55:08 | 显示全部楼层
我觉得教程里面的那个函数比较长,参考原来的修改一下好像更简洁一点
回复 支持 反对

使用道具 举报

发表于 2021-9-30 14:15:48 | 显示全部楼层
多多分享,多多益善
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-28 04:46 , Processed in 0.034255 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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