IIC 通信协议

IIC 通信协议IIC通信协议I2C(IIC,Inter-IntegratedCircuit),数据线SDA(data)和时钟SCL(clock)构成的串行总线,双向传送。高速IIC总线一般可达400kbps以上。IIC是半双工通信方式。时序图主机:起始信号—–>第一位——>第二位———>……..——–>第八位———>等待应答信号——->停止信号大致的一个数据传输流程是:主机向SDA线上发送一个起始信号,表示有信号进行传输,此时所有连接到IIC总线

大家好,又见面了,我是你们的朋友全栈君。

IIC 通信协议

I2C(IIC,Inter-Integrated Circuit),数据线SDA(data)和时钟SCL(clock)构成的串行总线,双向传送。

高速IIC总线一般可达400kbps以上。

IIC是半双工通信方式。

时序图

这里写图片描述

主机:起始信号—–>第一位——>第二位———> …….. ——–>第八位———> 等待应答信号——->停止信号

大致的一个数据传输流程是:主机向SDA线上发送一个起始信号,表示有信号进行传输,此时所有连接到IIC总线上的芯片都处于接收状态,接下来,主机发送想要与其进行数据传输的从机地址信号,所有的从机都会接收到该地址信号并和自己固有的地址信号进行匹配,当配对成功时,接下来就在时钟信号的带动下进行数据传输,数据的传输是按照每8位一个单元进行数据的传输。每一位的传输过程中,在SCL高电平期间,一定要保证SDA数值的稳定,否则会出现出错的情况,SDA数值的改变发生在SCL的低电平期间。最终8位全部传输完毕,从机产生一个应答信号给主机,主机在接收到该应答信号后决定接下来是发送一组新的数据还是终止发送。

时序分析

空闲状态

SDA和SCL同时为高电平时,总线处于空闲状态

起始信号与停止信号

起始信号:SCL为高电平时,SDA电平发生高到低的跳变
停止信号:SCL为高电平时,SDA电平发生低到高的跳变

这里写图片描述

应答信号

发送器每发送完一个字节(8个脉冲),在第9个脉冲间释放总线,接收器返回一个ACK信号,协议规定,低电平为有效应答,高电平为无效应答。

这里写图片描述

数据有效性

时钟信号为高电平期间,数据必须保持稳定,时钟信号低电平期间,数据线上的电平才允许变化。

也就是说,数据在时钟信号到来前必须准备好,并保持到时钟信号的下降沿之后。

这里写图片描述

数据传输

I2C为同步传输,时钟控制数据位的传输,边沿触发。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/131293.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • settings官方网站_phpstorm中文

    settings官方网站_phpstorm中文setting —> php,选择php版本,并点击…,选择到php.exe进入到appserv底下找到php.ini文件,查找date.timezone,去掉前面的;号,添加”Asia/Shanghai”重启appserv环境,就是重启下apache 和 mysql服务发现依然失败后面重启电脑就可以了哈哈哈哈哈哈哈哈…

  • 在线用户数与并发用户数的区别和比例关系[通俗易懂]

    在线用户数与并发用户数的区别和比例关系[通俗易懂]在线用户数与并发用户数的区别和比例关系在线用户数:用户同时在一定时间段的在线数量并发用户数:某一时刻同时向服务器发送请求的用户数一般而言,我们习惯以5-20的比率来推算并发用户与在线用户之间的关系。即,并发与在线的比例约为5%-20%比如,某网站存在注册用户数为10W人,但同时在线最多1W人,但这1W个人,可能只有500人会浏览帖子,500人会进行发帖,只有这1000个人对服务

  • mysql中有execute_jdbc连接mysql数据库

    mysql中有execute_jdbc连接mysql数据库最近在补基础知识,刚好补到C#中对数据库操作的一些技术,今天学习了ExecuteNonQuery的东西,看自己项目维护项目的代码和网上资料查询,基本上搞懂了ExecuteNonQuery的用法,小小的做个总结,供以后查阅。ExecuteNonQuery方法主要用来更新数据,当然也可以用来执行目标操作(例如查询数据库的结构或者创建诸如表等的数据库对象)。通常用它来执行insert、update、de…

  • 关于SecureCRT及Vim的使用

    关于SecureCRT及Vim的使用听说大部分的搞网络或者被网络搞的同学,每天都会使用SecureCRT在Linux下进行开发、测试等工作。正所谓“工欲善其事,必先利其器”,一个趁手的开发环境对工作效率的提升是不言而喻的。我在这里简单介绍一下个人在日常使用中积累下来的常用设置及操作,希望对不熟悉的朋友能有一点点参考作用,一家之言,欢迎拍砖。【SecureCRT篇】1、 自动登录服务器如果我们需要经常登录固定某

  • container html css,splitcontainer「建议收藏」

    container html css,splitcontainer「建议收藏」怎么使用SplitContainer控件实现上下分隔您好,我来为您解C#如何使用SplitContainer控件实现上下分隔Orientation属性设置为Horizontal希望我的回答对你有帮助。c#splitContainer能把窗体分割成三部分或者更多…splitContainer能把窗体分割成三部分或者更多的部分吗?怎么操作?splitContainer控件单独使用只支…

  • 自定义标签(TagSupport )

    自定义标签(TagSupport )定义最简单的标签自定义标签采用Default Adapter模式(缺省适配模式)Java代码配置文件Xml代码JSP页面Html代码TagSupport的流程图SKIP_BO

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号