企业号介绍

全部
  • 全部
  • 产品
  • 方案
  • 文章
  • 资料
  • 企业

广东微电科技有限公司

50内容数 6321看过 8粉丝

广东微电位于南海狮山,总部东方微电2018年成立于光谷。公司2019年被评为国家高新技术企业,产品包括传感芯片、采集模组、控制器、磁探头。

SPI、UART、I2C通信的区别与应用

12-16 104人看过

?

 串行 VS 并行

 

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

 

数据位可以通过并行或串行的形式进行传输。 在并行通信中,数据位在导线上同时传输。下图显示了二进制(01000011)中字母“C”的并行传输:

 

图片

?

 

在串行通信中,位通过单根线一一发送。下图显示了二进制(01000011)中字母“C”的串行传输:

 

图片

?

 

 

SPI通信

 

SPI是一种常见的设备通用通信协议。它有一个独特优势就是可以无中断传输数据,可以连续地发送或接收任意数量的位。而在I2C和UART中,数据以数据包的形式发送,有着限定位数。

 

在SPI设备中,设备分为主机与从机系统。主机是控制设备(通常是微控制器),而从机(通常是传感器,显示器或存储芯片)从主机那获取指令。

 

一套SPI通讯共包含四种信号线:MOSI (Master Output/Slave Input) – 信号线,主机输出,从机输入。MISO (Master Input/Slave Output) – 信号线,主机输入,从机输出。SCLK (Clock) – 时钟信号。SS/CS (Slave Select/Chip Select) – 片选信号。

 

图片

?

 

SPI协议特点

实际上,从机的数量受系统负载电容的限制,它会降低主机在电压电平之间准确切换的能力。

 

工作原理

 

时钟信号

每个时钟周期传输一位数据,因此数据传输的速度取决于时钟信号的频率。 时钟信号由于是主机配置生成的,因此SPI通信始终由主机启动。 

设备共享时钟信号的任何通信协议都称为同步。SPI是一种同步通信协议,还有一些异步通信不使用时钟信号。 例如在UART通信中,双方都设置为预先配置的波特率,该波特率决定了数据传输的速度和时序。

 

片选信号

主机通过拉低从机的CS/SS来使能通信。 在空闲/非传输状态下,片选线保持高电平。在主机上可以存在多个CS/SS引脚,允许主机与多个不同的从机进行通讯。

 

图片

?

 

如果主机只有一个片选引脚可用,则可以通过以下方式连接这些从器件:

 

图片

?

 

MOSI和MISO

主机通过MOSI以串行方式将数据发送给从机,从机也可以通过MISO将数据发送给主机,两者可以同时进行。所以理论上,SPI是一种全双工的通讯协议。

 

传输步骤

 

1. 主机输出时钟信号

图片

?

 

2. 主机拉低SS / CS引脚,激活从机

图片

?

 

3. 主机通过MOSI将数据发送给从机

图片

?

 

4. 如果需要响应,则从机通过MISO将数据返回给主机

图片

?

 

使用SPI有一些优点和缺点,如果在不同的通信协议之间进行选择,则应根据项目要求进行充分考量。

 

优劣

 

优点

SPI通讯无起始位和停止位,因此数据可以连续流传输而不会中断;没有像I2C这样的复杂的从站寻址系统,数据传输速率比I2C更高(几乎快两倍)。独立的MISO和MOSI线路,可以同时发送和接收数据。

 

缺点

SPI使用四根线(I2C和UART使用两根线),没有信号接收成功的确认(I2C拥有此功能),没有任何形式的错误检查(如UART中的奇偶校验位等)。

 

图片

?

 

UART代表通用异步接收器/发送器也称为串口通讯,它不像SPI和I2C这样的通信协议,而是微控制器中的物理电路或独立的IC。

 

UART的主要目的是发送和接收串行数据,其最好的优点是它仅使用两条线在设备之间传输数据。UART的原理很容易理解,但是如果您还没有阅读SPI 通讯协议,那可能是一个不错的起点。

 

UART通信

 

 

在UART通信中,两个UART直接相互通信。 发送UART将控制设备(如CPU)的并行数据转换为串行形式,以串行方式将其发送到接收UART。只需要两条线即可在两个UART之间传输数据,数据从发送UART的Tx引脚流到接收UART的Rx引脚:

 

 

