你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

I2C SCL信号问题

[复制链接]
matttsai 提问时间:2018-4-26 19:56 /
请问一下我在I2C Init完之后, 如果都不去对I2C做read/write的动作
SCL会一直处于High吗

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

Thanks

收藏 评论8 发布时间:2018-4-26 19:56

举报

8个回答
select326 回答时间:2018-4-26 20:24:40
不操作的时候,当然是不会变化的。

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

Angel_YY 回答时间:2018-4-26 20:59:12
I2C总线的SDA和SCL两条信号线同时处于高电平时,规定为总线的空闲状态。此时各个器件的输出级场效应管均处在截止状态,即释放总线,由两条信号线各自的上拉电阻把电平拉高。所以空闲状态SCL就应该是高电平。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

matttsai 回答时间:2018-4-26 21:01:37
select326 发表于 2018-4-26 20:24
不操作的时候,当然是不会变化的。

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

如果我去call HAL_I2C_Mem_Read() API
SCL没有被拉High/low, 问题会是什么?
select326 回答时间:2018-4-26 22:07:23
matttsai 发表于 2018-4-26 21:01
我利用HAL_I2C_Mem_Read()去读取I2C
这个API有包含把SCL拉High, 拉Low的动作吗? 在那个地方去拉High, 拉L ...

SCL是时钟性号,只要有操作,自然就会有了拉高拉低。
toofree 回答时间:2018-4-27 00:48:40
本帖最后由 toofree 于 2018-4-27 00:49 编辑

是的,SCL不操作的时候默认就是高电平。如果发现不操作的时候SCL为低电平,反而出问题了,有可能I2C被总线上某个I2C设备给拉死了。

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

andeyqi 回答时间:2018-4-27 07:23:44
正常的,总线处于空闲状态
回答时间:2018-4-27 08:36:03
matttsai 发表于 2018-4-26 21:01
我利用HAL_I2C_Mem_Read()去读取I2C
这个API有包含把SCL拉High, 拉Low的动作吗? 在那个地方去拉High, 拉L ...

I2C模块会根据发送数据自动输出SCL,如果没有SCL,没有时钟参考,对方不知道I2C上面发送的数据是什么。I2C一般最高是400Khz。

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

jjbboox 回答时间:2018-4-27 09:41:22
楼主大惊小怪了,I2C总线空闲的时候必须为高电平,本身就需要上拉的。

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版