I2C 连续给EEPRM写数据出问题了

[复制链接]
1699|7
 楼主| Elric_QZH 发表于 2015-8-30 09:04 | 显示全部楼层 |阅读模式
我单独写的时候是可以的,为什么连续写就写不进去呢,只有第一次写进去的数据是成功的
 楼主| Elric_QZH 发表于 2015-8-30 09:05 | 显示全部楼层
  1. void IIC_Continus_Write(u8 WriteAddrs,u8 *Num,u16 NumToWrite)
  2. {
  3. IIC_Start();         //开始信号
  4. IIC_Send_Byte(0xA0);         //写入器件地址+0
  5. IIC_Wait_Ack();         //等待应答
  6. IIC_Send_Byte(WriteAddrs);         //写入目标内存地址
  7. IIC_Wait_Ack();
  8. while(NumToWrite)         //开始写入
  9. {
  10. IIC_Send_Byte(*Num);
  11. IIC_Wait_Ack();
  12. ++Num;
  13. NumToWrite--;
  14. }
  15. IIC_Stop();         //结束IIC
  16. }
  17. void IIC_Continus_Read(u8 ReadAddrs,u8 *Array,u16 Len)
  18. {
  19. IIC_Start();         //开始信号
  20. IIC_Send_Byte(0xA0);         //写入器件地址+0
  21. IIC_Wait_Ack();         //等待应答
  22. IIC_Send_Byte(ReadAddrs);         //写入要读取的内存地址
  23. IIC_Wait_Ack();
  24. IIC_Start();         //重新发送开始信号
  25. IIC_Send_Byte(0xA1);         //写入器件地址+1
  26. IIC_Wait_Ack();
  27. while(Len)
  28. {
  29. *Array=IIC_Read_Byte();
  30. IIC_Ack();
  31. ++Array;
  32. Len--;
  33. }
  34. IIC_Stop();
  35. }
黑夜的风 发表于 2015-8-30 10:14 | 显示全部楼层
好像连续写I2C的时候,两者之间需要一定的延时的。
葫芦娃75 发表于 2015-8-31 13:05 | 显示全部楼层
第二次写的时候,第一次还没写完,所以出问题了
哆来咪 发表于 2015-8-31 20:24 | 显示全部楼层
你不信看看时序图,肯定是有个间隔时间值的。
葫芦娃75 发表于 2015-9-24 23:42 | 显示全部楼层
需要等第一次的数据稳定了,才可以开第二次的。
 楼主| Elric_QZH 发表于 2015-11-7 09:53 | 显示全部楼层
黑夜的风 发表于 2015-8-30 10:14
好像连续写I2C的时候,两者之间需要一定的延时的。

加个延时搞定,果然还是延时的问题。
 楼主| Elric_QZH 发表于 2015-11-7 09:53 | 显示全部楼层
谢谢大家了,结贴给分。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

133

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部