图片

?

 

 

UART属于异步通讯,这意味着没有时钟信号,取而代之的是在数据包中添加开始和停止位。这些位定义了数据包的开始和结束,因此接收UART知道何时读取这些数据。 

 

当接收UART检测到起始位时,它将以特定波特率的频率读取。波特率是数据传输速度的度量,以每秒比特数(bps)表示。两个UART必须以大约相同的波特率工作,发送和接收UART之间的波特率只能相差约10%。

 

图片

?

 

工作原理

 

发送UART从数据总线获取并行数据后,它会添加一个起始位,一个奇偶校验位和一个停止位来组成数据包并从Tx引脚上逐位串行输出,接收UART在其Rx引脚上逐位读取数据包。

 

 

图片

?

 

 

UART数据包含有1个起始位,5至9个数据位(取决于UART),一个可选的奇偶校验位以及1个或2个停止位:

 

 

图片

?

 

起始位:

UART数据传输线通常在不传输数据时保持在高电压电平。开始传输时发送UART在一个时钟周期内将传输线从高电平拉低到低电平,当接收UART检测到高电压到低电压转换时,它开始以波特率的频率读取数据帧中的位。

 

数据帧:

数据帧内包含正在传输的实际数据。如果使用奇偶校验位,则可以是5位,最多8位。如果不使用奇偶校验位,则数据帧的长度可以为9位。 

 

校验位:

奇偶校验位是接收UART判断传输期间是否有任何数据更改的方式。接收UART读取数据帧后,它将对值为1的位数进行计数,并检查总数是偶数还是奇数,是否与数据相匹配。

 

停止位:

为了向数据包的结尾发出信号,发送UART将数据传输线从低电压驱动到高电压至少持续两位时间。

 

传输步骤

 

1. 发送UART从数据总线并行接收数据: 

 

图片

?

 

2.发送UART将起始位,奇偶校验位和停止位添加到数据帧:

图片

?

 

3.整个数据包从发送UART串行发送到接收UART。接收UART以预先配置的波特率对数据线进行采样:

图片

?

 

4.接收UART丢弃数据帧中的起始位,奇偶校验位和停止位:

图片

?

 

5.接收UART将串行数据转换回并行数据,并将其传输到接收端的数据总线:

图片

?

 

优劣

 

没有任何通信协议是完美的,但是UART非常擅长于其工作。以下是一些利弊,可帮助您确定它们是否适合您的项目需求:

 

优点

仅使用两根电线

无需时钟信号

具有奇偶校验位以允许进行错误检查

只要双方都设置好数据包的结构

有据可查并得到广泛使用的方法

 

缺点

数据帧的大小最大为9位

不支持多个从属系统或多个主系统

每个UART的波特率必须在彼此的10%之内

 

I2C通信

 

I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可传送信息。它结合了 SPI 和 UART 的优点,您可以将多个从机连接到单个主机(如SPI那样),也可以使用多个主机控制一个或多个从机。当您想让多个微控制器将数据记录到单个存储卡或将文本显示到单个LCD时,这将非常有用。

 

图片

?

 

SDA (Serial Data) – 数据线。

SCL (Serial Clock) – 时钟线。

I2C是串行通信协议,因此数据沿着SDA一点一点地传输。与SPI一样,I2C也需要时钟同步信号且时钟始终由主机控制。

 

图片

?

 

工作原理

 

I2C的数据传输是以多个msg的形式进行,每个msg都包含从机的二进制地址帧,以及一个或多个数据帧,还包括开始条件和停止条件,读/写位和数据帧之间的ACK / NACK位:

 

图片

?

 

启动条件:当SCL是高电平时,SDA从高电平向低电平切换。

停止条件:当SCL是高电平时,SDA由低电平向高电平切换。

 

图片

?

 

地址帧:每个从属设备唯一的7位或10位序列,用于主从设备之间的地址识别。

读/写位:一位,如果主机是向从机发送数据则为低电平,请求数据则为高电平。

ACK/NACK:消息中的每个帧后均带有一个ACK/NACK位。如果成功接收到地址帧或数据帧,接收设备会返回一个ACK位用于表示确认。

 

寻址

由于I2C没有像SPI那样的片选线,因此它需要使用另一种方式来确认某一个从设备,而这个方式就是 —— 寻址 。

 

