OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2122|回复: 4

I2C停止信号函数的延时问题

[复制链接]

4

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2019-5-28
在线时间
33 小时
发表于 2019-8-9 16:20:47 | 显示全部楼层 |阅读模式
5金钱
v
oid 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);                                                          

}


停止信号:SCL为高时,SDA由低到高跳变,在SCL由低电平变高时,SDA的低电平持续时间要大于4us,跳变后高电平持续时间要大于4.7us.这里不是说SCL由低变高后,SDA的低电平要延时4US吗为什么就直接IIC_SDA=1???



void I2C_Stop(void)
{
   I2C_SDA_OUT();
   I2C_SCL_L;
   I2C_SDA_L;
   I2C_SCL_H;
   delay_us(6);
   I2C_SDA_H;
   delay_us(6);
}
这是网上另一种写法,对吗






正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

87

帖子

0

精华

高级会员

Rank: 4

积分
887
金钱
887
注册时间
2018-4-20
在线时间
491 小时
发表于 2019-8-9 16:32:22 | 显示全部楼层
应该是指SCL由低到高前SDA拉低4us吧
回复

使用道具 举报

8

主题

182

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
421
金钱
421
注册时间
2017-3-8
在线时间
114 小时
发表于 2019-8-9 16:37:59 | 显示全部楼层
本帖最后由 15937417823 于 2019-8-9 16:41 编辑

他说的是在SCL由低到高期间,要保证SDA至少4us的低电平。第一种是在sda=0后边加了4us延时,已经保证了4us,然后SCL才拉高。第二种,没看出来在scl低到高的时候sda怎么保证4us,但是这个sda也是在6us之后拉高的,同样低电平保持超过了4us。应该第一种写法严谨一些
回复

使用道具 举报

4

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2019-5-28
在线时间
33 小时
 楼主| 发表于 2019-8-9 21:03:55 | 显示全部楼层
15937417823 发表于 2019-8-9 16:37
他说的是在SCL由低到高期间,要保证SDA至少4us的低电平。第一种是在sda=0后边加了4us延时,已经保证了4us, ...

可是时序图是指SCL由低到高后至少4US

微信图片编辑_20190809210044.jpg
回复

使用道具 举报

4

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2019-5-28
在线时间
33 小时
 楼主| 发表于 2019-8-9 21:05:14 | 显示全部楼层
人生丶如梦 发表于 2019-8-9 16:32
应该是指SCL由低到高前SDA拉低4us吧

网上看到的时序图都是指之后拉低4US的
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-5 12:08

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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