OpenEdv-开源电子网

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

求教一个关于EEPROM的问题

[复制链接]

12

主题

143

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2706
金钱
2706
注册时间
2017-9-8
在线时间
470 小时
发表于 2017-12-29 15:48:48 | 显示全部楼层 |阅读模式
5金钱
现需要将1400字节的数据从缓冲区写入EEPROM 24C64中,我想问问能不能直接连续写,不使用页写方式
附上修改的函数
[mw_shl_code=c,true]u8 I2C_Write(u8 addr,u8 reg,u8 len,u8 *buf)
{
u8 i;
MPU_IIC_Start();
MPU_IIC_Send_Byte((addr<<1)|0);       
if(MPU_IIC_Wait_Ack())       
{
MPU_IIC_Stop();       
return 1;       
}
MPU_IIC_Send_Byte(reg);
MPU_IIC_Wait_Ack();       
for(i=0;i<len;i++)
{
MPU_IIC_Send_Byte(buf);       
if(MPU_IIC_Wait_Ack())       
{
MPU_IIC_Stop();         
return 1;       
}       
}
MPU_IIC_Stop();         
return 0;       
}[/mw_shl_code]

最佳答案

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

1、这么大的数据,肯定页写啊,效率高嘛。EEPROM页写必须延时,主要是EEPROM写速度太慢了。如果需要经常读写,建议用同型号的FRAM,引脚和程序完全兼容,页写不需延时,速度杠杠的,而且写寿命长。 参考本人的源码,带页写。 2、模拟i2c不是慢不是慢不是慢!说慢的都是进误区多年了,只是占用cpu时间而已。 https://github.com/Prry/drivers-for-mcu
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

685

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3448
金钱
3448
注册时间
2017-7-4
在线时间
869 小时
发表于 2017-12-29 15:48:49 | 显示全部楼层
1、这么大的数据,肯定页写啊,效率高嘛。EEPROM页写必须延时,主要是EEPROM写速度太慢了。如果需要经常读写,建议用同型号的FRAM,引脚和程序完全兼容,页写不需延时,速度杠杠的,而且写寿命长。
参考本人的源码,带页写。
2、模拟i2c不是慢不是慢不是慢!说慢的都是进误区多年了,只是占用cpu时间而已。

https://github.com/Prry/drivers-for-mcu
回复

使用道具 举报

7

主题

247

帖子

0

精华

高级会员

Rank: 4

积分
745
金钱
745
注册时间
2016-1-20
在线时间
78 小时
发表于 2017-12-29 15:56:08 | 显示全部楼层
建议延时(4-6)毫秒,连续写可能24C64的速度跟不上导致出错,具体你可以在线仿真写一下试试。我手里现在的项目延时用的是5毫秒(24C16)。暂时没有什么异常。
回复

使用道具 举报

12

主题

143

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2706
金钱
2706
注册时间
2017-9-8
在线时间
470 小时
 楼主| 发表于 2017-12-29 16:03:25 | 显示全部楼层
footprint 发表于 2017-12-29 15:56
建议延时(4-6)毫秒,连续写可能24C64的速度跟不上导致出错,具体你可以在线仿真写一下试试。我手里现在的 ...

板子还没贴好,没法试,这样延时的话,不是要等7秒才能写完?
回复

使用道具 举报

7

主题

247

帖子

0

精华

高级会员

Rank: 4

积分
745
金钱
745
注册时间
2016-1-20
在线时间
78 小时
发表于 2017-12-29 16:08:52 | 显示全部楼层
本帖最后由 footprint 于 2017-12-29 16:10 编辑
jian0052 发表于 2017-12-29 16:03
板子还没贴好,没法试,这样延时的话,不是要等7秒才能写完?

大约是那么久,如果页写的话,7000/8毫秒,都是大约数,不是确数。
我也在考虑这个时间问题,存储的时候会影响我的其他程序,我正在考虑怎么记录CPU空闲时间,在空闲时间才进行数据的记录。
回复

使用道具 举报

12

主题

143

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2706
金钱
2706
注册时间
2017-9-8
在线时间
470 小时
 楼主| 发表于 2017-12-29 17:17:00 | 显示全部楼层
等板子到了,我去试试看
回复

使用道具 举报

3

主题

130

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3132
金钱
3132
注册时间
2017-3-2
在线时间
324 小时
发表于 2017-12-29 17:24:31 | 显示全部楼层
模拟时序要慢点吧,要不就一个字节一个字节写,要么就是页写,按页写应该要快点。按页写的例程ST的固件库里有,稍微改动一下就好了
坚持不懈的努力!
回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2017-12-29 17:34:37 | 显示全部楼层
好像不行。一般写到页结束要延时10ms,等待数据写进去
回复

使用道具 举报

2

主题

123

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1472
金钱
1472
注册时间
2014-4-8
在线时间
172 小时
发表于 2017-12-29 18:17:56 | 显示全部楼层
必须要页写,这样速度快,如果一个一个写,那就太慢了
另外,可以这样搞写完一页,全局记录写到哪儿,写了多少,然后去做别的事情,一定时间(大于10mS)后在写一页
回复

使用道具 举报

2

主题

685

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3448
金钱
3448
注册时间
2017-7-4
在线时间
869 小时
发表于 2017-12-29 18:29:20 | 显示全部楼层
回复

使用道具 举报

12

主题

143

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2706
金钱
2706
注册时间
2017-9-8
在线时间
470 小时
 楼主| 发表于 2018-1-2 14:49:44 | 显示全部楼层
本帖最后由 jian0052 于 2018-1-4 13:23 编辑

编辑掉,硬件的问题
回复

使用道具 举报

12

主题

143

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2706
金钱
2706
注册时间
2017-9-8
在线时间
470 小时
 楼主| 发表于 2018-1-2 17:05:53 | 显示全部楼层
自己顶一下
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-16 08:56

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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