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

M24C16 只能读写最后一次的数据

[复制链接]
广告 提问时间:2023-10-7 17:41 / 未解决

我的现象是,每次写完一组数据(16个字节),然后再读出来,发现是正确的。

但是如果再读取上一次或者上几次读写的数据,也就是更改一下EEPROM的地址,读出来的数据和最新的一次是一样的。

我不清楚是我哪里操作错了。

图片.png

这个是我写的与EEPROM通讯的函数,第一个给slave是0x50,reg_addr随便取,比如是0xA0,*pdata是我要写的数据,data_size是16.

收藏 评论12 发布时间:2023-10-7 17:41

举报

12个回答
butterflyspring 回答时间:2023-10-7 17:47:58
从代码上看不出什么异常来,通常都是通过逻辑分析仪或者示波器波形去看。
另外注意EEPROM的地址需要对齐,也就是page size 的倍数。
yr 回答时间:2023-10-7 22:07:01

EEPROM 通常只备有page-size的buffer,可以一次接收一页数据在buffer内,然后就要花几十毫秒写入数据,此时应该是不响应总线,如果连续写入时间间隔太短会出错。建议先测试一下,每页之间插入足够delay,看看是否正确。

广告 回答时间:2023-10-8 10:56:18

yr 发表于 2023-10-7 22:07
EEPROM 通常只备有page-size的buffer,可以一次接收一页数据在buffer内,然后就要花几十毫秒写入数据, ...

[md]您好,我现在似乎觉得是EEPROM选用的地址不对,因为我不论读那个地址的值,读上来全是一样的。

手册中的A10,A9,A8是什么我不太理解。能否给出解答。

图片.png

yr 回答时间:2023-10-8 12:26:05

2kbyte 需要11位地址,把高三位地址拆分放到device select中,也就是说高3位控制哪个256个字节,低8位地址在address select中给出,测试只要保证同一个地址数据是否正确,其中没写一个page,需要5ms。根据手册,device地址高4位是0xA,最低位必须为0,A10-A8可以0-7

butterflyspring 回答时间:2023-10-8 14:53:39
通常发送函数应该根据所选的型号,拆分高位地址到设备地址中去。
当然,如果所选型号地址范围是8位,或16位的话,就不需要拆分了。
广告 回答时间:2023-10-8 15:31:17

butterflyspring 发表于 2023-10-8 14:53
通常发送函数应该根据所选的型号,拆分高位地址到设备地址中去。
当然,如果所选型号地址范围是8位,或16位 ...

您好,我现在在Keil调试模式下,在写入EEPROM操作后,进行了读EEPROM操作。

发现buffer里面的值是正确的,但是断电或者退出调试模式再次读后发现,读出来的值全是0xFF.

这是为何?

butterflyspring 回答时间:2023-10-8 17:39:49
广告 发表于 2023-10-8 15:31
[md]您好,我现在在Keil调试模式下,在写入EEPROM操作后,进行了读EEPROM操作。

发现buffer里面的值是正 ...

读EEPROM 有特定时序的,需要先DUMMY WRITE把地址写到总线上,然后再读取。
这一点在eeprom 的手册上有个时序图。

如果没按照这个时序,断电后再去读,地址很可能不一样,所以内容会为空。
广告 回答时间:2023-10-9 10:08:34

yr 发表于 2023-10-8 12:26
2kbyte 需要11位地址,把高三位地址拆分放到device select中,也就是说高3位控制哪个256个字节,低8位 ...

[md]感谢回复,器件地址中A10,A9,A8其实是在选“块”,他应该是8*256这样组成的。

其实我只是需要改变后面的address就行了。但是似乎我怎么改变我的address,读出来的结果都是相同的。

广告 回答时间:2023-10-9 11:03:32

广告 发表于 2023-10-8 15:31
您好,我现在在Keil调试模式下,在写入EEPROM操作后,进行了读EEPROM操作。</p>
<p>发现buffer里面的值是正 ...

[md]请问这个是NACK了嘛,每个byte收完都拉高了一下。

图片.png

图片.png
图片.png
图片.png
图片.png
butterflyspring 回答时间:2023-10-9 14:51:51
这看起来,第9个脉冲的数据不是标准操作下的低电平,所以有问题,要调整一下。

广告 回答时间:2023-10-9 15:00:44

butterflyspring 发表于 2023-10-9 14:51
这看起来,第9个脉冲的数据不是标准操作下的低电平,所以有问题,要调整一下。</p>
<p>...

好的我去调查一下,但是因为我是软件部门,这个问题是不是需要交给硬件来调查。

确认一下。

butterflyspring 回答时间:2023-10-9 15:31:51
广告 发表于 2023-10-9 15:00
[md]好的我去调查一下,但是因为我是软件部门,这个问题是不是需要交给硬件来调查。

确认一下。

在第八个CLK后,SDA线应改转换为输入口,然后在第九个CLK去读ACK 信号。
先检查一下软件吧.

所属标签

相似问题

官网相关资源

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