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)、串行、多主控(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接口介绍(转)
这几天碰到了运用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体系要略微杂乱一些。
SPI接口在内部硬件实际上是两个简略的移位寄存器,传输的数据为8位,在主器材发生的从器材使能信号和移位脉冲下,按位传输,高位在前,低位在后。如下图所示,在SCLK的下降沿上数据改动,一起一位数据被存入移位寄存器。
SPI接口内部硬件图示:(见下文)
最终,SPI接口的一个缺陷:没有指定的流操控,没有应对机制承认是否接纳到数据。
详细分析SPI串口总线衔接办法:
SPI总线体系是一种同步串行外设接口,它能够使MCU与各种外围设备以串行办法进行通讯以交流信息。正是因为有了通讯办法,咱们才能够经过芯片操控各式各样的外围器材,完结许多“难以想象”的现代科技。这儿将以SPI为题,从编程视点来介绍SPI总线。
1、SPI协议简介
SPI 是英语 Serial Peripheral interface 的缩写,望文生义便是串行外围设备接口。是 Motorola首要在其 MC68HCXX 系列处理器上界说的。SPI是一种高速的,全双工,同步的通讯总线,因为其简略易用的特性,现在许多的nor flash和nandflash芯片集成了这种通讯协议,也便是咱们说的SPI flash。
2、运用及现状
SPI flash 芯片运用非常广泛,在许多电子产品上面或多或少都有它的踪迹,如手机、数码、液晶显示器、机顶盒、电脑主板等。最近,有音讯泄漏,苹果新手机iPhone 8将导入选用编码型快闪存储(NOR Flash),让现已处于缺货状况的NOR芯片更为动火,别的据存储业者泄漏,本年NOR芯片供应缺口将或许扩展至20%。
3、解剖SPI总线
SPI 接口一般运用 4 条线通讯,MISO 主设备数据输入,从设备数据输出。MOSI 主设备数据输出,从设备数据输入。SCLK 时钟信号,由主设备发生。CS 从设备片选信号,由主设备操控。
SPI接口在Master操控下发生的从器材使能信号和时钟信号,两个双向移位寄存器按位传输进行数据交流,传输数据高位在前,低位在后(MSB)。在SCK的下降沿上数据改动,上升沿一位数据被存入移位寄存器。
4、解剖SPI flash
搞懂了SPI协议之后,下面就让小编来带你轻松操作SPI flash芯片。对flash芯片的操作,一般包含对flash芯片的擦除,编程和读取,各大厂商的SPI flash芯片都迥然不同,操作指令基本是没什么改变的,当咱们拿到一款芯片,要特别注意芯片的容量,操作分区,下面以旺宏的芯片为例为咱们解说。
其实,无论是对芯片的擦除,编程仍是读取操作,咱们大致能够依照以下的套路来:写指令—写地址—写(读)数据。正如以下的时序图相同明晰明晰,咱们先把片选信号拉低,再发个0x02页编程指令,再发个地址,就能够轻松写数据了。
依样画葫芦,擦除操作也是相同,乃至更简略,可是咱们要注意循环判别状况寄存器的WIP位直至为0为擦除完结,详细循环时刻视芯片而定。
别的,咱们要特别注意SPI flash的 OTP区,即(ONE TIME PROGRAMMABLE),也便是说这个区域只能编程一次,编程之后不能再修正及擦除,因而咱们操作的时分要特别注意。对OTP区域的读写之前,咱们首要要发送进入OTP区域的指令,其他的操作和以上一般flash区域的操作是相同的。
把握以上办法,咱们就能够轻松操作SPI flash芯片了,当然,对时序这种底层的操作,还需求不断学习和堆集