技术老兵分享:UART、SPI、I2C通信协议超全入门教程

嵌入式ARM 2023-10-19 12:02



I2C通信协议基础

3.1   通信简介

I²CInter-Integrated Circuit),中文应该叫集成电路总线,它是一种串行通信总线,使用多主从架构,是由飞利浦公司在1980年代初设计的,方便了主板、嵌入式系统或手机与周边设备组件之间的通讯。

由于其简单性,它被广泛用于微控制器与传感器阵列、显示器、IoT设备、EEPROM等之间的通信。结合了SPIUART的最佳功能使用 ,您可以将多个从机连接到单个主机(类似 SPI)。

另外,您可以让多个主机控制单个或多个从机。当您希望多个微控制器将数据记录到单个存储卡或将文本显示到单个 LCD 时,这个特性就非常有用了。与UART 通信一样, 仅使用两根电线在设备之间传输数据:


SDA (Serial Data) – 这条线为主机和从机提供数据发送和接收功能。

SCL (Serial Clock) – 这条线为时钟信号线。

 SPI 一样,I2C 是同步的,因此位的输出通过主机和从机之间共享的时钟信号同步到位的采样。时钟信号总是由主机控制。


  
使用线数
  
2
最大速度
标准模式(Standard  mode)   =100kbps
快速模式(Fast  mode)       =400kbps
高速模式(High  speed mode)=3.4Mbps
超快速模式(Ultra  fast mode)=5Mbps
同步/异步
同步
串行/并行
串行
最大主机数
不限制
最大从机数
1008


3.2 的工作原理(HOW WORKS)


使用 ,数据在消息中传输。消息被分解成数据帧。每条消息都有一个地址帧,其中包含从机的二进制地址,以及一个或多个包含正在传输数据的数据帧。该消息还包括每个数据帧之间的启动和停止条件、读/写位以及ACK/NACK位:



  • 启动条件(StartCondition):SDA 线在SCL线从高到低切换之前从高电位切换到低电位。


  • 停止条件(StopCondition):SDA 线在SCL线从低到高切换之后从低电位切换到高电位。


  • 地址帧(AddressFrame):每个从机都有唯一的7位或10位数列,主机可以通过该序列识别从机,主机如果需要向从机发送/接收数据,首先要发送对应从机的地址,然后会匹配总线上挂载的从机的地址。


  • /写位(Read/Write Bit):指定主机是向从机发送数据(低电位)还是请求从机发送数据(高电位)的1个位。


  • ACK/NACK位(ACK/NACK Bit):在一条消息中,每一帧后都跟随1个确认应答(ACK)/非确认应答(NACK)位。如果一个地址帧或数据帧是被成功接收,一个确认应答位(ACK bit)将从接收设备返回给发送设备。


3.3  寻址(ADDRESSING)


没有像SPI这样的从机片选接口线,所以它需要另一种方式让从机知道数据被发送到它,而不是另一个从机。它需要通过寻址来实现。地址帧始终是新消息中开始位后的第一帧。


主机将它想要与之沟通的从机的地址发送给与之相连的每一个从机。然后,每个从机将从主机发送的地址与自己的地址进行比较。如果地址匹配,它会向主发送低电压ACK位。如果地址不匹配,从机什么都不做,SDA线仍然很高。


3.4  读/写位(READ/WRITE BIT)


在地址帧的末尾包含一个单独的位,用于通知从机,主机是否想向它写数据还是想从它接收数据。如果主机要将数据发送给从机,读/写位是低电位;如果主机请求来自从机的数据,则该位为高电位1


3.5  数据帧(THE DATA FRAME)


在主机检测到从机发出的ACK位后,第一个数据帧已准备好发送。


数据帧始终为8位长,并且首先发送最重要的位。每个数据帧后面都立即有ACK/NACK 位,以验证帧是否已成功接收。在发送下一个数据帧之前,主机或从机(取决于谁发送数据)必须接收ACK位。


在发送完所有数据帧后,主机可以向从机发送停止条件以停止传输。停止条件是在SCL线路上从低到高过渡后,SDA线的电压从低到高过渡,SCL线保持高位。


3.6 数据传输的步骤(STEPS OF I2C DATATRANSMISSION)


