【车载开发系列】IIC总线协议基础篇

【车载开发系列】IIC总线协议基础篇

【车载开发系列】IIC总线协议基础篇

  • 【车载开发系列】IIC总线协议基础篇
    • 一. 什么是I2C
    • 二. I2C使用场景
    • 三. I2C的特点
    • 四. 传输速度四种模式
    • 五. IIC基本通讯规则
      • 1)起始信号S
      • 2)停止信号P
      • 3)发送数据(一个字节)
      • 4)接收数据(一个字节)
      • 5)发送应答
      • 6)接收应答
      • 7)模式切换
    • 六. 什么是上拉电阻
    • 七. IIC通信步骤
      • 1)主机发出起始信号
      • 2)发送设备地址和读写控制位
      • 3)等待从机应答
      • 4)传输数据
      • 5)通信结束
    • 八. IIC注意事项
    • 九. IIC总线寻址
    • 十. IIC总线通讯协议与CAN对比

)

一. 什么是I2C

  • I2C(集成电路总线),它是Inter-Integrated Circuit的缩写。
  • 由Philips公司(2006年迁移到NXP)在1980年代初开发的一种简单、双线双向的同步串行总线,它利用一根时钟线SCL和一根数据线SDA在连接总线的两个器件之间进行信息的传递,为设备之间数据交换提供了一种简单高效的方法。每个连接到总线上的器件都有唯一的地址,任何器件既可以作为主机也可以作为从机,但同一时刻只允许有一个主机。

二. I2C使用场景

  • I2C总线协议标准是一个具有冲突检测机制和仲裁机制的真正意义上的多主机总线,它能在多个主机同时请求控制总线时利用仲裁机制避免数据冲突并保护数据。
  • 使用I2C总线通信的场景有很多,IIC主要方便连接各种低速外设,例如传感器,存储器时钟芯片,驱动FRAM和E2PROM等。

三. I2C的特点

  • 只需要SDA(串行数据总线)、SCL(串行时钟总线)两条总线;
  • 同步串行通信接口,半双工工作模式;
  • 没有严格的波特率要求;
  • 所有组件之间都存在简单的主/从关系,连接到总线的每个设备均可通过唯一地址进行软件寻址;
  • I2C是真正的多主设备总线,可提供仲裁和冲突检测;
  • 最大主设备数:无限制;最大从机数:理论上,1008个从节点,寻址模式的最大节点数为2的7次方或2的10次方,但有16个地址保留用于特殊用途。

四. 传输速度四种模式

  1. 标准模式(Standard Mode):100 Kbps
  2. 快速模式(Fast Mode):400 Kbps
  3. 高速模式(High speed mode):3.4 Mbps
  4. 超快速模式(Ultra fast mode):5 Mbps
  • IIC支持多种速度等级 能满足不同应用环境对数据传输速率的需求。
  • 如果使用硬件I2C接口,可以通过配置主设备控制器,选择速率模式。

五. IIC基本通讯规则

  1. 总线上的START和STOP停止信号必定是唯一的,另外IIC总线标准规定:SDA线的数据变化必须在SCL线的低电平期,SDA线上的数据是稳定的。
  2. 这里除了起始和终止条件,每个时序单元的SCL都是低电平开始,低电平结束。

1)起始信号S

  • 当SCL(serial Clock Line)为高电平的时候,SDA(Serial Data)从高电平变成了低电平。

2)停止信号P

  • 当SCL(serial Clock Line)为高电平的时候,SDA从低电平变为高电平。

3)发送数据(一个字节)

  • SCL低电平期间,主机将数据位依次放到SDA线上然后释放SCL,从机在SCL高电平期间读取数据位,所以SCL高电平期间SDA不允许有数据变化,依次循环8次,即可发送一个字节。

4)接收数据(一个字节)

  • 在SCL低电平期间,从机将数据位依次放到SDA上,然后释放SCL,主机将在SCL高电平期间读取数据位,所以SCL高电平期间SDA不允许有变化,依次循环上述过程8次,即可接收一个字节。

5)发送应答

  • 主机在接收完一个字节之后,在下一个时钟发送一位数据,数据0表示应答,数据1表示非应答。

6)接收应答

  • 主机在发送完一个字节之后,在下一个时钟接收一位数据,判断从机是否应答,数据0表示应答,1表示非应答。
  • 发送和应答机制和发送接收字节的原理是一样的,只是发送应答机制变成了发送一位数据。

7)模式切换

  • 如果主机发送完字节后,要确定从机是否接收到数据,那么就要将主机切换成输入模式。
  • 主机立即拉高SDA电平(释放控制权),从机立刻拉低SDA电平(获得控制权),所以主机接收到的是从机拉低后的低电平,这就是数据0表示应答的原因。

六. 什么是上拉电阻

  • 它是一种电阻器,当外部电路没有输入信号时,它可以将内部引脚的电平拉高到高电平,通常是3.3V或者5.0V。
  • 上拉电阻(Pull-up Resistor)主要功能就是在总线上没有信号的时候,提供一个固定的电平,以确保数据线上的电平稳定,从而保证数据传输的可靠性。
  • 对于标准模式的(100kHz)的IIC总线,上拉电阻可以选择4.7K欧姆或者10K欧姆,对于快速模式或者更高速率的IIC总线,可能需要更小的上拉电阻。

