完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
请问一下我在I2C Init完之后, 如果都不去对I2C做read/write的动作
SCL会一直处于High吗 我用示波器接SCL pin, 发现它会一直保持High, 这是正常的吗 我只有在对I2C做Read/Write的动作时, 才会从示波器上看到SCL有发生变化 Thanks |
|
相关推荐
10个回答
|
|
不操作的时候,当然是不会变化的。
|
|
|
|
I2C总线的SDA和SCL两条信号线同时处于高电平时,规定为总线的空闲状态。此时各个器件的输出级场效应管均处在截止状态,即释放总线,由两条信号线各自的上拉电阻把电平拉高。所以空闲状态SCL就应该是高电平。
|
|
|
|
我利用HAL_I2C_Mem_Read()去读取I2C 这个API有包含把SCL拉High, 拉Low的动作吗? 在那个地方去拉High, 拉Low? 如果我去call HAL_I2C_Mem_Read() API SCL没有被拉High/low, 问题会是什么? |
|
|
|
sunbingfeng 发表于 2018-12-24 12:25 SCL是时钟性号,只要有操作,自然就会有了拉高拉低。 |
|
|
|
本帖最后由 toofree 于 2018-4-27 00:49 编辑
是的,SCL不操作的时候默认就是高电平。如果发现不操作的时候SCL为低电平,反而出问题了,有可能I2C被总线上某个I2C设备给拉死了。 |
|
|
|
正常的,总线处于空闲状态
|
|
|
|
基本的是I2C空闲时,保持是高电平。
|
|
|
|
sunbingfeng 发表于 2018-12-24 12:25 I2C模块会根据发送数据自动输出SCL,如果没有SCL,没有时钟参考,对方不知道I2C上面发送的数据是什么。I2C一般最高是400Khz。 |
|
|
|
楼主大惊小怪了,I2C总线空闲的时候必须为高电平,本身就需要上拉的。
|
|
|
|
不错,很好的经验分享,辛苦麻烦了,欠缺这方面的资料,非常感谢。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
2105 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1941 浏览 3 评论
4537 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2084 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
2599 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 22:08 , Processed in 0.682403 second(s), Total 60, Slave 53 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号