IIC总线简介及IIC的通信过程与时序

news2024/11/23 3:04:27

1.IIC总线简介

 IIC总线:

IIC总线是Philips公司在八十年代初推出的一种串行、半双工总线,主要用于近距离、低速的芯片之间的通信;IIC总线有两根双向的信号线,一根数据线SDA用于收发数据,一根时钟线SCL用于通信双方时钟的同步;IIC总线硬件结构简单,成本较低,因此在各个领域得到了广泛的应用。

 IIC总线具体介绍:

IIC总线是一种多主机总线,连接在IIC总线上的器件分为主机和从机,主机有权发起和结束一次通信,而从机只能被主机呼叫;当总线上有多个主机同时启用总线时,IIC也具备冲突检测和仲裁的功能来防止错误产生; 每个连接到IIC总线上的器件都有一个唯一的地址(7bit),且每个器件都可以作为主机也可以作为从机(同一时刻只能有一个主机),总线上的器件增加和删除不影响其他器件正常工作;IIC总线在通信时总线上发送数据的器件为发送器,接收数据的器件为接收器

 2.IIC总线通信过程

通信过程:

  1.  主机发送起始信号启用总线
  2. 主机发送一个字节数据指明从机地址和后续字节的传送方向
  3. 被寻址的从机发送应答信号回应主机
  4. 发送器发送一个字节数据
  5. 接收器发送应答信号回应发送器  … … (循环步骤4、5)
  6. 通信完成后主机发送停止信号释放总线

寻址方式:

      IIC总线上传送的数据是广义的,既包括地址,又包括真正的数据。主机在发送起始信号后必须先发送一个字节的数据,该数据的高7位为从机地址,最低位表示后续要发送的数据的传送方向。

     总线上所有的从机接收到该字节数据后都将这7位地址与自己的地址进行比较,如果相同,则认为自己被主机寻址,然后再根据第0位将自己定为发送器或接收器。

     IIC通信的发送器和接收器与谁是主机谁是从机无关,是由发送的第一个字节的数据的最低位也就是第0位决定的,如果最低位为'0'表示主机发送数据,则主机为发送器,为'1'表示主机接收数据,则从机为发送器。

具体实现:

1.主机发送起始信号启用总线:

      IIC有两根双向的信号线SCL和SDA,在空闲时他们两个的状态均为高电平,当SCL为高电平时,SDA由高电平变为低电平表示起始信号,SCL为高电平时,SDA由低电平变高电平表示停止信号,起始信号和停止信号都是只能由主机发送,起始信号产生后总线处于占用状态,此时其他的主机就无法使用它来通信,停止信号产生后总线处于空闲状态。

 2.主机发送一个字节数据指明从机地址和后续字节的传送方向:

     IIC总线通信时每个字节为8位长度,且它传送的第一个字节的数据一定是由主机发送的七位地址和一位确定传输方向的位组成,在第一个字节发送完后才能确定发送器和接收器。数据传送时,先传送最高位,后传送低位,他与UART的数据传送方向相反。

3.被寻址的从机发送应答信号回应主机

       在对应的从机确认了身份后,其会发送一位的数据来通知主机可以进行数据传输了,这个数据就是应答信号,主机在接收到应答信号后开始传送真正的数据。

4.发送器开始发送数据:

       注意这里是发送器开始发送数据,其不一定主机,每一次传送的数据是由八位数据和一位确认位组成,一次传送八位的原因与UART相同,为了防止数据过大而产生误差导致后续数据全部错乱

       其次,IIC总线在进行数据传送时,时钟线SCL为低电平期间发送器向数据线SDA上发送一位数据,在此期间数据线上的信号允许发生变化,时钟线SCL为高电平期间接收器从数据线SDA上读取一位数据,在此期间数据线上的信号不允许发生变化,必须保持稳定,其目的是为了确认连续的高电平或者低电平信号在发送时的数量。

      就比如发送的数据为111000,其在发送时转换成高低电平的变化与10是相同的,为了区分这个数据到底是111000还是10,我们使用了上述的方法,使其在读取时只能读取一位数据。

 5.接收器发送应答信号回应发送器

    接收器在接收到数据后也会发送一位应答信号来通知发送器,具体见下面的IIC时序。在上述操作进行完成后,就是循环的进行第四和第五步操作来发送要传输的数据。