1. 主机发送启动条件给每一个连接的从机,在SCL线从高到低切换之前,主机将SDA线从高切换到低电平即可触发启动条件,即在SCL高电平时候给SDA一个下降沿,如下图所示,注意箭头的时序方向:



2. 主机发送它想与之沟通的7位或10位从机地址,以及读/写位:



3. 每个从机将从主机发送的地址与自己的地址进行比较。如果地址匹配,则从机通过将SDA 线拉低1个位来返回ACK位。如果主机的地址与从机自己的地址不匹配,则从机会将SDA线留在高电位(通过上拉电阻)。地址匹配的从机返回ACK位如下图所示:



4.主机发送或接收数据帧:



5. 传输每个数据帧后,接收设备会将另一个ACK 位返回给发件人,以确认成功接收帧:



6. 为了停止数据传输,主机发送一个停止条件给从机,通过在SDA拉高之前先拉高SCL,即在SCL高电平时候给SDA一个上升沿,如下图所示,注意箭头表示的传输顺序:



3.7 单主机与多从机(SINGLE MASTER WITH MULTIPLE SLAVES)


由于 使用寻址,因此可以实现单个主机控多个从机。使用7位地址理论上可提供 128(2^7)个唯一地址。使用10位地址并不常见,但理论上可提供1024(2^10)个唯一地址。要将多个从机连接到单个主机,请像下面这样将它们连接起来,并用4.7K Ohm上拉式电阻器将SDASCL线连接到Vcc



3.8  多主机与多从机(MULTIPLE MASTERS WITH MULTIPLE SLAVES)


多个主机可以连接到一个单一的从机或多个从机。在多主机系统总,当两个主机尝试同时通过SDA线发送或接收数据时,问题就出现了。为了解决这个问题,每个主机在传输消息之前需要检测SDA线是低电平还是高电平。如果SDA线为低电平,则意味着另一个主机正控制着总线,该主机应等待发送消息。如果SDA线被拉高,则传输消息是安全的。


要将多个主机连接到多个从机,请按下图连接,并使用4.7K Ohm上拉式电阻器将SDA SCL线连接到Vcc



3.9 的优缺点(ADVANTAGES AND DISADVANTAGES OF )


优势:

  • 仅使用两根电线

  • 支持多个主和多个奴隶

  • ACK/NACK 位确认每个帧都成功传输

  • 硬件不如UART复杂

  • 众所周知和广泛使用的协议


缺点:

  • 数据传输速率低于SPI

  • 数据框架的大小限制为8位

  • 实现所需的硬件比SPI更复杂


3.10 总结


总线由9bit的块构成。开始条件:当SCL是高电平时候SDA从高到底跳变的下降沿,作为开始条件。在总线上的所有从机都要开始注意了:



地址位为紧跟开始条件的7bit数据,主机想要与该地址从机沟通:



读写位为紧跟7bit地址后的第8位作为读写选择位:该位用于表示主机是想读从机的数据还是想往从机里写数据:为1表示读;为0表示写。



主机和从机之间的同步位:0表示ACK1表示NACK0:我在或数据已接收。1:没有我或数据未接收。



数据字节:在地址字节后的8位是来自主机或从机的数据字节。至于来自谁,要看读写位。当写周期,主机发送数据;当读周期,从机发送数据:



停止条件:当SCL是高电平时,数据线SDA从低电平跳变到高电平产生的上升沿作为停止条件。主机通知从机本次沟通结束。



完整的总线协议时序,如下图所示:



3.11 备注


本笔记图中带箭头的表示时序传递的优先顺序,箭头表示数据传输的方向或先发生的时序。1.10小结没有标注箭头,以左侧作为先发生的时序,请勿与前面的图弄混。


声明:本文由21ic论坛网友gaoyang9992006翻译自外网和飞利浦相关技术文档,并辅以自己理解。如需高清版PDF文件,请点击文末“阅读原文”进行查看和下载。


END

作者:gaoyang9992006

来源:21ic论坛


推荐阅读
我用这个技术,干掉几千行if else!
麒麟9000s,并非来自SMIC,而是...
程序员最容易读错的单词,听到status我炸了

