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要少。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/469838.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络课制作双绞线实验,《计算机网络》课程实验——网线制作.pdf

第1 章 网线的制作和应用第1 章 网线的制作和应用实验1 直连双绞线的制作和应用双绞线一般分为屏蔽双绞线(STP)和非屏蔽双绞线(UTP )两类。如果没有特殊要求,在计算机网络中一般使用非屏蔽双绞线,所以本节主要以非屏蔽双绞线为例进行介绍。1.1.1 实验概述…

Python网络数据采集系列-------概述

这是一个正在准备中的系列文章,主要参考的是《Web Scraping with Python_Collecting Data from the Modern Web-OReilly(2015)》。这是一本关于网络数据采集(俗称的爬虫)的书,由浅入深,比较适合入门。在学习过程中也肯…

AttributeError: ‘list‘ object has no attribute ‘ndim‘

错误&#xff1a; AttributeError Traceback (most recent call last) <ipython-input-6-9b77ac20aa23> in <module>()1 # Print the images dimensions ----> 2 print(images.ndim)3 4 # Print the number of imagess elements5 p…

驱动程序操作IO口API函数

驱动程序总会操作一些CPU的IO口下面列一些常用函数 int check_region(unsigned int from,unsigned int extent); 这个函数查看系统的I/O表,看是否有别的驱动程序占用某一段的I/o口 参数1:端口基地址 参数2:端口占用范围 返回:0为没有占用 非0 为已经有驱动占用 void re…

网络教育计算机 判断,北京师范大学网络教育计算机作业1、4、8

计算机11.自计算机问世至今已经经历了4个时代&#xff0c;划分时代的主要依据是计算机的__D__。A规模 B功能 C性能 D构成元件2.世界上第一台电子数字计算机采用的逻辑元件是__D__。A大规模集成电路 B集成电路 C晶体管 D电子管3.早期的计算机体积大、耗能高、速度慢&#xff0c;…

ImportError: DLL load failed while importing _ssl: 找不到指定的模块。

解决方案一&#xff08;自己的方法&#xff09;&#xff1a; 找到Anaconda3\pkgs\python-3.8.12-h900ac77_2_cpython\DLLs下的_ssl.pyd文件&#xff0c;查阅在该环境上安装的python版本号&#xff0c;下载python寻找对应的_ssl.pyd覆盖到上述目录中&#xff0c;即可解决问题。解…

Python核心编程-细节

直接从六张开始看看书里有什么。 cmp()  len()  max() and min()  sorted() and reversed()  enumerate() and zip()  sum()  list() and tuple()  dir()方法来得到它所有的方法和属性    extend() and append() extend()接受一个列表的内容&#xff0c;然…

查看linux IO地址范围

端口统一编址原理是把IO控制器中的端口地址归入存储器寻址空间范围内&#xff0c;因此这种编址方式也成为存储器映像编址。CPU访问一个端口的操作与访问内存的操作一样&#xff0c;也使用访问内存的指令。 在linux下可以查看设置的IO地址范围

命令行import torch正常,但pycharm中显示“No module named torch”解决方法

pytorch第一步配置环境测试运行就遇到了如题目所述问题&#xff0c;问题如图&#xff1a; 步骤一 首先检查环境导入是否有问题&#xff0c;工具栏file–settings–project–project interpreter&#xff0c;在这里添加配置好的conda环境&#xff0c;注意添加时要选中对应的con…

机械厂html5手机模板,营销型机械消费设备企业通用织梦模板(带html5手机端) v1.0...

营销型机械消费设备企业通用织梦模板简介营销型机械消费设备企业通用织梦模板(带html5手机端)v1.0是一个自适应手机端和PC端的最新版织梦V5.7为内核的网站模板&#xff0c;软件兼容主流浏览器&#xff0c;模板包含安装说明&#xff0c;并包含测试数据。dedecms最新版内核开发&a…

Ubuntu通过修改配置文件进行网络配置