6.通信完成后主机发送停止信号释放总线

   在发送完终止信号后总线被释放,这时其他主机就可以在此获取总线的拥有权来进行通信了。

3.IIC时序

  IIC总线发送数据的方式有三种,分别为主机给从机发送数据、从机给主机发送数据、主机先向从机发送数据,然后从机再向主机发送数据。

注:下面三图中灰色部分表示数据由主机向从机传送,白色部分则表示数据由从机向主机传送;A表示应答信号, A非表示非应答,S表示起始信号,P表示终止信号

      ①主机给从机发送数据

    在这种方式下,通信结束的原因有两种,第一种为从机没有应答,主机停止通信,第二种为从机发送了应答信号但是主机主动停止了通信。

     ②从机给主机发送数据

    从机给主机发送数据时,只有主机非应答才能停止信息的传递,并且无论是谁给谁发数据,其第一个字节都必须是由主机发送的由确认从机地址和传输方向组成的一个字节的数据。

     ③主机先向从机发送数据,然后从机再向主机发送数据

       在进行发送接收交换的过程中是不会产生停止信号P的,因为如果产生了停止信号,总线的所有权可能会被其他主机占有,所以身份的转换就是直接重新发送一个确认传输方向的位与之前不同的一个字节的数据即可,无需停止。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/624839.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

跳槽一次涨8k,5年跳了3次...

最近有人说,现在软件测试岗位初始工资太低了,有些刚刚入行的测试朋友说自己工资连5位数都没有…干了好几年也没怎么涨。 看看别人动辄月薪1-2万,其实我想说也没那么难。 说下如何高效地拿到3万的工资,总体来说,就靠跳…

墨天轮关系型分布式数据库榜单解读

分布式关系型数据库概述 作为数据库演进方向之一,分布式能力受到更多用户的关注。从技术架构演进来看,数据库正走过了从单机式、集中式到分布式的发展过程,目前是多种架构并存的阶段。分布式架构以其更好的存储与计算扩展能力,受…

四六位、不定长、计算题等验证码,一款工具全部搞定,简单方便还开箱即用,精度高达96%!!

四六位、不定长、计算题等验证码,第三方平台准确率低,自己不会神经网络训练,嫌麻烦,一款工具全部搞定,开箱即用!! 本文秉承着开箱即用的原则,真正做到一款工具识别秒杀所有单行文本验证码,这里的单行指的就是某张4位6位或者计算题或者文字的验证码,我是使用了4位+6位…

Vue2数据代理的理解

理解 最近在复习Vue2,对于数据代理有些模糊。查阅了一些资料。 这是官方解释https://v2.cn.vuejs.org/v2/api/#data数据代理:通过代理对象 操作(读/写)目标对象中的属性 这里出现了两个对象,一个叫代理对象&#xf…

VMware虚拟机安装Windows Server 2003

哈喽,各位小伙伴大家好,win server2003算是拖了比较久了,一直没发布,今天完成server2003的安装后server系列的安装教程就告一段落了。马上暑假了,想必新生开学之后,很多计算机网络专业的同学们要开始接触到…

全志V3S嵌入式驱动开发(sd卡驱动)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 之前开发过程中,整个linux的启动都是基于sd卡进行的。此外,我们有这么几点发现,首先,v3s本身是识别…

Python3+Selenium2完整的自动化测试实现之旅(五):自动化测试框架、Python面向对象以及POM设计模型简介

目录 前言 1 自动化测试框架概述 2 自动化测试框架需要的环境 3 自动化测试框架设计思想:Python面向对象 4 自动化测试框架设计思想:POM(Page Object Model)页面对象模型 【自动化测试工程师学习路线】 结语 前言 之前…

【AI数学】相机成像之外参数

在一个多视点计算机视觉系统里,系统输入除了多个视角的图像外,一般还需要输入对应视角下相机的内外参数。其中,相机内参数决定了图像坐标系和相机三维坐标系的映射关系,而相机外参数则决定了相机三维坐标系和世界坐标系的对应关系…

【TCP/IP】多进程服务器的实现(进阶) - 进程的概念及fork函数

目录 进程的概念及应用 进程的定义 进程的ID fork函数(进程创建函数) 多进程(以及多线程)是现代计算机网络的精髓。在之前,我们所做的诸如回声服务器、回声客户端、文件收发等都是偏向基础的单进程应用。而经过前面…

