SPI、UART和I2C 通信区分和应用

      最后更新:2021-11-30 02:00:12 手机定位技术交流文章

      电子设备之间的通信类似于人与人之间的交流,因为双方必须讲同一种语言,这些语言在电子产品中被称为通信协议。

      互换了关于SPI、UART和I2C通信的单独文章,并进行了一些比较。

      串行 VS 并行

      电子设备通过传输二进制数据槽相互交流。 位元通过电压的快速变化从一个设备传送到另一个设备。 在 5V 工作系统中, “ 0” 通过短脉冲 0V 进行通信, 而“ 1” 通过短脉冲 5V 进行通信。

      影片讨论UART、I2C和SPI。 在平行通讯中,数据位置同时在引导线上传输。 下图显示了二进制(010011)中字母“C”的平行传输:

      图片

      Bits通过连续通信中的单一根线一次传输。下图描述了二进制(010011)中字母“C”的序列传输:

      图片

      SPI通信

      SPI是设备的一个典型的普遍通信协议,其特征是能够不间断地传输数据,连续不断地从任何几个地点发送或接收数据,使用I2C和UART,以固定数字的数据集形式提供数据。

      SPI设备的设备分为主机和机外系统,主机是控制装置(通常是微控制器),指令来自主机(通常是传感器、监视器或存储芯片)。

      MOSI(主输出/奴隶输入) - 机器输入的信号线、主输出。 MISO(主输入/奴隶输出) - 机器输出的信号线、主输出。 SCLK(时钟) - 时钟信号。 SS/CS(奴隶选择/芯片选择) - 片段选择信号。

      图片

      SPI协议特点

      实际上,机器的数量受到系统载荷电容器的限制,这恰恰限制了主机在电压单位之间的转换能力。

      时钟信号

      由于每个时钟周期传输一个数据位,数据传输速度与时钟信号的频率成正比。由于时钟信号是由主机设置生成的,SPI通信总是被启用的。

      同步是指设备交换时钟信号的任何通信协议。 SPI是一个同步的通信协议,并且有各种各样的非同步通信不需要时钟信号。 例如,在UART通信中,双方就预先配置的波特速度达成一致,控制数据传输的速度和时间。

      片选信号

      主机通过降低 CS/SS 进行通信。 片段线在自由/ 非传输状态下保持高水平。 主机上可以有一些 CS/ SS 基点, 使主机能够与各种不同的服务器连接 。

      上传中.. 更改路线已被取消 。

      如果主机只有一个参考脚, 设备可以通过下列方式连接 :

      图片

      MOSI和MISO

      主机通过MOSI向机器连续发送数据,并通过MISO向主机发送数据,两者可以同时进行。 因此,SPI是一项全时通信协议。

      传输步骤

      一. 主机生成的时钟信号

      图片

      二. 东道方推倒SS/CS脚,从机器上启动。

      图片

      三,主机通过MOSI从机器上传送数据

      图片

      四. 如果需要回复,则通过 MISO 将机器的数据返回主机。

      图片

      使用SPI有各种利弊,在决定其他通信协议之间时,应适当重视项目需要。

      SPI优点

      SPI通信没有起停位置,因此数据可以不间断地不断传送;没有像 I2C 那样的复杂的现场搜索算法,数据传输速度更快(几乎快一倍 ) 。 独立的 MISO 和 MOSI 线可以同时发送和接收数据。

      SPI缺点

      SPI有四条线路(I2C和UART有两条线路),没有获得成功确认的信号(I2C包括这一特征),没有检查错误(例如,UART的奇点检查站等等)。

      图片

      UART代表普遍的非同步接收器/传输器,通常称为序列通信,不是像SPI或I2C这样的通信协议,而是微控制器或独立的IC的物理电路。

      UART的基本功能是发送和接收序列数据,其中最主要的部分是它只使用两行线在设备之间传输数据。 UART的前提很简单,但如果你没有读到 SPI 通信协议, 它可能是一个很好的起点。

      UART通信

      两个UARTs在UART通信中直接相互作用。 将UART送至控制设备, 将平行数据( 如CPUs) 转换成序列形式, 并以序列方式将其传送到接收UART。 要在两个UARTs之间传输数据, 只需要两条线, 从Tx到Rx到UART:

      图片

      因为 UART 是一步步连接, 没有时钟信号, 而是被添加到数据包中以开始和停止。 这些位元定义软件包的开始和结束, 因此接收 UART 知道何时读取数据 。

      当在初始位置接收 UART 检测时, 它会以一定的端口速率频率读取 。 波特速率是数据传输速度的量度, 以位数( bps) / 秒来定义 。 两个 UART 必须在相同的端口率左右运行, 即传输和接收的UART 之间只能相差10%左右 。

      图片

      UART工作原理

      当传输 UART 从数据总线获得平行数据时, 它会添加一个起始位置、 一个奇特的检查器和一个停止位, 以构建数据包和输出, 从 Tx 标记到下一行, 接受 UART 的顺序读取 Rx 标记脚上的数据包 。

      图片

      UART数据包括1个起始位置、5至9个数据位置(视UART而定)、一个可选的奇异检查地点和1至2个站点位置:

      图片

      起始位:

      虽然没有传输数据,但UART数据传输线通常保持在高电压水平,在传输数据时,UART奉指示在时钟周期将传输线从高电压降低到低电压,在接收UART发现高电压到低电压转换时,它开始读取在港口速率频率通信数据框架中的数据框架位置,UART数据传输线通常保持在高电压水平,在传输数据时,UART被发送到时钟周期将传输线从高电压降低到低电压,在接收UART发现高电压到低电压转换时,它开始读取港口速频率数据框架的位置。

      数据帧:

      数据框包括所传送的实际数据。如果使用木偶校准,则可能为 5 个位,最多为 8 个位。如果未使用奇数两校准,则数据框可以是 9 个位 。

      校验位:

      奇数检查器在获取 UART 框架后确定传输过程中是否有数据变化。 收到 UART 框架后, 它计算了值为 1 的位数, 并检查总数字是偶数还是奇数, 并与数据匹配 。

      停止位:

      UART传输将数据传输线从低电压推进到高电压至少两小时,以标记包件的末端。

      传输步骤

      接收来自数据总线的数据:

      图片

      2 发送一个 UART 命令, 在数据框中添加开始、 奇数检查和停止位置 :

      图片

      三. 完整的数据包从UART链到接收的UART链交付给接收方。

      图片

      4. 收到UART丢弃数据框架的启动以及奇数检查和停止位置:

      图片

      5. 接收UART将序列数据转换为平行数据并将其广播到数据总线接收端:

      图片

      没有通信协议是无过错的,但UART做了出色的工作。 以下是一些好处和缺点,可以帮助您决定这些好处和缺点是否适合您的项目需求:

      优点

      • 仅使用两根电线

      • 无需时钟信号

      • 无法关闭临时文件夹:%s。

      • 只要双方商定数据包的格式。

      • 已经记录并广泛使用的方法

      缺点

      • 最大数据框大小为 9 位数 。

      • 许多卫星系统或初级系统得不到支持。

      • 每个UART必须有一个10%的港口利率。

      I2C通信

      I2C 客车是一个由 Philips 发明的简单、双向、双向、同步的 Caon 客车。 它只需要两行即可发送信息。 它将 SPI 和 UART 的优点结合起来, 您可以将多个服务器连接到一个主机( 类似 SPI), 或者管理一个或数个服务器, 使用不同的主机 。 如果您想要多个微控制器将数据存储在单个内存卡中, 或者显示 Inmeous 文本的客车是一个由 Philips 发明的简单、 双向、 双向、 同步的连锁客车, 它只需要两行即可发送信息。 它将 SPI 和 UART 的优点结合起来, 您可以将多个服务器连接到一个主机( 类似 SPI), 或者用不同的主机控制一个或多个服务器。 如果您想要多个微控制器将数据记录在单个内存卡中或者显示文本, 这将特别有用 。

      图片

      SDA(序列数据结构) - 数据线

      SCL(序列时钟) - 计时器

      因为 I2C 是一个连续通信协议, 数据会沿着SDA 提供一点点。 I2C 和 SPI 一样, 需要时钟同步信号, 这些信号总是由主机控制的。

      图片

      工作原理

      I2C数据传输由许多信息组成,每个信息都包含计算机和一个或多个数据框架的二进制地址框架,包括起始和停止条件、读/写空格以及数据框架之间的ACK/NACK位数:

      图片

      启动条件:当短链氯化石蜡高时,自失能装置从高向低开关。

      当短链氯化石蜡处于高水平时,自失能场从低水平转向高水平。

      图片

      地址框:每个附属装置仅使用7或10位数的序列来识别主装置之间的地址。

      读/写位数:一,当主机提供来自机器的数据时为低水平,当机器寻求数据时为高水平。

      ACK/NACK: 信件中的每个框架有一个ACK/NACK位数。 如果成功接收到框架地址或数据框架, 接收设备返回 ACK 位数作为确认 。

      寻址

      由于 I2C 缺少像 SPI 这样的行, 它必须依靠另一种方法来识别设备: 位置 。

      主机将信息从地址传送到每台机器,然后将其与自己的地址进行比较。如果地址匹配,主机会向主机发送低水平的ACK位数。如果地址不匹配,则不采取行动,而自失能线则保持高水平。

      读/写位

      读/ 写位置位于地址框的末尾。 当主机向机器发送数据时, 功率水平很低。 当主机向机器询问数据时, 功率水平很高 。

      数据帧

      当主机从机器中检测到 ACK 位置时, 第一个数据框架可能会被交付。 数据框架总是 8 位长, 每个数据框架后面有一个 ACK/ NACK 位数来检查接收状态。 一旦所有数据框架发送完毕, 主机可以通过向机器发送停止状态来终止通信, 向机器发送停止状态, 从机器中检测到 ACK 位置, 第一个数据框架可能会被交付。 数据框架总是 8 位长, 每个数据框架后面有一个 ACK/ NACK 位数来检查接收状态。 一旦所有数据框架发送完毕, 主机可以通过向机器发送停止状态来终止通信 。

      传输步骤

      一. 当SCL线高时,主机主机通过将SDA线从高线改为低线来启动公共汽车通信。

      二. 东道主将7或10个地址从机器转到公共汽车上,以及读/写空档:

      图片

      3个主机的每个地址都与它自己的地址比较。如果地址匹配,请从机器的SDA线中抽出一条,返回到ACK位置。如果地址不匹配,请从机器中抽出SDA线。

      图片

      四. 从主机发送或接收数据框:

      图片

      五. 每个数据框架发送后,接收装置给予发件人另一个ACK位置,以确保正确收到:

      图片

      六. 东道方随后将SCL转换为高水平,将SL转换为DAD转换为高水平,将机器停机状态传送到高水平。

      许多主机对单个主机

      Becausage I2C 使用定位搜索机制,多个存取器可能由单一主机控制。 A 在使用7个主机时,最多可使用128(27)个独有地址。 使用10个地址并不常见,尽管有1 024 (210)个独有地址。 如果您想将不止一台机器连接到一个主机, 则使用 4 。

      图片

      多个存取器相对于多个主机

      I2C 使同时连接多个操作器的许多主机能够同时连接到多个操作器,当两个主机试图同时传输或接收数据时会出现问题。 因此, 每个主机在发送信件前必须确定该主机的线是低还是高。 如果该主机的线是低, 这意味着另一个主机正在控制公交车。 如果该主机的线是高,数据可以安全地传送。 如果该主机同时连接到多个操作器的许多主机,当两个主机试图同时发送或接收数据时会出现问题。 因此,每个主机在发送信件前必须检测该主机的线是低还是高。 如果该主机的线是低,这意味着另一个主机正在控制公交车。 如果该主机的线是高,则数据可以安全地发送。

      图片

      与其他协议相比,I2C可能看起来很困难。以下是一些利弊,可能有助于您评估这些利弊是否适合您的项目需求:

      I2C优点

      • 仅使用两根电线

      • 支持众多主机和操作器

      • 每个UART必须有一个10%的港口利率。

      • 硬件比UART还复杂

      • 一项广为人知和广泛利用的合同。

      I2C缺点

      • 数据传输速度比斯皮指数慢。

      • 数据框大小限于 8 位数 。

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/13915.html

          热门文章

          文章分类