Ubuntu系统进行网络配置有的时候用图形界面不起作用&#xff0c;这种情况下可以直接修改某些启动脚本或配置文件Ubuntu系统进行网络配置涉及到几个配置文件1./etc/network/interfaces 2./etc/resolv.conf操纵步骤&#xff1a;1.打开ubuntu的/etc/network/interfaces文件默认的内…

删掉SQL Server登录时登录名下拉列表框中的选项

问题&#xff1a; 我以前创建了一个登录名如kpi&#xff0c;之后在“安全性-登录名” 里删掉了&#xff0c;但是每次登录时&#xff0c;登录名的下拉框中总是能显示登录名kpi&#xff0c;怎么把它删掉呢&#xff1f; 解决方案&#xff1a; 1).SQL Server 2008 R2和SQL Server 2…

Tensorboard --logdir=logs 无法显示图像的处理办法

Tensorboard --logdirlogs 无法显示图像的处理办法 问题描述&#xff1a; 解决方案&#xff1a;【要和工程目录对应&#xff01;写全日志地址】 tensorboard --logdir"torch learning\logs" #注意要是双引号&#xff0c;而且路径不能单单是logs&#xff0c;还要包括…

计算机网络对口题目,2011-2015计算机对口升学网络试题汇总.doc

2011-2015计算机对口升学网络试题汇总2011-2015对口升学计算机网络试题及答案汇总2017年9月30日整理(2011年河北省普通高等学校对口招生考试计算机网络试题及答案&#xff1a;)一、选择题&#xff1a;36&#xff0e;计算机网络中的计算机之间的关系是……………………( C )A&am…

SPI单片机发送ARM接收

发送&#xff1a; void MCUSPI_WRITE_ADDRESS_DATA(unsigned char data) {unsigned char i0;ENABLE_SPI_CS();//????????_delay(10);DISABLE_SPI_CS();Master(data);ENABLE_SPI_CS();//???????? _delay(10);}void Master(unsigned short Data) { unsigned sho…

73个word使用终极技巧

1、问&#xff1a;Word里边怎样设置每页不同的页眉&#xff1f;如何使不同的章节显示的页眉不同&#xff1f;答&#xff1a;分节&#xff0c;每节可以设置不同的页眉。文件——页面设置——版式——页眉和页脚——首页不同2、问&#xff1a;请问Word中怎样让每一章用不同的页眉…

AttributeError: type object ‘Image‘ has no attribute ‘open‘

AttributeError: type object ‘Image‘ has no attribute ‘open‘ 原因分析&#xff1a;Image调用顺序出错&#xff0c;因为第一行的from PIL import Image与第二行tkinter import *冲突&#xff0c;tkinter中也含有Image类&#xff0c;所以你使用的是tkinter.Image 解决方法…

微型计算机中存储器分成哪几个等级?它们各有什么特点?用途如何?,《微机原理》复习思考题第十二章存储器.DOC...

《微机原理》复习思考题第十二章存储器第章 存储器?????????????????????????????????????????????????????????? ????????????? ??????????微型计算机中存储器分成哪几个等级&#xff1f;它…

怎么在右键菜单添加快速比较的功能

如果安装beyond compare后&#xff0c;右键不能出现比较选项&#xff0c;可以通过设置 beyond compare完成。选择 工具->选项&#xff0c;在资源管理器整合下面&#xff0c;有一个在资源管理器关联菜单中显示beyond compare的选项&#xff0c;选中该选项即可

下载Pytorch的自带数据集时报错=urllib.error.URLError: urlopen error [SSL: CERTIFICATE_VERIFY_FAILED]

错误原因&#xff1a; 这是一个SSL证书验证错误&#xff0c;当请求一个https站点&#xff0c;但是证书验证错误时&#xff0c;就会报这样的错误。 解决办法&#xff1a; 只需在代码中加入如下两行将跳过证书的检查&#xff0c;即可成功访问网页。 # 全局取消证书验证 impor…