野火电子论坛

 找回密码
 注册

扫一扫,访问微社区

查看: 164|回复: 1

[F1-指南者] 请问逻辑分析仪上I2C协议是怎么体现应答的?

[复制链接]
发表于 2019-5-14 21:18:12 | 显示全部楼层 |阅读模式
本帖最后由 HGLOBAL 于 2019-5-14 21:23 编辑

买了个山寨的逻辑分析仪,I2C协议用的网上下来模拟方式的,驱动si7021温湿度传感器。

大致代码如下
unsigned int TemReadByte(u8 com)//发送数据
{
        u8 data[2]={0};//2个字节
        int value=0;
        
        IIC_Start1();
        IIC_Send_Byte(0x80);//写命令
        if(IIC_Wait_Ack())
        {
                return 0;
        }
        IIC_Send_Byte(0xE3);//写命令
        if(IIC_Wait_Ack())
        {
                return 0;
        }
        
        delay_ms(40);
        
        IIC_Start1();
        IIC_Send_Byte(0x81);//读取命令
        if(IIC_Wait_Ack())
        {
                return 0;
        }
        data[0]=IIC_Read_Byte(0);
        data[1]=IIC_Read_Byte(1);
        IIC_Stop1();
        
        
        value=(data[0]<<8)+data[1];
        
        return value;
}

用这个渣渣逻辑分析仪抓到了两段波形(只能触发一次)

微信截图_20190514211407.png
这一段应该是I2C起始信号,在SCL(白的是SCL,红的SDA)为高时候SDA拉低,
但代码明明写了
        IIC_Send_Byte(0x80);//写命令
        if(IIC_Wait_Ack())
        {
                return 0;
        }

并没有看到SDA拉低应答,发送完0X80(1000 0000)就直接就发送了0xe3(1110 0011‬),不是很理解,求前辈们点拨一下,谢谢。
微信截图_20190514211849.png
这是手册要求的时序。
回复

使用道具 举报

发表于 2019-5-15 08:39:34 | 显示全部楼层
我记得最辣鸡的那个24m的都能解析i2c协议的啊,在顶部标注起始,地址读写 应答和数据的位置啊,你的waitack是什么样的,应该是这个等待的有问题吧。。
回复 支持 反对

使用道具 举报

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

本版积分规则

野火电子公众号

手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号-2 大学生ARM嵌入式2群

GMT+8, 2019-5-25 13:51 , Processed in 0.060548 second(s), 33 queries , Gzip On.

野火电子论坛

© 2014-2016 www.firebbs.cn

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