OpenEdv-开源电子网

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

写EEPROM 24C16一个字节为什么要延时4MS以上的时间?

[复制链接]

35

主题

89

帖子

0

精华

初级会员

Rank: 2

积分
185
金钱
185
注册时间
2015-3-2
在线时间
34 小时
发表于 2016-10-26 17:07:07 | 显示全部楼层 |阅读模式
5金钱
本帖最后由 action99 于 2016-10-26 17:08 编辑

//AT24CXX指定地址写入一个数据
//WriteAddr :写入数据的目的地址
//DataToWrite:要写入的数据


voidAT24CXX_WriteOneByte(u16 WriteAddr,u8 DataToWrite){
     u16ju;
     IIC_Start();
    if(EE_TYPE>AT24C16)        {
               IIC_Send_Byte(0XA0);           //发送写命令
               IIC_Wait_Ack();
              IIC_Send_Byte(WriteAddr>>8);//发送高地址
    }else        {      
              ju=WriteAddr/256;
          IIC_Send_Byte(0XA0+((WriteAddr/256)<<1));  //发送器件地址0XA0,写数据
    }

     IIC_Wait_Ack();
        ju=WriteAddr%256;
              IIC_Send_Byte(WriteAddr%256);        //发送低地址         
     IIC_Wait_Ack();
     IIC_Send_Byte(DataToWrite);             //发送字节                                                        IIC_Wait_Ack();
               IIC_Stop();                             //产生一个停止条件
     delay_ms(4);   
}


每写一个字节都需要延时一个4MS的时间,如果少于4MS数据就会出错,这是为什么?如果需要同时写入100个字节就需要400MS,时间也太浪费在里面了吧,请大神指教!!!!!!!!!!在线等 。。。。

最佳答案

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

从规格书到看到是5MS,相当于每写一个字节就需要延时最多5MS时间后,再写下一个字节,对吧。这样就讲通
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

35

主题

89

帖子

0

精华

初级会员

Rank: 2

积分
185
金钱
185
注册时间
2015-3-2
在线时间
34 小时
 楼主| 发表于 2016-10-26 17:07:08 | 显示全部楼层
小温 发表于 2016-10-26 17:38
看看AT24Cxx的数据手册,上面有一个Twr的指标值

ddd.jpg
从规格书到看到是5MS,相当于每写一个字节就需要延时最多5MS时间后,再写下一个字节,对吧。这样就讲通
回复

使用道具 举报

35

主题

89

帖子

0

精华

初级会员

Rank: 2

积分
185
金钱
185
注册时间
2015-3-2
在线时间
34 小时
 楼主| 发表于 2016-10-26 17:07:42 | 显示全部楼层
希望有大哥指教,谢谢。在线等
回复

使用道具 举报

19

主题

702

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3339
金钱
3339
注册时间
2013-7-30
在线时间
708 小时
发表于 2016-10-26 17:38:23 | 显示全部楼层
看看AT24Cxx的数据手册,上面有一个Twr的指标值
思想很重要,无论做人还是编程!
我的技术公众号【微联智控工作室】
回复

使用道具 举报

6

主题

1097

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3571
金钱
3571
注册时间
2014-12-2
在线时间
365 小时
发表于 2016-10-26 19:28:45 | 显示全部楼层
楼上正解,而且这只是最大值,你可以使用“Acknowledge Polling”方式会更快。
1.png
坚决不用寄存器,拒绝重复造轮子。
回复

使用道具 举报

18

主题

109

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
223
金钱
223
注册时间
2016-8-11
在线时间
64 小时
发表于 2017-4-1 20:05:28 | 显示全部楼层
action99 发表于 2016-10-26 17:07
从规格书到看到是5MS,相当于每写一个字节就需要延时最多5MS时间后,再写下一个字节,对吧。这样就讲通 ...

最大时间5ms,3ms的延时能满足要求吗?
回复

使用道具 举报

18

主题

109

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
223
金钱
223
注册时间
2016-8-11
在线时间
64 小时
发表于 2017-4-1 20:07:25 | 显示全部楼层
我有个3ms延时,写失败的片子,只改动了在等待ack函数中,增加了延时,又可以了。这是为什么?示波器上,还是只是3ms的间隔
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-18 16:23

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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