主机将要通信的从机地址发送给每个从机,然后每个从机将其与自己的地址进行比较。如果地址匹配,它将向主机发送一个低电平ACK位。如果不匹配,则不执行任何操作,SDA线保持高电平。

 

读/写位 

地址帧的末尾包含一个读/写位。如果主机要向从机发送数据,则为低电平。如果是主机向从机请求数据,则为高电平。

 

数据帧

当主机检测到从机的ACK位后,就可以发送第一个数据帧了。数据帧始终为8位,每个数据帧后紧跟一个ACK / NACK位,来验证接收状态。当发送完所有数据帧后,主机可以向从机发送停止条件来终止通信。

 

传输步骤

 

1. 在SCL线为高电平时,主机通过将SDA线从高电平切换到低电平来启动总线通信。

 

2. 主机向总线发送要与之通信的从机的7位或10位地址,以及读/写位:

图片

?

 

3. 每个从机将主机发送的地址与其自己的地址进行比较。如果地址匹配,则从机通过将SDA线拉低一位返回一个ACK位。如果主机的地址与从机的地址不匹配,则从机将SDA线拉高。

图片

?

 

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

图片

?

 

5. 传输完每个数据帧后,接收设备将另一个ACK位返回给发送方,以确认已成功接收到该帧:

图片

?

 

6. 随后主机将SCL切换为高电平,然后再将SDA切换为高电平,从而向从机发送停止条件。

 

单个主机VS多个从机

由于I2C使用寻址功能,可以通过一个主机控制多个从机。使用7位地址时,最多可以使用128(27)个唯一地址。使用10位地址并不常见,但可以提供1,024(210)个唯一地址。如果要将多个从机连接到单个主机时,请使用4.7K欧的上拉电阻将它们连接,例如将SDA和SCL线连接到Vcc:

 

图片

?

 

多个主机VS多个从机

I2C支持多个主机同时与多个从机相连,当两个主机试图通过SDA线路同时发送或接收数据时,就会出现问题。因此每个主机都需要在发送消息之前检测SDA线是低电平还是高电平。如果SDA线为低电平,则意味着另一个主机正在控制总线。如果SDA线高,则可以安全地发送数据。如果要将多个主机连接到多个从机,请使用4.7K欧的上拉电阻将SDA和SCL线连接到Vcc:

 

图片

?

 

优劣

 

与其他协议相比,I2C可能听起来很复杂。以下是一些利弊,可帮助您确定它们是否适合您的项目需求:

 

优点

仅使用两根电线

支持多个主机和多个从机

每个UART的波特率必须在彼此的10%之内

硬件比UART更简单

众所周知且被广泛使用的协议

 

缺点

数据传输速率比SPI慢

数据帧的大小限制为8位

 

 


 

?

