I2C SCL信号问题
请问一下我在I2C Init完之后, 如果都不去对I2C做read/write的动作SCL会一直处于High吗
我用示波器接SCL pin, 发现它会一直保持High, 这是正常的吗
我只有在对I2C做Read/Write的动作时, 才会从示波器上看到SCL有发生变化
Thanks
不操作的时候,当然是不会变化的。 I2C总线的SDA和SCL两条信号线同时处于高电平时,规定为总线的空闲状态。此时各个器件的输出级场效应管均处在截止状态,即释放总线,由两条信号线各自的上拉电阻把电平拉高。所以空闲状态SCL就应该是高电平。 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, 问题会是什么? matttsai 发表于 2018-4-26 21:01
我利用HAL_I2C_Mem_Read()去读取I2C
这个API有包含把SCL拉High, 拉Low的动作吗? 在那个地方去拉High, 拉L ...
SCL是时钟性号,只要有操作,自然就会有了拉高拉低。 本帖最后由 toofree 于 2018-4-27 00:49 编辑
是的,SCL不操作的时候默认就是高电平。如果发现不操作的时候SCL为低电平,反而出问题了,有可能I2C被总线上某个I2C设备给拉死了。
正常的,总线处于空闲状态 matttsai 发表于 2018-4-26 21:01
我利用HAL_I2C_Mem_Read()去读取I2C
这个API有包含把SCL拉High, 拉Low的动作吗? 在那个地方去拉High, 拉L ...
I2C模块会根据发送数据自动输出SCL,如果没有SCL,没有时钟参考,对方不知道I2C上面发送的数据是什么。I2C一般最高是400Khz。 楼主大惊小怪了,I2C总线空闲的时候必须为高电平,本身就需要上拉的。
页:
[1]