OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 10277|回复: 14

IIC的EEPPROM写单字节为什么要延时5ms以上才能连续写

[复制链接]

6

主题

15

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
212
金钱
212
注册时间
2015-12-8
在线时间
73 小时
发表于 2018-2-7 13:31:17 | 显示全部楼层 |阅读模式
10金钱
void AT24CXX_WriteOneByte(u16 WriteAddr,u8 DataToWrite)
{                                
    IIC_Start();  
if(EE_TYPE>AT24C16)
{
  IIC_Send_Byte(0XA0);     //發送寫命令
  IIC_Wait_Ack();
  IIC_Send_Byte(WriteAddr>>8);//發送高地址
  }else
{
  IIC_Send_Byte(0XA0+((WriteAddr/256)<<1));   //發送器地址0XA0,寫數據
}  
IIC_Wait_Ack();   
    IIC_Send_Byte(WriteAddr%256);   //發送低地址
IIC_Wait_Ack();                    
IIC_Send_Byte(DataToWrite);     //發送Data         
IIC_Wait_Ack();            
    IIC_Stop();                   //產生一個停止指令
delay_ms(10);  
}


我用24LC256读写也是一样,是什么原因呢,求解答

最佳答案

查看完整内容[请看2#楼]

这是有依据的, AT24CXX系列的EEPROM芯片的数据手册这样讲: (写循环周期,至少5ms) (届时,EEPROM将会进入内部向非易事存储器写入数据的写周期Twr,这期间所有信号输入都是无效的,EEPROM芯片不会响应它。) (为了能够在写入周期结束后立即开始接下来的写入,可以在发送完写入数据之后,持续进行查询,一旦写入周期结束,EEPROM将会响应。) 顺便说一下: (如果采用连续写入方式,可以在所有数据都写入 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

462

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2017-12-15
在线时间
111 小时
发表于 2018-2-7 13:31:18 | 显示全部楼层
这是有依据的,
AT24CXX系列的EEPROM芯片的数据手册这样讲:
11.png
(写循环周期,至少5ms)

TIM截图20180207143449.png
(届时,EEPROM将会进入内部向非易事存储器写入数据的写周期Twr,这期间所有信号输入都是无效的,EEPROM芯片不会响应它。)

TIM截图20180207144028.png
(为了能够在写入周期结束后立即开始接下来的写入,可以在发送完写入数据之后,持续进行查询,一旦写入周期结束,EEPROM将会响应。)

顺便说一下:
TIM截图20180207144345.png
(如果采用连续写入方式,可以在所有数据都写入完毕后再进入一个写入周期,并非每个字节都需要进行等待。)


回复

使用道具 举报

6

主题

15

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
212
金钱
212
注册时间
2015-12-8
在线时间
73 小时
 楼主| 发表于 2018-2-7 13:32:44 | 显示全部楼层
原子的IIC例程中延时是10ms,我测试24lc256需要至少延时5ms才能连续写
回复

使用道具 举报

2

主题

685

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3448
金钱
3448
注册时间
2017-7-4
在线时间
869 小时
发表于 2018-2-7 13:45:14 | 显示全部楼层
eeprom的特性,写速度太慢,必须等待写完再写下一页;换成同类型的FRAM则不用(程序完全兼容,不需延时),如fm24cl16.
回复

使用道具 举报

33

主题

215

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2035
金钱
2035
注册时间
2017-12-11
在线时间
454 小时
发表于 2018-2-7 15:24:23 | 显示全部楼层
3楼说的有理。
我现在使用25lc512。
它是spi接口的eeprom,可以使用stm32的硬件spi(绕开stm32 i2c硬件接口),非常爽。
回复

使用道具 举报

6

主题

15

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
212
金钱
212
注册时间
2015-12-8
在线时间
73 小时
 楼主| 发表于 2018-2-7 15:26:24 | 显示全部楼层
a496298685 发表于 2018-2-7 14:45
这是有依据的,
AT24CXX系列的EEPROM芯片的数据手册这样讲:

大神,请问程序怎么操作才能提高写入速度呢,只能等待吗?
是不是按页写入能快一些?
回复

使用道具 举报

6

主题

15

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
212
金钱
212
注册时间
2015-12-8
在线时间
73 小时
 楼主| 发表于 2018-2-7 15:34:13 | 显示全部楼层
bootblack 发表于 2018-2-7 15:24
3楼说的有理。
我现在使用25lc512。
它是spi接口的eeprom,可以使用stm32的硬件spi(绕开stm32 i2c硬件接 ...

SPI的确实爽,我这个电路只能用IIC的
回复

使用道具 举报

12

主题

143

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2660
金钱
2660
注册时间
2017-9-8
在线时间
465 小时
发表于 2018-2-7 15:39:28 | 显示全部楼层
hutudawang 发表于 2018-2-7 15:34
SPI的确实爽,我这个电路只能用IIC的

用页写会快一点,如果数据量大的话,时间也不短,因为每页写完也要有延时的
回复

使用道具 举报

6

主题

462

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2017-12-15
在线时间
111 小时
发表于 2018-2-7 16:04:13 | 显示全部楼层
hutudawang 发表于 2018-2-7 15:26
大神,请问程序怎么操作才能提高写入速度呢,只能等待吗?
是不是按页写入能快一些?

对的对的,按页写,只需要在每个page写入完毕之后等待一下,不需要每个byte都等待,速度大大提升。


当然了,每次写入,肯定最后要等待一下,这个是逃不掉的。
回复

使用道具 举报

6

主题

15

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
212
金钱
212
注册时间
2015-12-8
在线时间
73 小时
 楼主| 发表于 2018-2-7 17:34:17 | 显示全部楼层
a496298685 发表于 2018-2-7 16:04
对的对的,按页写,只需要在每个page写入完毕之后等待一下,不需要每个byte都等待,速度大大提升。

确实是,我试了下,按页写入,一次写64字节,delay-5ms就可以全部写进去了
回复

使用道具 举报

6

主题

462

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2017-12-15
在线时间
111 小时
发表于 2018-2-7 17:55:07 | 显示全部楼层
hutudawang 发表于 2018-2-7 17:34
确实是,我试了下,按页写入,一次写64字节,delay-5ms就可以全部写进去了

(告诉你个秘密,其实在我告诉你之前,我根本没有试过这个,至少刚才顺便看了眼datasheet发现的玄机。我以前也深深地对它的缓慢速度感到MMP。既然你尝试过了,那就算是个前车之鉴了。)
回复

使用道具 举报

2

主题

685

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3448
金钱
3448
注册时间
2017-7-4
在线时间
869 小时
发表于 2018-2-7 18:20:40 | 显示全部楼层
hutudawang 发表于 2018-2-7 15:34
SPI的确实爽,我这个电路只能用IIC的

跟spi没有半毛钱关系。瓶颈在于eeprom的写特性,它的写速度太慢了,连i2c这么慢的总线都响应不过来,用spi、usb。。。甚至更快的总线照样要等!
回复

使用道具 举报

6

主题

315

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1669
金钱
1669
注册时间
2018-1-29
在线时间
160 小时
发表于 2018-2-8 07:25:30 | 显示全部楼层
4楼正解。实际开发中基本没人用EEPROM了,都用内置FLASH的部分扇区替代了。
回复

使用道具 举报

6

主题

15

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
212
金钱
212
注册时间
2015-12-8
在线时间
73 小时
 楼主| 发表于 2018-2-8 11:42:44 | 显示全部楼层
Acuity 发表于 2018-2-7 18:20
跟spi没有半毛钱关系。瓶颈在于eeprom的写特性,它的写速度太慢了,连i2c这么慢的总线都响应不过来,用sp ...

这样呀
回复

使用道具 举报

32

主题

230

帖子

0

精华

高级会员

Rank: 4

积分
508
金钱
508
注册时间
2016-4-14
在线时间
113 小时
发表于 2019-11-21 10:00:01 | 显示全部楼层
那我要是IIC的其他设备,不是EEPROM的话。这个5ms可以去掉吧。。。
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-25 21:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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