SPI、I2C、UART三种串行总线的原理、区别及应用
SPI协议解析,链接如下
https://blog.csdn.net/weiqifa0/article/details/82765892
I2C协议解析,链接如下
https://blog.csdn.net/weiqifa0/article/details/82765349
串口UART串行总线协议
https://blog.csdn.net/weiqifa0/article/details/82699881
杂文
SPI、I2C、串口、我相信如果你是从事的是嵌入式开发,一定会用到这三种通信协议,串口的话因为和波特率有关,所以一般的CPU或者MCU只会配有两个或者三个串口,而数据的传输,的话SPI和I2C用得会比较多,下面找到了一篇博客。转过来、
详细解释区别
1、UART就是两线,一根发送一根接收,可以全双工通信,线数也比较少。数据是异步传输的,对双方的时序要求比较严格,通信速度也不是很快。在多机通信上面用的最多。
2、SPI接口和上面UART相比,多了一条同步时钟线,上面UART的缺点也就是它的优点了,对通信双方的时序要求不严格不同设备之间可以很容易结合,而且通信速度非常快。一般用在产品内部元件之间的高速数据通信上面,如大容量存储器等。
3、I2C接口也是两线接口,它是两根线之间通过复杂的逻辑关系传输数据的,通信速度不高,程序写起来也比较复杂。一般单片机系统里主要用来和24C02等小容易存储器连接。
SPI:高速同步串行口。3~4线接口,收发独立、可同步进行
UART:通用异步串行口。按照标准波特率完成双向通讯,速度慢
SPI:一种串行传输方式,三线制,网上可找到其通信协议和用法的
3根线实现数据双向传输
串行外围接口 Serial peripheral interface
UART:通用异步收发器
UART是用于控制计算机与串行设备的芯片。有一点要注意的是,它提供了RS-232C数据终
端设备接口,这样计算机就可以和调制解调器或其它使用RS-232C接口的串行设备通信了
。作为接口的一部分,UART还提供以下功能:
将由计算机内部传送过来的并行数据转换为输出的串行数据流。将计算机外部来的串行
数据转换为字节,供计算机内部使用并行数据的器件使用。在输出的串行数据流中加入
奇偶校验位,并对从外部接收的数据流进行奇偶校验。在输出数据流中加入启停标记,
并从接收数据流中删除启停标记。处理由键盘或鼠标发出的中断信号(键盘和鼠票也是
串行设备)。可以处理计算机与外部串行设备的同步管理问题。有一些比较高档的UART
还提供输入输出数据的缓冲区,现在比较新的UART是16550,它可以在计算机需要处理数
据前在其缓冲区内存储16字节数据,而通常的UART是8250。现在如果您购买一个内置的
调制解调器,此调制解调器内部通常就会有16550 UART。
I2C: 能用于替代标准的并行总线,能连接的各种集成电路和功能模块。I2C是多主控总线,所以任何一个设备都能像主控器一样工作,并控制总线。总线上每一个设备都有一个独一无二的地址,根据设备它们自己的能力,它们可以作为发射器或接收器工作。多路微控制器能在同一个I2C总线上共存。
I方C总线:
I2C总线最主要的优点是其简单性和有效性。
由于接口直接在组件之上,因此I2C总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本。总线的长度可高达25英尺,并且能够以10Kbps的最大传输速率支持40个组件。I2C总线的另一个优点是,它支持多主控(multimastering),其中任何能够进行发送和接收的设备都可以成为主总线。一个主控能够控制信号的传输和时钟频率。当然,在任何时间点上只能有一个主控。
UART:
单端,远距离传输。大多数计算机包含两个基于RS232的串口。串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。同时,串口通信协议也可以用于获取远程采集设备的数据。串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总常不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。
具体的适用范围就可多了,军用,医疗...到处到能用。
第一个区别当然是名字:
SPI(Serial Peripheral Interface:串行外设接口);
I2C(INTER IC BUS:意为IC之间总线)
UART(Universal Asynchronous Receiver Transmitter:通用异步收发器)
第二,区别在电气信号线上:
SPI总线由三条信号线组成:串行时钟(SCLK)、串行数据输出(SDO)、串行数据输入(SDI)。SPI总线可以实现多个SPI设备互相连接。提供SPI串行时钟的SPI设备为SPI主机或主设备(Master),其他设备为SPI从机或从设备(Slave)。主从设备间可以实现全双工通信,当有多个从设备时,还可以增加一条从设备选择线。
如果用通用IO口模拟SPI总线,必须要有一个输出口(SDO),一个输入口(SDI),另一个口则视实现的设备类型而定,如果要实现主从设备,则需输入输出口,若只实现主设备,则需输出口即可,若只实现从设备,则只需输入口即可。
I2C总线是双向、两线(SCL、SDA)、串行、多主控(multi-master)接口标准,具有总线仲裁机制,非常适合在器件之间进行近距离、非经常性的数据通信。在它的协议体系中,传输数据时都会带上目的设备的设备地址,因此可以实现设备组网。
如果用通用IO口模拟I2C总线,并实现双向传输,则需一个输入输出口(SDA),另外还需一个输出口(SCL)。(注:I2C资料了解得比较少,这里的描述可能很不完备)
UART总线是异步串口,因此一般比前两种同步串口的结构要复杂很多,一般由波特率产生器(产生的波特率等于传输波特率的16倍)、UART接收器、UART发送器组成,硬件上由两根线,一根用于发送,一根用于接收。
显然,如果用通用IO口模拟UART总线,则需一个输入口,一个输出口。
第三,从第二点明显可以看出,SPI和UART可以实现全双工,但I2C不行;
第四,看看牛人们的意见吧!
wudanyu:I2C线更少,我觉得比UART、SPI更为强大,但是技术上也更加麻烦些,因为I2C需要有双向IO的支持,而且使用上拉电阻,我觉得抗干扰能力较弱,一般用于同一板卡上芯片之间的通信,较少用于远距离通信。SPI实现要简单一些,UART需要固定的波特率,就是说两位数据的间隔要相等,而SPI则无所谓,因为它是有时钟的协议。
quickmouse:I2C的速度比SPI慢一点,协议比SPI复杂一点,但是连线也比标准的SPI要少。
SPI、I2C、UART三种串行总线的原理、区别及应用相关推荐
- SPI、I2C、UART三种串行总线协议的区别和SPI接口介绍(转)
SPI.I2C.UART三种串行总线协议的区别 第一个区别当然是名字: SPI(Serial Peripheral Interface:串行外设接口); I2C(INTER IC BUS) UART( ...
- 422器件与lvds接收器的区别_SPI、I2C、UART三种串行总线的原理、区别
SPI.I2C.串口.我相信如果你是从事的是嵌入式开发,一定会用到这三种通信协议,串口的话因为和波特率有关,所以一般的CPU或者MCU只会配有两个或者三个串口,而数据的传输,的话SPI和I2C用得会比 ...
- 三种串行总线协议的区别(SPI、I2C和UART)
SPI.I2C跟UART三种串行总线协议的区别: (如果想了解SPI和I2C更多详细内容,可看 SPI总线(一):基本原理篇, SPI总线(二):驱动分析篇,SPI总线(三):驱动实例,i2c总线(基 ...
- SPI、I2C、UART 三种串行总线对比介绍
转载自https://blog.csdn.net/oqqHuTu12345678/article/details/65445338 参考博客 https://blog.csdn.net/xiaodin ...
- SPI、I2C、UART(即串口)三种串行总线详解
以下内容均来源于网络资源的学习与整理,如有侵权请告知删除. 参考博客 几个串口协议学习整理 UART IIC SPI_mainn的博客-CSDN博客 SPI.I2C.UART三种串行总线的原理.区别及 ...
- SPI、UART、I2C三种串行总线简介
是一种 高速.全双工.同步.串行通信总线,3~4线接口,以主从模式工作,收发独立,可以实现多个SPI设备互相连接. 提供SPI串行时钟的SPI设备为SPI主机或主设备(Master),其他设备为SPI ...
- uart接口_UART串行总线舵机转接板规格、接线说明 amp; 驱动安装
摘要 UART串行总线舵机需要配合UART串行总线舵机转接板使用,它的作用是将舵机的单线转换为双线TTL接口(Rx接收端,Tx发送端),通过双线TTL串口接口与单片机进行通信.或者通过转接板上的US ...
- AT24C02驱动程序,【I2C串行总线】的组成及工作原理
AT24C02驱动程序 此程序运用到模块化编程,涉及到一下几个函数: 延时函数 起始信号函数 中止信号函数 发送字节函数 接收字节函数 写入数据函数 读取字节函数 通过对以上几类函数的应用实现对数据的 ...
- 4位快速加法器和4位串行加法器相比_使用混合信号示波器调试串行总线系统
本应用指南面向的读者是数字系统设计师,他们在研发过程中会用到模拟和数字元器件,包括采用串行总线的微控制器和 DSP 系统.本文讨论调试串行总线设计所面临的挑战和新的解决方案,这些串行总线包括控制器局域 ...
最新文章
- 如何查询云服务器的操作系统,如何查询云服务器的操作系统
- 获取json的节点名称
- RedHat el5.0 搭建 Postfix 邮件服务器系统一
- 开源 数据仓库_使用这些开源工具进行数据仓库
- java 数组存入数据库_Java中关于二维数组的理解与使用
- C/C++ _strlwr_s 函数 – 字符串大写转小写- C语言零基础入门教程
- mysql query 原理_[转]MySQL的Query Cache原理
- 一般来讲,大公司都有自己的决策团队
- 第三届人本沙龙12月活动小结
- vue使用echarts错误Failed to mount component: template or render function not defined.
- SQL Server查询所有的表名、字段名、注释
- 波波夫:无线电的先驱
- Word 2016 大括号多行公式左对齐详解
- 哪个牌子的投影仪更好?哪个品牌投影仪好
- 简单实现redis实现高并发下的抢购/秒杀功能
- 从零开始WebAPP尝试(四)----登录实现
- [SDOI2013] 淘金
- Rigidbody.AddForce 添加力
- php编写跑马灯,使用C++的编程风格写一个跑马灯的例程
- Google Firebase ANE 使用教程
热门文章
- MongoDB(4)--MongoDB服务的启动
- 船舶自动识别系统(AIS)
- asp.NET自定义服务器控件内部细节系列教程一
- 软件定义,软件开发,软件维护
- shell获取/etc/passwd中的用户名和id
- 【经验分享】工程开发与Coding规范
- Python中is与==的使用区别详解
- Storm编程模型总结
- mysql5.7.x 1251_MySql-8.0.x免安装版下载与配置,Navicat打开数据库链接报错1251的解决办法...
- python redis 性能测试台_Redis性能测试