最近浏览过的用户(0查看全部

为你推荐

  • 深入了解磁传感器和加速度传感器2022-03-24 14:53

    何谓传感器(Sensor)? 传感器(Sensor)是指将收集到的信息转换成设备能处理的信号的元件或装置。 人类会基于视觉、听觉、嗅觉、触觉获得的信息进行行动,设备也一样,根据传感器获得的信息进行控制或处理。 传感器收集转换的信号(物理量)有温度、光、颜色、气压、磁力、速度、加速度等。 这些利用了半导体的物质变化,除此之外,还有利用酶和微生物等生物物质的生物传感器。IoT与传感器 所有物体都连接互
  • AHRS和IMU的联系和区别2022-03-24 14:48

    AHRS和IMU的测量元件基本上相同,但由于AHRS的参考系统不同,AHRS相比IMU要多出个磁力计。在AHRS进行运动轨迹和状态监测时,由于陀螺仪时漂的问题,在对运动过程中的旋转角度进行积分时,会随着时间推移而误差越来越大,因此,需要磁力计及时对运动的地理方位角度进行校准。
    IMU AHRS 19人看过
  • 嵌入式与单片机之间的关系2022-03-16 09:42

    嵌入式系统就是软硬件共同发展的一个结晶;今天嵌入式系统的发展,也越来越紧密地跟随着计算机软件技术的发展了。单片机是嵌入式系统的载体,嵌入式系统利用单片机提供的各种资源,实现灵活控制,广泛应用于各种领域,尤其是进入到我们生活中的方方面面。
    单片机 84人看过
  • 工业互联网中的传感器网络应用2022-03-14 16:06

    ?“‘中国制造2025’和‘互联网+’是不可分割的,要使中国制造向智能化的方向发展,必须依靠互联网,依靠云计算,依靠大数据,这样才能使中国200多项产量占世界第一的工业产品能够跃上新的水平。”李总理在会见2016夏季达沃斯论坛企业家时说。?工业互联网通过工业资源的网络互连、数据互通和系统互操作,实现制造原料的灵活配置、制造过程的按需执行、制造工艺的合理优化和制造环境的快速适应,达到资源的高效利用,
    传感器 电子罗盘 20人看过
  • 电子罗盘全详解2022-03-09 10:44

    目前, 导航系统在汽车、航海、航空等领域已经得到广泛的应用。电子罗盘是导航系统不可缺少的重要组成部分。
    电子罗盘 陀螺仪 112人看过
  • 角度传感器详解2022-03-09 09:23

    角度传感器的定义 角度传感器是指能感受被测角度并转换成可用输出信号的传感器。角度传感器,顾名思义,是用来检测角度的。它的身体中有一个孔,可以配合乐高的轴。当连结到RCX上时,轴每转过1/16圈,角度传感器就会计数一次。往一个方向转动时,计数增加,转动方向改变时,计数减少。计数与角度传感器的初始位置有关。当初始化角度传感器时,它的计数值被设置为0,如果需要,
    角度传感器 115人看过
  • 嵌入式开发常见通信协议2022-02-28 17:03

    本文介绍了几个可用的物联网通信协议,它们具有不同的性能、数据速率、覆盖范围、功率和内存,而且每一种协议都有各自的优点和或多或少的缺点。其中一些通信协议只适合小型家用电器,而其他一些通信协议则可以用于大型智慧城市项目。
  • 一文读懂电子罗盘的原理、校准和应用2022-02-16 15:17

    详细讲解了电子罗盘的工作原理、系统组成、应用领域和校准方法,有兴趣的朋友可以阅读一下,有问题可以在评论区留言或者私信我,方便的话麻烦点个赞。
  • 姿态传感器和IMU的联系和区别2022-02-15 16:35

    围绕航向姿态参考系统(英文简称AHRS)和惯性测量单元(英文简称IMU),来介绍一下,AHRS和IMU的在利用加速度传感器、陀螺仪、磁力计等传感器进行惯性测量等方面的联系与区别,以及它们各自的适用领域。
  • 数据采集器详解2022-01-12 15:40

    使用ARM处理器,通过转发或模拟常见热敏打印机、票据打印机、POS机、彩票机等,实现采集主机下发的打印数据的功能,其数据输出接口支持有线太网口、无线WIFI或4G接口。具备实时采集、自动存储、即时显示、即时反馈、自动处理、自动传输功能。为现场数据的真实性、有效性、实时性、可用性提供了保证。
  • 数据采集盒2021-10-29 15:28

    产品型号:DF-CO-100 供电电压:5~12V 支持系统:Win7/8/10,MacOSX,Linux,Android 支持:串口、并口、USB口打印机 支持:即插即用,主机无需安装额外驱动程序 支持:边打边采、无纸化打印采集
  • 组合导航2021-10-29 15:07

    产品型号:DF-IN-100 定向精度:0.8° 动态对准 水平姿态精度:0.05° RMS 速度精度:0.1m/s 方位精度:1° 位置精度:RTK:0.02 RMS ,单点:1.5m RMS
  • 倾角传感器2021-10-29 15:02

    产品型号:SEC-501 分辨率:0.01° 供电电压:9~35V 最高精度:0.3°(静态) 0.5°(动态) 量程:正负90° 防护等级:IP67防水等级
  • 九轴电子罗盘2021-10-29 14:47

    产品型号:DF-EC-100 航向精度:小于等于0.5°(RMS) 分辨率:0.01° 重复性:0.05° 俯仰精度:0.3° 俯仰倾斜范围:正负85°
  • 九轴姿态传感器2021-10-29 10:00

    产品型号:DF-AS-100 航向精度:小于0.3°(RMS) 分辨率:0.01° 重复性:0.1° 俯仰精度:0.2° 俯仰倾斜范围:正负85°
她的小梨涡完整版免费阅读