打印

CPU从AT24C64中接收字节疑惑

[复制链接]
1355|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
shiking|  楼主 | 2007-5-31 17:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
代码从AT24C64中随机读出字节功能正常.但从datasheet上没有看明白.请各位大侠多多指点.
1)读取顺序见Figure5,以下代码功能是在Read命令发送给24C64后,从24C64接收一个字节内容. 2)SCL时钟与SDA OUT的关系见图6.
UCHAR I2C_Receive_Byte(void)
{
    UCHAR i = 8, d;
    while ( i--)
    {
        d = d << 1;
        Delay10uS();I2C_SCK =1;
        if ( I2C_SDA ) d++;
        Delay10uS();I2C_SCK =0;
    }
    return d;
}

问题点:
1.为什么在开始要执行Delay10uS();I2C_SDA = 1;
2. 按以下说明,应该是在下降沿时输出数据(即SCK为0后,再从SDA读出数据),但代码中为什么是在SCL为高电平时从SDA中读取数据: Delay10uS();I2C_SCK =1;if ( I2C_SDA ) d++;
SERIAL CLOCK (SCL): The SCL input is used to positive edge clock data into each EEPROM device and negative edge clock data out of each device.
3.Delay10uS()在前或后有区别吗?代码中都是把Delay10uS放在前面,如果改为放在赋值后面,有什么不同吗?即改为: I2C_SDA = 1; Delay10uS(); … I2C_SCK =1; Delay10uS();…I2C_SCK =0; Delay10uS();

相关下载

相关帖子

沙发
dengm| | 2007-5-31 18:11 | 只看该作者

into vs from

使用特权

评论回复
板凳
dreambird| | 2007-5-31 22:47 | 只看该作者

lz为什么不验证你的想法呢?

等你的验证结果

使用特权

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

本版积分规则

1

主题

1

帖子

1

粉丝