七. IIC通信步骤

1)主机发出起始信号

  • 主机首先需要发出起始信号来占用总线。这通常是在SCL为高电平的时候,将SDA从高电平拉低来完成。

2)发送设备地址和读写控制位

  • 主机发送一个字节的数据,其中高7位为设备的地址,最后一位是读写控制位(R/W位),读写控制位为0时,表示主机要向从设备发送数据(写操作),读写控制位为1时,表示主机要从从设备读取数据(读操作)。

3)等待从机应答

  • 主机发送完设备地址和读写控制位后,等待从机信号应答。如果从机的地址与主机发送的地址匹配,并且准备好就行通信,它会发送一个应答信号ACK给主机。这个应答信号是在SCL为高电平时,通过拉低SDA电平(从高电平变为低电平)来表示的。

4)传输数据

  • 一旦建立了连接,主机就可以通过SDA线向从机发送数据,数据在SCL的每个时钟周期内传输一位。
  • 数据发送的顺序是从最高位到最低位发送(MSB->LSB)。

5)通信结束

  • 通信结束后,主机发送停止信号来释放总线。

八. IIC注意事项

  1. 起始信号和终止信号都是由主机来发送。
  2. 在I2C总线进行数据传输时,SCL为高电平期间,SDA线上的数据必须保持稳定,只有在SCL为低电平的时候,SDA上面的高电平或低电平状态才允许变化。
  3. 数据传送格式:主机发送给从机;每一个字节必须保证是8个位的长度,数据传输时先传送最高位(MSB),每一个被传送的字节后面都必须跟随一位应答位(即一帧一共有9位)。
  4. 应答信号包括ACK和NACK两种。
  5. 作为数据接收端,在I2C传输中接收到一个字节数据或者地址后,若希望对方继续发送的话,需要向对方发送ACK信号;向对方发送非应答NACK信号的时候,发送方就会产生一个停止信号,结束信号传输。

九. IIC总线寻址

  • 主机发送地址时,总线上的每个从机都将这7位地址码与自己的地址进行比较,若相同则认为自己正在被主机寻址,根据RW位将自己确定为发送器还是接收器。
  • 每次数据传送总是由主机产生终止信号来结束。但是若主机希望继续占用总线进行新的数据传送,则可以不产生终止信号,马上再次发出起始信号对另一从机进行寻址。
  • 每个设备都必须有一个唯一的7位地址,其中最高位是固定的0,剩余7位由设备厂商指定。
    SDA和SCL两条总线同时在高电平下,那么IIC总线目前在空闲状态。

十. IIC总线通讯协议与CAN对比

  1. CAN和IIC都具备总线仲裁和冲突检测,都是半双工,都是串行两线的总线,都是多主机总线(多个设备之间通信)。
  2. CAN是异步通信,而IIC因为有ACK的报文存在,所以算是同步通信。
  3. I2C使用了上拉电阻,抗干扰能力比不上CAN,一般只能用于同一块板上的通信。
  4. I2C的报文中包含有地址信息,CAN报文中没有地址信息,所以在系统柔软性上,在CAN总线上添加单元时,其他单元的软硬件和应用层都不需要进行改变。
  5. CAN总线采用多主结构,不分主从;IIC总线支持一主多从和多主多从。

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

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

相关文章

【LinkedList与链表】

目录 1,ArrayList的缺陷 2,链表 2.1 链表的概念及结构 2.2 链表的实现 2.2.1 无头单向非循环链表实现 3,LinkedList的模拟实现 3.1 无头双向链表实现 4,LinkedList的使用 4.1 什么是LinkedList 4.2 LinkedList的使用 5…

第4天:用户认证系统实现

第4天:用户认证系统实现 目标 实现用户认证系统,包括用户注册、登录、登出和密码管理。 任务概览 使用Django内置的用户认证系统。创建用户注册和登录表单。实现用户登出和密码重置功能。 详细步骤 1. 使用Django内置的用户认证系统 Django提供了…

上位机图像处理和嵌入式模块部署(h750 mcu和ad/da电路)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 大部分同学学习mcu的时候,都会把重点放在232、485、can、usb、eth这些常规的通信接口上面。还有一部分同学,可能会对lcd、c…

【Java基础5】JDK、JRE和JVM的区别与联系

JDK、JRE和JVM的区别与联系 Java是一种广泛使用的编程语言,它的跨平台特性得益于Java虚拟机(JVM)。然而,在Java的世界里,JDK、JRE和JVM这三个术语常常让人感到困惑。本文将阐述它们各自的功能,以及它们是如…

【設計モードの特性に基づく動的ルーティングマッピングモード】

ASP.NET Coreでは、HTTP要求を対応するコントローラ操作にマッピングするためのルーティングはコア機能の1つです。「ルーティング駆動設計モデル」は私が作りあげたばかりの設計モデル名ですが、ASPに基づくことができます。NET Coreのルーティング特性は、ルーティングを中心…

