I2C SCL信号一直保持High

2019-07-14 15:01发布

请问一下我在I2C Init完之后, 如果都不去对I2C做read/write的动作
SCL会一直处于High吗

我用示波器接SCL pin, 发现它会一直保持High, 这是正常的吗
我只有在对I2C做Read/Write的动作时, 才会从示波器上看到SCL有发生变化

Thanks
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
vyewrewr
1楼-- · 2019-07-14 20:07
I2C总线的SDA和SCL两条信号线同时处于高电平时,规定为总线的空闲状态。此时各个器件的输出级场效应管均处在截止状态,即释放总线,由两条信号线各自的上拉电阻把电平拉高。所以空闲状态SCL就应该是高电平。
sunbingfeng
2楼-- · 2019-07-14 22:05
shugan2011 发表于 2018-12-24 12:05
不操作的时候,当然是不会变化的。

我利用HAL_I2C_Mem_Read()去读取I2C
这个API有包含把SCL拉High, 拉Low的动作吗? 在那个地方去拉High, 拉Low?

如果我去call HAL_I2C_Mem_Read() API
SCL没有被拉High/low, 问题会是什么?
shugan2011
3楼-- · 2019-07-15 02:01
sunbingfeng 发表于 2018-12-24 12:25
我利用HAL_I2C_Mem_Read()去读取I2C
这个API有包含把SCL拉High, 拉Low的动作吗? 在那个地方去拉High, 拉Low?

SCL是时钟性号,只要有操作,自然就会有了拉高拉低。
zhouxk
4楼-- · 2019-07-15 05:35
本帖最后由 toofree 于 2018-4-27 00:49 编辑

是的,SCL不操作的时候默认就是高电平。如果发现不操作的时候SCL为低电平,反而出问题了,有可能I2C被总线上某个I2C设备给拉死了。
毛毛lallala
5楼-- · 2019-07-15 10:49
 精彩回答 2  元偷偷看……
royal90
6楼-- · 2019-07-15 15:24
基本的是I2C空闲时,保持是高电平。

一周热门 更多>