SPI、I2C、UART三种串行总线协议的差异
SPI(Serial Peripheral Interface:串行外设接口)
I2C(INTER IC BUS)
UART(Universal Asynchronous Receiver Transmitter:通用异步收发器)
SPI
The SPI includes these distinctive features:
•Master mode and slave mode
•Bi-directional mode
•Slave select output
•Mode fault error flag with CPU interrupt capability
•Double-buffered data register
•Serial clock with programmable polarity and phase
•Control of SPI operation during wait mode
SPI有两种形式,Normal Mode and Bidirectional Mode,包含以下几根线:
SSSlave Select
SCKSerial Clock
MOSI Master Output, Slave Input
MISO Master Input, Slave Output
MOMI Master Output, Master Input
SISOSlave Input, Slave Output
其间前四根线用于Normal Mode,常用的也是4根线的Normal Mode。
MOSI
This pin is used to transmit data out of the SPI module when it is configured as a Master and receive data
when it is configured as Slave.
MISO
This pin is used to transmit data out of the SPI module when it is configured as a Slave and receive data
when it is configured as Master.
SS
This pin is used to output the select signal from the SPI module to another peripheral with which a data
transfer is to take place when its configured as a Masterand its used as an input to receive the slave select
signal when the SPI is configured as Slave.
SCK
This pin is used to output the clock with respect to which the SPI transfers data or receive clock in case of
Slave.
SPI是一种答应一个主设备发动一个与从设备的同步通讯的协议,然后完结数据的交流。也便是SPI是一种规定好的通讯方法。这种通讯方法的长处是占用端口较少,一般4根就够根本通讯了。一起传输速度也很高。一般来说要求主设备要有SPI操控器(但可用模仿方法),就能够与根据SPI的芯片通讯了。
SPI的通讯原理很简略,它需求至少4根线,事实上3根也能够。也是一切根据SPI的设备共有的,它们是SDI(数据输入),SDO(数据输出),SCK(时钟),CS(片选)。其间CS是操控芯片是否被选中的,也便是说只有片选信号为预先规定的使能信号时(高电位或低电位),对此芯片的操作才有用。这就答应在同一总线上衔接多个SPI设备成为可能。
接下来就担任通讯的3根线了。通讯是经过数据交流完结的,这儿先要知道SPI是串行通讯协议,也便是说数据是一位一位的传输的。这便是SCK时钟线存在的原因,由SCK供给时钟脉冲,SDI,SDO则根据此脉冲完结数据传输。数据输出经过SDO线,数据在时钟上沿或下沿时改动,在紧接着的下沿或上沿被读取。完结一位数据传输,输入也运用相同原理。这样,在至少8次时钟信号的改动(上沿和下沿为一次),就能够完结8位数据的传输。
要注意的是,SCK信号线只由主设备操控,从设备不能操控信号线。相同,在一个根据SPI的设备中,至少有一个主控设备。
这样传输的特色:这样的传输方法有一个长处,与一般的串行通讯不同,一般的串行通讯一次接连传送至少8位数据,而SPI答应数据一位一位的传送,乃至答应暂停,由于SCK时钟线由主控设备操控,当没有时钟跳变时,从设备不收集或传送数据。也便是说,主设备经过对SCK时钟线的操控能够完结对通讯的操控。
SPI仍是一个数据交流协议:由于SPI的数据输入和输出线独立,所以答应一起完结数据的输入和输出。
不同的SPI设备的完成方法不尽相同,主要是数据改动和收集的时刻不同,在时钟信号上沿或下沿收集有不同界说,详细请参阅相关器材的文档。
I2C
•只要求两条总线线路:一条串行数据线SDA一条串行时钟线SCL
•每个衔接到总线的器材都能够经过仅有的地址和一向存在的简略的主机从机联系软件设定地址主机能够作为主机发送器或主机接纳器
•它是一个真实的多主机总线假如两个或更多主机一起初始化数据传输能够经过抵触检测和裁定,避免数据被损坏
•串行的8位双向数据传输位速率在规范形式下可达100kbit/s快速形式下可达400kbit/s高速形式下可达3.4Mbit/s
•片上的滤波器能够滤去总线数据线上的毛刺波确保数据完好
•衔接到相同总线的IC数量只遭到总线的最大电容400pF约束
UART
UART总线是异步串口,因而一般比前两种同步串口的结构要杂乱许多,一般由波特率发生器(发生的波特率等于传输波特率的16倍)、UART接纳器、UART发送器组成,硬件上由两根线,一根用于发送,一根用于接纳。
显着,假如用通用IO口模仿UART总线,则需一个输进口,一个输出口。
UART常用于操控计算机与串行设备的芯片。有一点要注意的是,它供给了RS-232C数据终端设备接口,这样计算机就能够和调制解调器或其它运用RS-232C接口的串行设备通讯了。
显着能够看出,SPI和UART能够完成全双工,但I2C不可