Codeforces Round 953 (Div. 2 ABCDEF题) 视频讲解

A. Alice and Books Problem Statement Alice has n n n books. The 1 1 1-st book contains a 1 a_1 a1​ pages, the 2 2 2-nd book contains a 2 a_2 a2​ pages, … \ldots …, the n n n-th book contains a n a_n an​ pages. Alice does the following: She …

【HTML01】HTML基础-基本元素-附带案例-作业

文章目录 HTML 概述学HTML到底学什么HTML的基本结构HTML的注释的作用html的语法HTML的常用标签:相关单词参考资料 HTML 概述 英文全称:Hyper Text Markup Language 中文:超文本标记语言,就将常用的50多个标记嵌入在纯文本中&…

spark常见面试题

文章目录 1.Spark 的运行流程?2.Spark 中的 RDD 机制理解吗?3.RDD 的宽窄依赖4.DAG 中为什么要划分 Stage?5.Spark 程序执行,有时候默认为什么会产生很多 task,怎么修改默认 task 执行个数?6.RDD 中 reduce…

从0到1上线小程序的步骤

文章目录 一、开发前的准备二、开发中三、开发完成的上线部署相关资料和网址 开发一个小程序(例如微信小程序)涉及到多个阶段,每个阶段都有特定的步骤和要求。以下是详细的步骤及相关资料和网址,帮助你在开发前、开发中和开发完成…

镜像源问题:pip,npm,git,Linux,docker

镜像源的作用 提高下载速度:镜像源通常位于全球不同的地理位置,用户可以选择离自己最近的镜像源下载软件或更新,从而大大提高下载速度和效率。 负载均衡:通过将下载请求分散到多个镜像源,可以减轻主服务器的负载&…

RabbitMQ 入门

目录 一:什么是MQ 二:安装RabbitMQ 三:在Java中如何实现MQ的使用 RabbitMQ的五种消息模型 1.基本消息队列(BasicQueue) 2.工作消息队列(WorkQueue) 3. 发布订阅(Publish、S…

RIP、OSPF、IS-IS学习

文章目录 RIP (Routing Information Protocol) 路由信息协议OSPF (Open Shortest Path First) 开放最短路径优先IS-IS (Intermediate System to Intermediate System) 中间系统到中间系统 RIP (Routing Information Protocol) 路由信息协议 特性: 基于距离向量&am…

设计模式-面向对象设计原则

设计模式-面向对象的设计原则 依赖倒置原则开闭封闭原则单一职责原则Liskov替换原则接口隔离原则面向对象优先使用对象组合,而不是类继承。封装变化点针对接口编程,而不是针对实现编程 变化是复用的天地。面向对象设计最大的优势在于抵御变化。 重新认识…

【论文阅读】Multi-Camera Unified Pre-Training via 3D Scene Reconstruction

论文链接 代码链接 多摄像头三维感知已成为自动驾驶领域的一个重要研究领域,为基于激光雷达的解决方案提供了一种可行且具有成本效益的替代方案。具有成本效益的解决方案。现有的多摄像头算法主要依赖于单目 2D 预训练。然而,单目 2D 预训练忽略了多摄像…

【深度学习】GPT-3,Language Models are Few-Shot Learners(一)

论文: https://arxiv.org/abs/2005.14165 摘要 最近的研究表明,通过在大规模文本语料库上进行预训练,然后在特定任务上进行微调,可以在许多NLP任务和基准上取得显著的进展。虽然这种方法在结构上通常是任务无关的,但…

走进Web3时代的物联网领域:科技的无限可能

随着Web3技术的迅速发展,物联网(IoT)领域正迎来一场深刻的变革。本文将深入探讨Web3时代如何重新定义物联网的边界和未来发展的无限可能性,从技术原理到应用案例,为读者呈现一个充满挑战和机遇的全新科技景观。 1. Web…

GPU微架构综述

GPU微架构综述 摘要 图形处理单元(GPU)已成为现代计算系统中的关键组成部分,不仅在图形渲染方面发挥重要作用,还广泛应用于高性能计算、机器学习和科学计算等领域。本文综述了GPU微架构的发展历程和设计理念,探讨了其…

ffmpeg压缩视频

最近需要压缩视频,windows下没找到好的工具(大部分工具需要收费),于是想到通过ffmpeg工具进行压缩;ffmpeg不仅是一款强大的视频、图片处理工具,还是一款开源的多媒体框架。 windows下可以下载ffmpeg&#…

【数据结构】练习集

数据的逻辑结构说明数据元素之间的顺序关系,它依赖于计算机的存储结构。(F) 在顺序表中逻辑上相邻的元素,其对应的物理位置也是相邻的。(T) 若一个栈的输入序列为{1, 2, 3, 4, 5},则不可能得到…

mediasoup源码分析(三)channel创建及信令交互

mediasoup源码分析--channel创建及信令交互 概述跨职能图业务流程图代码剖析 概述 在golang实现mediasoup的tcp服务及channel通道一文中,已经介绍过信令服务中tcp和channel的创建,本文主要讲解c中mediasoup的channel创建,以及信令服务和medi…