你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

关于存储芯片24LC024这种读写问题

[复制链接]
yllqabz 提问时间:2019-7-26 16:28 /
通过STM32F103的I2C读写24LC024,现在问题是一次读写16个及以内的数据完全正常 ,超过16个以后读回来的地址上的数不对,想问问读写这种芯片是不是超过16个字节需要分页操作之类的问题?

#define         ADDR_24LC02_Write                 0xA0
#define         ADDR_24LC02_Read                 0xA1
#define         BufferSize                                 20         


if(HAL_I2C_Mem_Write(&hi2c2, ADDR_24LC02_Write, 0, I2C_MEMADD_SIZE_8BIT, WriteBuffer, BufferSize, 0x10) == HAL_OK)
{
   HAL_Delay(5);
   memcpy(&D_I2c_pre, &D_I2c, BufferSize);
}

收藏 评论6 发布时间:2019-7-26 16:28

举报

6个回答
废鱼 回答时间:2019-7-26 16:52:30
读取不需要页控制,可以直接读取。写入时,当地址超出当前页时,需要自己重新开始写操作。一次只能写入一页的数据。
yllqabz 回答时间:2019-7-26 17:05:54
安 发表于 2019-7-26 16:52
读取不需要页控制,可以直接读取。写入时,当地址超出当前页时,需要自己重新开始写操作。一次只能写入一页 ...

意思是写的时候写16个数据后跳16个地址再写下16个数据,读的时候一次性读32个数据就可以了?
废鱼 回答时间:2019-7-26 17:09:50
读取的时候,只要不跨片就可以。E2有页、片两个参数。存储空间小的一般只有页,当空间变大的时候,会出现片的参数。这个时候只要在同一片内读取是不用考虑换页的操作。
yllqabz 回答时间:2019-7-26 17:16:19
安 发表于 2019-7-26 17:09
读取的时候,只要不跨片就可以。E2有页、片两个参数。存储空间小的一般只有页,当空间变大的时候,会出现片 ...

我试了一下,现在写16个数据以后换页再写不会出现覆盖数据现象。但是一次读取32个数据好像只读出了前16个,后16个没有读到!

HAL_I2C_Mem_Read(&hi2c2, ADDR_24LC02_Read, 0, I2C_MEMADD_SIZE_8BIT, ReadBuffer, 32, 0x10);
butterflyspring 回答时间:2019-7-26 17:31:39
是由EEPROM存贮结构决定的。一次写最多一页大小,并且页对齐。超过后由返回该页起始地址。详情内容可以参看该产品手册
yllqabz 回答时间:2019-7-26 17:47:59
butterflyspring 发表于 2019-7-26 17:31
是由EEPROM存贮结构决定的。一次写最多一页大小,并且页对齐。超过后由返回该页起始地址。详情内容可以参看 ...

现在是写没有问题了(不会将后面的数据写到前面地址上),但是读出现了问题!

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版