【论文阅读】Twin neural network regression is a semi- supervised regression algorithm

论文下载 GitHub bib: ARTICLE{,title {Twin neural network regression is a semi- supervised regression algorithm},author {Sebastian J Wetzel and Roger G Melko and Isaac Tamblyn},journal {Machine Learning: Science and Technology},year {2022},volum…

“我转行做测试开发的这一年多,月薪5K变成了18K”,中文系萌妹的自白

公司老板是我的测试引路人 本人就读于某普通院校,在大学期间就开始实习找工作,误打误撞进入一家做工业大数据的创业公司。 刚开始我并没有明确的职业发展方向,主要是做一些环境搭建的基础工作。但由于执行效率高,工作责任感强&a…

06-发送短信验证码实现登录功能

1、发送短信验证码实现登录功能的流程 1.1、获取验证码流程 1.2、登录流程 1.3、页面带有图形验证码的流程 2、 注册登录二合一页面的开发 2.1、将src目录下的App.vue页面上通用显示的删掉 2.2、在router目录下的index.js文件中通过懒加载的方式添加login.vue页面 对于rout…

【新版】系统架构设计师 - 软件工程

个人总结,仅供参考,欢迎加好友一起讨论 文章目录 架构 - 软件工程考点摘要软件工程概述软件能力成熟度模型软件过程模型瀑布模型原型化模型增量模型螺旋模型喷泉模型V模型迭代与增量的概念CBSD基于构件的模型(构件组装模型/基于构件的软件开发…

PSP - 更新 MSA 搜索的全部 UniProt 蛋白序列库

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/131115471 UniProt 是一个提供蛋白质序列和功能信息的数据库,由欧洲生物信息学研究所(EMBL-EBI)、美国瑞士生物技术信息中心(SIB)和美国蛋白质信息资源(…

一图详解!接口测试之HTTP协议与HTTPS协议的传输过程

目录 前言: 1、HTTP协议 1.1 协议 1.2 原理 1.2.1 客户端 1.2.2 服务器端 1.3 请求报文 1.3.1 报文格式 1.3.2 请求报文方法 1.4 响应报文 1.4.1 报文格式 1.4.2 响应报文状态码 2、HTTPS协议 2.1 加密算法 2.2 数字签名 2.3 传输过程 2.4 流程图 …

Kafka运维监控:Kafka-Eagle安装

kafka自身并没有集成监控管理系统,因此对kafka的监控管理比较不便,好在有大量的第三方监控管理系统来使用,常见的有: Kafka Eagle KafkaOffsetMonitor Kafka Manager(雅虎开源的Kafka集群管理器) Kafka …

安装和配置Canal

安装和配置Canal 下面我们就开启mysql的主从同步机制,让Canal来模拟salve 1.开启MySQL主从 Canal是基于MySQL的主从同步功能,因此必须先开启MySQL的主从功能才可以。 这里以之前用Docker运行的mysql为例: 1.1.开启binlog 打开mysql容器…

电商打工人的饭碗,AIGC还端不走

文 | 螳螂观察 作者 | 鲸胖胖 以ChatGPT、Midjourney、文心一言等为代表的AIGC产品,已经在全球掀起新一轮的AI技术变革新浪潮,再度刷新了人们对AI的认知,多个行业的商业模式和生态必然在未来会被彻底重构。 前不久,36氪就测使用…

【博客647】MetricsQL(VictoriaMetrics)和PromQL(Prometheus)的不同之处

MetricsQL(VictoriaMetrics)和PromQL(Prometheus)的不同之处 1、如果对PromSQL不熟悉可以先看以下链接 https://valyala.medium.com/promql-tutorial-for-beginners-9ab455142085 2、与PromQL相比,以下功能在MetricsQL中的实现方式不同,这也改善了用户…

AI实战营第二期 第六节 《MMDetection代码课》——笔记7

什么是MMDetection? MMDetection 是被广泛使用的检测工具箱,包括了目标检侧、实例分割、全景分割等多个通用检测方向,并支持了 75 个主流和前沿模型, 为用户提供超过 440 个预训练模型, 在学术研究和工业落地中拥有广泛应用。该恇…