##解疑

小白在线求助 2020-11-27 07:30:18
刚刚学IIC,发现一个问题,不是说协议上规定了只有SCL为低电平时,SDA才允许数据变化吗,那为什么模拟通信协议时,SCL为高电平,SDA 由高电平变成低电平表示起始信号或者终止信号,这不算更改数据吗,有点迷。
...全文
2008 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
DannyDeng123 2020-11-28
  • 打赏
  • 举报
回复
这就是协议的一部分呀,其实不用纠结,你想一下,正常数据通信的时候SDA的电平是不能在SCL为高的时候发生变化的,如果发生了变化就会被认为那是起始信号 or 终止信号。而如果是一个异常的START或者STOP,I2C总线是会报错的,一般是“BUS ERROR "错误。只要是不按规定出现的起始,停止条件通信就不会成功。刚开始学的时候看IO模拟的I2C是可以的,但建议之后你可以看看具有硬件I2C的芯片,里面是怎么规定I2C的,更有助于理解。
小白在线求助 2020-11-28
  • 打赏
  • 举报
回复
引用 1 楼 DannyDeng123的回复:
这就是协议的一部分呀,其实不用纠结,你想一下,正常数据通信的时候SDA的电平是不能在SCL为高的时候发生变化的,如果发生了变化就会被认为那是起始信号 or 终止信号。而如果是一个异常的START或者STOP,I2C总线是会报错的,一般是“BUS ERROR "错误。只要是不按规定出现的起始,停止条件通信就不会成功。刚开始学的时候看IO模拟的I2C是可以的,但建议之后你可以看看具有硬件I2C的芯片,里面是怎么规定I2C的,更有助于理解。
嗯 有点理解了 多谢
homeyzzz 2020-11-28
  • 打赏
  • 举报
回复
device拉低SCL,开始通信。空闲时,SCL是高电平。

27,370

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