AT24C02 能读不能写的问题

最近用电阻触摸屏做项目,AT24C02存储触摸矫正数据。使用正点原子探索者F4的触摸屏和IIC例程时,提示“24C02 Check Failed!” 开始以为是芯片问题,用野火家的IIC历程可以测试通过,觉得非常奇怪,于是上逻辑分析仪。写入数据可以收到应答,但是读取数据就比较牛逼了,读哪个地址返回的数据和地址一样,读出的数据和见下图。尼玛,太吓人了。。。。。。。。。。

图1 写入数据

图2 读取数据

图3 读取数据

心烦意乱,鼓捣了一个晚上最后发现是IIC停止部分驱动程序有问题,看停止时序: 纳秒级别。

将IIC_Stop代码中delay_us(4);搞到前面一行,时序正常了,数据可以正常读写。 

也可能我买的器件比较辣鸡,所以不得行哈哈哈,,,,

 原来的程序:

//产生IIC停止信号
void IIC_Stop(void)
{
	SDA_OUT();//sda线输出
	IIC_SCL=0;
	IIC_SDA=0;//STOP:when CLK is high DATA change form low to high
 	delay_us(4);
	IIC_SCL=1;	
	IIC_SDA=1;//发送I2C总线结束信号
	delay_us(4);				   	
}

修改后:

//产生IIC停止信号
void IIC_Stop(void)
{
	SDA_OUT();//sda线输出
	IIC_SCL=0;
	IIC_SDA=0;//STOP:when CLK is high DATA change form low to high
 	delay_us(4);
	IIC_SCL=1;	
    delay_us(4);
	IIC_SDA=1;//发送I2C总线结束信号	   	
}

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值