SPI、I2C、UART三种串行总线协议的区别和SPI接口介绍,以及SPI接口详解
0 2022-11-24

  SPI、I2C、UART三种串行总线协议的区别

  第一个区别当然是名字:

  SPI(Serial Peripheral Interface:串行外设接口);

  I2C(INTER IC BUS)

  UART(Universal Asynchronous Receiver Transmitter:通用异步收发器)

  第二,区别在电气信号线上:

  SPI总线由三条信号线组成:串行时钟(SCLK)、串行数据输出(SDO)、串行数据输入(SDI)。SPI总线可以实现 多个SPI设备互相连接。提供SPI串行时钟的SPI设备为SPI主机或主设备(Master),其他设备为SPI从机或从设备(Slave)。主从设备间可以实现全双工通信,当有多个从设备时,还可以增加一条从设备选择线。

  如果用通用IO口模拟SPI总线,必须要有一个输出口(SDO),一个输入口(SDI),另一个口则视实现的设备类型而定,如果要实现主从设备,则需输入输出口,若只实现主设备,则需输出口即可,若只实现从设备,则只需输入口即可。

  I2C总线是双向、两线(SCL、SDA)、串行、多主控(mul-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接口介绍(转)

  这几天碰到了使用SPI接口的flash,才知道flash还可以是串行的,看来以前真是井底之蛙啊,找了一些SPI接口的资料都不全,后来找到一点英文资料,翻译了一下,加上我的个人理解,凑成一篇了,希望对初学者有点帮助。

  SPI接口的全称是“Serial Peripheral Interface”,意为串行外围接口,是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。

  SPI接口是在CPU和外围低速器件之间进行同步串行数据传输,在主器件的移位脉冲下,数据按位传输,高位在前,地位在后,为全双工通信,数据传输速度总体来说比I2C总线要快,速度可达到几Mbps。

  SPI接口是以主从方式工作的,这种模式通常有一个主器件和一个或多个从器件,其接口包括以下四种信号:

  (1)MOSI – 主器件数据输出,从器件数据输入

  (2)MISO – 主器件数据输入,从器件数据输出

  (3)SCLK – 时钟信号,由主器件产生

  (4)/SS – 从器件使能信号,由主器件控制

  SPI、I2C、UART三种串行总线协议的区别和SPI接口介绍(转) - hailany - hailany 的博客

  在点对点的通信中,SPI接口不需要进行寻址操作,且为全双工通信,显得简单高效。

  在多个从器件的系统中,每个从器件需要独立的使能信号,硬件上比I2C系统要稍微复杂一些。

I2C总线是双向、两线(SCL、SDA)、串行、多主控(multi-master)接口标准,具有总线仲裁机制,非常适合在器件之间进行近距离、非经常性的数据通信。在它的协议体系中,传输数据时都会带上目的设备的设备地址,因此可以实现设备组网。

  SPI、I2C、UART三种串行总线协议的区别和SPI接口介绍(转) - hailany - hailany 的博客

  SPI接口在内部硬件实际上是两个简单的移位寄存器,传输的数据为8位,在主器件产生的从器件使能信号和移位脉冲下,按位传输,高位在前,低位在后。如下图所示,在SCLK的下降沿上数据改变,同时一位数据被存入移位寄存器。

  SPI、I2C、UART三种串行总线协议的区别和SPI接口介绍(转) - hailany - hailany 的博客

  SPI接口内部硬件图示:(见下文)

  SPI、I2C、UART三种串行总线协议的区别和SPI接口介绍(转) - hailany - hailany 的博客

  最后,SPI接口的一个缺点:没有指定的流控制,没有应答机制确认是否接收到数据。

  详细剖析SPI串口总线连接方法:

  SPI总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。正是由于有了通信方式,我们才能够通过芯片控制各种各样的外围器件,实现很多“不可思议”的现代科技。这里将以SPI为题,从编程角度来介绍SPI总线。

  1、SPI协议简介

  SPI 是英语 Serial Peripheral interface 的缩写,顾名思义就是串行外围设备接口。是 Motorola首先在其 MC68HCXX 系列处理器上定义的。SPI是一种高速的,全双工,同步的通信总线,由于其简单易用的特性,现在很多的nor flash和nandflash芯片集成了这种通信协议,也就是我们说的SPI flash。

  SPI、I2C、UART三种串行总线协议的区别

  2、应用及现状

  SPI flash 芯片应用十分广泛,在很多电子产品上面或多或少都有它的踪影,如手机、数码、液晶显示器、机顶盒、电脑主板等。最近,有消息透露,苹果新手机iPhone 8将导入采用编码型快闪存储(NOR Flash),让已经处于缺货状态的NOR芯片更为恼火,另外据存储业者透露,今年NOR芯片供给缺口将可能扩大至20%。

  SPI、I2C、UART三种串行总线协议的区别

  3、解剖SPI总线

  SPI 接口一般使用 4 条线通信,MISO 主设备数据输入,从设备数据输出。MOSI 主设备数据输出,从设备数据输入。SCLK 时钟信号,由主设备产生。CS 从设备片选信号,由主设备控制。

  SPI、I2C、UART三种串行总线协议的区别

  SPI接口在Master控制下产生的从器件使能信号和时钟信号,两个双向移位寄存器按位传输进行数据交换,传输数据高位在前,低位在后(MSB)。在SCK的下降沿上数据改变,上升沿一位数据被存入移位寄存器。

  SPI、I2C、UART三种串行总线协议的区别

  4、解剖SPI flash

  搞懂了SPI协议之后,下面就让小编来带你轻松操作SPI flash芯片。对flash芯片的操作,一般包括对flash芯片的擦除,编程和读取,各大厂商的SPI flash芯片都大同小异,操作命令基本是没什么变化的,当我们拿到一款芯片,要特别注意芯片的容量,操作分区,下面以旺宏的芯片为例为大家讲解。

  其实,无论是对芯片的擦除,编程还是读取操作,我们大致可以按照以下的套路来:写命令---写地址---写(读)数据。正如以下的时序图一样清晰明了,我们先把片选信号拉低,再发个0x02页编程命令,再发个地址,就可以轻松写数据了。

  SPI、I2C、UART三种串行总线协议的区别

  依样画葫芦,擦除操作也是一样,甚至更简单,但是我们要注意循环判断状态寄存器的WIP位直至为0为擦除完成,具体循环时间视芯片而定。

  SPI、I2C、UART三种串行总线协议的区别

  另外,我们要特别注意SPI flash的 OTP区,即(ONE ME PROGRAMMABLE),也就是说这个区域只能编程一次,编程之后不能再修改及擦除,因此我们操作的时候要特别注意。对OTP区域的读写之前,我们首先要发送进入OTP区域的命令,其他的操作和以上普通flash区域的操作是一样的。

  掌握以上方法,我们就可以轻松操作SPI flash芯片了,当然,对时序这种底层的操作,还需要不断学习和积累

声明: 本文转载自其它媒体或授权刊载,目的在于信息传递,并不代表本站赞同其观点和对其真实性负责,如有新闻稿件和图片作品的内容、版权以及其它问题的,请联系我们及时删除。(联系我们,邮箱:evan.li@aspencore.com )
0
评论
  • 相关技术文库
  • 工业
  • 安防
  • 航空
  • CAN
  • dvi接口及其优点

      DVI接口是由1998年9月,在Intel开发者论坛上成立的数字显示工作小组(DigitalDisplayWorkingGroup简称DDWG)发明了一种高

    10小时前
  • dvi接口转hdmi接口的方法

      HDMI是(HighDefiniTIonMulTImediaInterface)的缩写,意思是高清晰度多媒体接口,是一种数字化视频/音频接口技术,适合影像传

    10小时前
  • vga接口针脚定义、接线方法

      VGA(VideoGraphicsArray)视频图形阵列是IBM于1987年提出的一个使用模拟信号的电脑显示标准。VGA接口即电脑采用VGA标准输出数据的

    10小时前
  • jtag接口的定义

    JTAG(JointTestAcTIonGroup,联合测试行动小组)是一种国际标准测试协议,主要用于芯片内部测试及对系统进行仿真、调试,JTAG技术是一种嵌入

    10小时前
  • SPI开关解决方案

    本文讨论旨在解决这种设计挑战的ADI公司新一代SPI控制开关及其架构,以及相对于并行控制开关,它在提高通道密度上有何优势。ADI公司创新的多芯片封装工艺使得新型

    10小时前
  • vga接口种类有哪些

      VGA接口是一种D型接口,上面共有15针孔,分成三排,每排五个。其中,除了2根NC(NotConnect)信号、3根显示数据总线和5个GND信号,比较重要的

    昨天
  • CAN总线定义与CAN协议的基本概念

    1.CAN总线定义CAN(ControllerAreaNetwork)是ISO国际标准化的串行通信协议。广泛应用于汽车、船舶等。具有已经被大家认可的高性能和可靠

    昨天
  • uart接口介绍

      UART(UniversalAsynchronousReceiver/Transmitter)通用异步收发器。  UART是用于控制计算机与串行设备的芯片。

    昨天
  • CAN协议和标准规范

    CAN协议和标准规范1、由ISO标准化的CAN协议CAN协议已经由ISO标准化,有2个版本,如ISO11898和ISO11519-2,它们之间在数据链路层没什么

    昨天
  • 具有ISP下载与串口通讯功能的下载线的制作

      在学习单片机和进行单片机产品开发过程中,我们通常使用仿真器作为调试程序的有力工具。但仿真器价格昂贵,对于初学者和一般个人开发人员很难承受。为此,我们选用了带

    昨天
  • 单片机的主要应用范围和领域简介

    [导读]单片机的应用范围十分广泛,主要的应用领域有: (1) 工业控制。单片机可以构成各种工业控制系统、数据采集系统等。如数控机床、自动生产线控制、电机控制、温

    前天
下载排行榜
更多
广告