打印

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

[复制链接]
1227|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Elric_QZH|  楼主 | 2015-8-30 09:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
Elric_QZH|  楼主 | 2015-8-30 09:05 | 只看该作者
void IIC_Continus_Write(u8 WriteAddrs,u8 *Num,u16 NumToWrite)
{
IIC_Start();         //开始信号
IIC_Send_Byte(0xA0);         //写入器件地址+0
IIC_Wait_Ack();         //等待应答
IIC_Send_Byte(WriteAddrs);         //写入目标内存地址
IIC_Wait_Ack();
while(NumToWrite)         //开始写入
{
IIC_Send_Byte(*Num);
IIC_Wait_Ack();
++Num;
NumToWrite--;
}
IIC_Stop();         //结束IIC
}
void IIC_Continus_Read(u8 ReadAddrs,u8 *Array,u16 Len)
{
IIC_Start();         //开始信号
IIC_Send_Byte(0xA0);         //写入器件地址+0
IIC_Wait_Ack();         //等待应答
IIC_Send_Byte(ReadAddrs);         //写入要读取的内存地址
IIC_Wait_Ack();
IIC_Start();         //重新发送开始信号
IIC_Send_Byte(0xA1);         //写入器件地址+1
IIC_Wait_Ack();
while(Len)
{
*Array=IIC_Read_Byte();
IIC_Ack();
++Array;
Len--;
}
IIC_Stop();
}

使用特权

评论回复
板凳
黑夜的风| | 2015-8-30 10:14 | 只看该作者
好像连续写I2C的时候,两者之间需要一定的延时的。

使用特权

评论回复
地板
葫芦娃75| | 2015-8-31 13:05 | 只看该作者
第二次写的时候,第一次还没写完,所以出问题了

使用特权

评论回复
5
哆来咪| | 2015-8-31 20:24 | 只看该作者
你不信看看时序图,肯定是有个间隔时间值的。

使用特权

评论回复
6
葫芦娃75| | 2015-9-24 23:42 | 只看该作者
需要等第一次的数据稳定了,才可以开第二次的。

使用特权

评论回复
7
Elric_QZH|  楼主 | 2015-11-7 09:53 | 只看该作者
黑夜的风 发表于 2015-8-30 10:14
好像连续写I2C的时候,两者之间需要一定的延时的。

加个延时搞定,果然还是延时的问题。

使用特权

评论回复
8
Elric_QZH|  楼主 | 2015-11-7 09:53 | 只看该作者
谢谢大家了,结贴给分。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

133

帖子

0

粉丝