硬汉嵌入式论坛

 找回密码
 立即注册
查看: 275|回复: 2
收起左侧

[有问必答] 模拟I2C主机扫描AT24C02地址遇到的问题

[复制链接]

1

主题

2

回帖

5

积分

新手上路

积分
5
发表于 2024-3-31 23:40:26 | 显示全部楼层 |阅读模式
我按照硬汉哥的标准库串行EEPROM读写例程教程移植的  检测I2C总线设备代码,先检测完设备后,SDA会一直为低电平导致如果再次调用该函数时会直接return,并且在检测完后进行AT24C02写操作会出错。但是将注释中的代码取消注释后,代码就可以正常运行了。这是为什么?难道是从机(AT24C02)在收到读指令后,响应后SDA电平被拉低,此时发送STOP信号(因为SDA为低电平)无效,只有将一个完整的AT24C02操作完成后才可以有效地发送STOP信号?
Snipaste_2024-03-31_23-26-50.bmp


[C] 纯文本查看 复制代码
uint8_t I2C_CheckDevice(uint8_t _Address)
{
    I2C_SDA_IN();
    I2C_SCL_IN();
    if (I2C_SDA_READ() && I2C_SCL_READ())
    {
        I2C_SDA_OUT();
        I2C_SCL_OUT();
        I2C_Start();
        I2C_SendByte(_Address | I2C_RD);
        if (I2C_WaitAck())
        {
            //I2C_SendByte(0x00);
            I2C_Stop();
            return 1;
        }
        I2C_Stop();
    }
    return 0;
}


回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106731
QQ
发表于 2024-4-1 08:36:49 | 显示全部楼层
这个是看的什么时候的代码,完全没印象了,建议看新版。

【实战技能】简单易实现的SWD接口烧录目标板挂载的EEPROM,支持AT24C02/04/08/16/32/64/128(2024-03-06)
https://www.armbbs.cn/forum.php? ... d=123223&fromuid=58
(出处: 硬汉嵌入式论坛)


[C] 纯文本查看 复制代码
/*
*********************************************************************************************************
*	函 数 名: i2c_CheckDevice
*	功能说明: 检测I2C总线设备,CPU向发送设备地址,然后读取设备应答来判断该设备是否存在
*	形    参:  _Address:设备的I2C总线地址
*	返 回 值: 返回值 0 表示正确, 返回1表示未探测到
*********************************************************************************************************
*/
uint8_t i2c_CheckDevice(uint8_t _Address)
{
	uint8_t ucAck;

	if (I2C_SDA_READ() && I2C_SCL_READ())
	{
		i2c_Start();		/* 发送启动信号 */

		/* 发送设备地址+读写控制bit(0 = w, 1 = r) bit7 先传 */
		i2c_SendByte(_Address | I2C_WR);
		ucAck = i2c_WaitAck();	/* 检测设备的ACK应答 */

		i2c_Stop();			/* 发送停止信号 */

		return ucAck;
	}
	return 1;	/* I2C总线异常 */
}

回复

使用道具 举报

1

主题

2

回帖

5

积分

新手上路

积分
5
 楼主| 发表于 2024-4-1 09:57:18 | 显示全部楼层
eric2013 发表于 2024-4-1 08:36
这个是看的什么时候的代码,完全没印象了,建议看新版。

【实战技能】简单易实现的SWD接口烧录目标板挂 ...

感谢硬汉哥的答疑,我试了一下I2C发送设备地址和写控制是OK的,是我弄成读控制了
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-2 16:02 , Processed in 0.285990 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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