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

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管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版