深圳市京柏微科技有限公司从事电子元器件代理销售业务,为客户提供从选型评估、开发设计、测试认证到量产防伪,贯穿产品全生命周期的专业技术与服务。
新闻中心

原装畅销·品牌齐全·海量型号·库存充足

新闻中心

News Center

联系我们

Contact us
联系我们

深圳京柏微科技有限公司

联系人:麦小姐
电话:0755-86520852 
传真:0755-86520852  
手机:18124163678
地址:深圳市南山区桃源街道平山社区平山一路2号南山云谷创业园二期6栋308

技术问题

您当前的位置:首页 > 技术文章 > 技术问题
分类

麦歌恩小课堂|SPI、UART、I2C通信的区别与应用!

时间:2022-10-20       发布人:京柏微       点击量:

电子设备之间的通信就像人类之间的交流,双方都需要说相同的语言。在电子产品中,这些语言称为通信协议。

串行 VS 并行


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


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

image.png

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

image.png

SPI通信


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


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


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

image.png

SPI协议特点

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

工作原理


时钟信号

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

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


片选信号

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

image.png

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

image.png

MOSI和MISO

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


传输步骤



1. 主机输出时钟信号

image.png

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


image.png

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


image.png

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


image.png

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


优劣


优点

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


缺点

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

image.png

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


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

UART通信


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

image.png

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


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

image.png

工作原理

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

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

起始位:


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


数据帧:


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


校验位:


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

更多 >>联系方式

麦姐: 0755-86520852  
邮箱:jupwill@126.com
地址:深圳市南山区桃源街道平山社区平山一路2号南山云谷创业园二期6栋308

官方微信

官方微信
扫一扫关注微信
了解更多精彩详情
深圳市京柏微科技有限公司 | 粤ICP备16122434号技术支持:深圳市京柏微科技有限公司 - 传感器 - 电源芯片