野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11615|回复: 3

I2C历程代码问题

[复制链接]
发表于 2015-8-27 13:57:40 | 显示全部楼层 |阅读模式
学习STM32 I2C模块时候,发现问题,做了以下测试,首先擦除EEPROM全部写零,并按原历程验证一遍读写正确。然后设置EEP_Firstpage_1 = 0x04;从地址4开始从0到6写7个数进去,读的时候从EEP_Firstpage = 0开始读整片EEPROM,通过串口助手看结果,在分好页的情况应该是第一页 00 00 00 00 00 01 02 03  第二页是04 05 06 00 00 00 00 00 第三页00。。。现测试出来如下图,第一页直接是04 05 06 00 00 01 02 03,也就是没分到下一页。火哥这边页没有分好是吧???
QQ图片20150827125301.jpg
QQ图片20150827125301.jpg
回复

使用道具 举报

发表于 2015-8-27 14:18:51 | 显示全部楼层
写入的时候必须按页写入数据,不能直接控制地址4开始写入吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-8-27 14:41:02 | 显示全部楼层
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;
。。。
这个函数就是要实现分情况处理的呀,下面也根据不同的条件做了判断,就是没写到位,还有bug
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-8-27 14:45:12 | 显示全部楼层
flyleaf 发表于 2015-8-27 14:18
写入的时候必须按页写入数据,不能直接控制地址4开始写入吧


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;
。。。
这个函数就是要实现分情况处理的呀,下面也根据不同的条件做了判断,就是没写到位,还有bug
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-22 13:29 , Processed in 0.046013 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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