→点关注,不迷路←

嵌入式ARM 关注这个时代最火的嵌入式ARM,你想知道的都在这里。
评论
  • 【萤火工场CEM5826-M11测评】OLED显示雷达数据本文结合之前关于串口打印雷达监测数据的研究,进一步扩展至 OLED 屏幕显示。该项目整体分为两部分: 一、框架显示; 二、数据采集与填充显示。为了减小 MCU 负担,采用 局部刷新 的方案。1. 显示框架所需库函数 Wire.h 、Adafruit_GFX.h 、Adafruit_SSD1306.h . 代码#include #include #include #include "logo_128x64.h"#include "logo_
    无垠的广袤 2024-12-10 14:03 71浏览
  •         在有电流流过的导线周围会感生出磁场,再用霍尔器件检测由电流感生的磁场,即可测出产生这个磁场的电流的量值。由此就可以构成霍尔电流、电压传感器。因为霍尔器件的输出电压与加在它上面的磁感应强度以及流过其中的工作电流的乘积成比例,是一个具有乘法器功能的器件,并且可与各种逻辑电路直接接口,还可以直接驱动各种性质的负载。因为霍尔器件的应用原理简单,信号处理方便,器件本身又具有一系列的du特优点,所以在变频器中也发挥了非常重要的作用。  &nb
    锦正茂科技 2024-12-10 12:57 76浏览
  • 智能汽车可替换LED前照灯控制运行的原理涉及多个方面,包括自适应前照灯系统(AFS)的工作原理、传感器的应用、步进电机的控制以及模糊控制策略等。当下时代的智能汽车灯光控制系统通过车载网关控制单元集中控制,表现特殊点的有特斯拉,仅通过前车身控制器,整个系统就包括了灯光旋转开关、车灯变光开关、左LED前照灯总成、右LED前照灯总成、转向柱电子控制单元、CAN数据总线接口、组合仪表控制单元、车载网关控制单元等器件。变光开关、转向开关和辅助操作系统一般连为一体,开关之间通过内部线束和转向柱装置连接为多,
    lauguo2013 2024-12-10 15:53 85浏览
  • RK3506 是瑞芯微推出的MPU产品,芯片制程为22nm,定位于轻量级、低成本解决方案。该MPU具有低功耗、外设接口丰富、实时性高的特点,适合用多种工商业场景。本文将基于RK3506的设计特点,为大家分析其应用场景。RK3506核心板主要分为三个型号,各型号间的区别如下图:​图 1  RK3506核心板处理器型号场景1:显示HMIRK3506核心板显示接口支持RGB、MIPI、QSPI输出,且支持2D图形加速,轻松运行QT、LVGL等GUI,最快3S内开
    万象奥科 2024-12-11 15:42 71浏览
  • 概述 通过前面的研究学习,已经可以在CycloneVGX器件中成功实现完整的TDC(或者说完整的TDL,即延时线),测试结果也比较满足,解决了超大BIN尺寸以及大量0尺寸BIN的问题,但是还是存在一些之前系列器件还未遇到的问题,这些问题将在本文中进行详细描述介绍。 在五代Cyclone器件内部系统时钟受限的情况下,意味着大量逻辑资源将被浪费在于实现较大长度的TDL上面。是否可以找到方法可以对此前TDL的长度进行优化呢?本文还将探讨这个问题。TDC前段BIN颗粒堵塞问题分析 将延时链在逻辑中实现后
    coyoo 2024-12-10 13:28 102浏览
  • 时源芯微——RE超标整机定位与解决详细流程一、 初步测量与问题确认使用专业的电磁辐射测量设备,对整机的辐射发射进行精确测量。确认是否存在RE超标问题,并记录超标频段和幅度。二、电缆检查与处理若存在信号电缆:步骤一:拔掉所有信号电缆,仅保留电源线,再次测量整机的辐射发射。若测量合格:判定问题出在信号电缆上,可能是电缆的共模电流导致。逐一连接信号电缆,每次连接后测量,定位具体哪根电缆或接口导致超标。对问题电缆进行处理,如加共模扼流圈、滤波器,或优化电缆布局和屏蔽。重新连接所有电缆,再次测量
    时源芯微 2024-12-11 17:11 80浏览
  • 习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记
    youyeye 2024-12-10 16:13 110浏览
  • 天问Block和Mixly是两个不同的编程工具,分别在单片机开发和教育编程领域有各自的应用。以下是对它们的详细比较: 基本定义 天问Block:天问Block是一个基于区块链技术的数字身份验证和数据交换平台。它的目标是为用户提供一个安全、去中心化、可信任的数字身份验证和数据交换解决方案。 Mixly:Mixly是一款由北京师范大学教育学部创客教育实验室开发的图形化编程软件,旨在为初学者提供一个易于学习和使用的Arduino编程环境。 主要功能 天问Block:支持STC全系列8位单片机,32位
    丙丁先生 2024-12-11 13:15 50浏览
  • 一、SAE J1939协议概述SAE J1939协议是由美国汽车工程师协会(SAE,Society of Automotive Engineers)定义的一种用于重型车辆和工业设备中的通信协议,主要应用于车辆和设备之间的实时数据交换。J1939基于CAN(Controller Area Network)总线技术,使用29bit的扩展标识符和扩展数据帧,CAN通信速率为250Kbps,用于车载电子控制单元(ECU)之间的通信和控制。小北同学在之前也对J1939协议做过扫盲科普【科普系列】SAE J
    北汇信息 2024-12-11 15:45 88浏览
  • 全球知名半导体制造商ROHM Co., Ltd.(以下简称“罗姆”)宣布与Taiwan Semiconductor Manufacturing Company Limited(以下简称“台积公司”)就车载氮化镓功率器件的开发和量产事宜建立战略合作伙伴关系。通过该合作关系,双方将致力于将罗姆的氮化镓器件开发技术与台积公司业界先进的GaN-on-Silicon工艺技术优势结合起来,满足市场对高耐压和高频特性优异的功率元器件日益增长的需求。氮化镓功率器件目前主要被用于AC适配器和服务器电源等消费电子和
    电子资讯报 2024-12-10 17:09 88浏览
  • 我的一台很多年前人家不要了的九十年代SONY台式组合音响,接手时只有CD功能不行了,因为不需要,也就没修,只使用收音机、磁带机和外接信号功能就够了。最近五年在外地,就断电闲置,没使用了。今年9月回到家里,就一个劲儿地忙着收拾家当,忙了一个多月,太多事啦!修了电气,清理了闲置不用了的电器和电子,就是一个劲儿地扔扔扔!几十年的“工匠式”收留收藏,只能断舍离,拆解不过来的了。一天,忽然感觉室内有股臭味,用鼻子的嗅觉功能朝着臭味重的方向寻找,觉得应该就是这台组合音响?怎么会呢?这无机物的东西不会腐臭吧?
    自做自受 2024-12-10 16:34 141浏览
  • 近日,搭载紫光展锐W517芯片平台的INMO GO2由影目科技正式推出。作为全球首款专为商务场景设计的智能翻译眼镜,INMO GO2 以“快、准、稳”三大核心优势,突破传统翻译产品局限,为全球商务人士带来高效、自然、稳定的跨语言交流体验。 INMO GO2内置的W517芯片,是紫光展锐4G旗舰级智能穿戴平台,采用四核处理器,具有高性能、低功耗的优势,内置超微高集成技术,采用先进工艺,计算能力相比同档位竞品提升4倍,强大的性能提供更加多样化的应用场景。【视频见P盘链接】 依托“
    紫光展锐 2024-12-11 11:50 51浏览
  •         霍尔传感器是根据霍尔效应制作的一种磁场传感器。霍尔效应是磁电效应的一种,这一现象是霍尔(A.H.Hall,1855—1938)于1879年在研究金属的导电机构时发现的。后来发现半导体、导电流体等也有这种效应,而半导体的霍尔效应比金属强得多,利用这现象制成的各种霍尔元件,广泛地应用于工业自动化技术、检测技术及信息处理等方面。霍尔效应是研究半导体材料性能的基本方法。通过霍尔效应实验测定的霍尔系数,能够判断半导体材料的导电类型、载流子浓度及载流子
    锦正茂科技 2024-12-10 11:07 64浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