新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > SPI、I2C、UART三种串行总线的区别

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

作者:时间:2016-12-15来源:网络收藏
SPI:Serial Peripheral Interface串行外围接口

ISP:In SyestermProgram在系统编程

本文引用地址:http://www.eepw.com.cn/article/201612/330167.htm

AT89S52在系统编程(ISP)所用到的几个引脚定义:


SPI简述(Serial Peripheral Interface--串行外设接口)总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。外围设置FLASHRAM、网络控制器、LCD显示驱动器、A/D转换器和MCU等。SPI总线系统可直接与各个厂家生产的多种标准外围器件直接接口,该接口一般使用4条线:串行时钟线(SCK)、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOST和低电平有效的从机选择线SS(有的SPI接口芯片带有中断信号线INT或INT、有的SPI接口芯片没有主机输出/从机输入数据线MOSI)。由于SPI系统总线一共只需3~4位数据线和控制即可实现与具有SPI总线接口功能的各种I/O器件进行接口,而扩展并行总线则需要8根数据线、8~16位地址线、2~3位控制线,因此,采用SPI总线接口可以简化电路设计,节省很多常规电路中的接口器件和I/O口线,提高设计的可靠性。由此可见,在MCS51系列等不具有SPI接口的单片机组成的智能仪器和工业测控系统中,当传输速度要求不是太高时,使用SPI总线可以增加应用系统接口器件的种类,提高应用系统的性能。

SPI四线制引脚功能定义

小结:AT89S52单片机的FLASH烧写程序接口是ISP,所用为烧写程序小板上主控芯片AVR的SPI通信引脚MOSI、MISO、SCLK。

什么是JTAG?

JTAG是一个通信标准,用于计算机和单片机进行实时快速通讯。

AVR的JTAG功能(只有部分型号才有)使得AVR的调试工作非常简单,可以通过JTAG接口对Flash、EEPROM、熔丝位和锁定位进行编程。

使用AVR studio软件和JTAG硬件(AVR JTAG编程器,AVR JTAG仿真器)可以进行程序下载(编程)和程序在线调试。

JTAG接口有四个引脚。以JTAG的术语来说,这些引脚组成了测试访问端口TAP。这些引脚是:

·TMS:测试模式选择。此引脚用来实现TAP控制器各个状态之间的切换。

·TCK:测试时钟。JTAG操作是与TCK同步的。

·TDI:测试数据输入--需要移位到指令寄存器或数据寄存器(扫描链)的串行输入数据。

·TDO:测试数据输出--自指令寄存器或数据寄存器串行移出的数据。

什么是ISP?

ISP是一种通用的程序下载方式,AVR单片机都有ISP下载接口。可以通过ISP下载线或者STK500把程序下载到单片机中。

ISP下载线成本低廉,制作简单,一个并口ISP下载线只需几十元即可得到。开发工具成本低也是AVR单片机的优势之一。

JTAG与ISP的区别和联系

区别:JTAG可以调试程序,而ISP只能下载程序。

联系:同作为AVR程序下载工具,都能把程序从电脑下载到单片机中。都能对芯片的熔丝位和锁定位进行编程。

JTAG调试与普通软件仿真的区别和联系

联系:都可以在计算机调试程序终端看到程序的运行效果,都可以设置断点,单步运行,进入循环,跳出循环,连续运行等操作。还能实时观察各寄存器的值,IO口状态等。

区别:软件仿真,用的是计算机来模仿单片机运行,不是全真的环境,很多时候会出现偏差甚至错误。而用JTAG在线调试,程序本身在单片机内运行,完全真实的硬件环境,更准确的反映程序运行的实际情况,有助于大型程序的调试。

第一个区别当然是名字:
SPI(SerialPeripheralInterface:串行外设接口);
I2C(INTERICBUS:意为IC之间总线)
UART(UniversalAsynchronousReceiverTransmitter:通用异步收发器)

第二,区别在电气信号线上:
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的支持,而且I2C使用上拉电阻,我觉得抗干扰能力较弱,一般用于同一板卡上芯片之间的通信,较少用于远距离通信。SPI实现要简单一些,UART需要固定的波特率,就是说两位数据的间隔要相等,而SPI则无所谓,因为它是有时钟的协议。
quickmouse:I2C的速度比SPI慢一点,协议比SPI复杂一点,但是连线也比标准的SPI要少。

1、SPI(Serial Peripheral Interface串行外围接口):高速、全双工、同步串行口。
三或四个信号用于数据交换:
SIMO:从进,主出
SOMI:从出,主进
UCLK:时钟,由主机驱动,从机用它发送和接收数据
STE:从机发送允许,用于四线模式中控制多主从系统中的多个从机

三线SPI组成:串行时钟(SCLK)、串行数据输出(SDO)、串行数据输入(SDI);当有多个从设备时,还可以增加一条从设备选择线。四线SPI模式用附加控制线,来允许从机数据的发送和接收,它由主机控制。

SPI总线可以实现多个SPI设备互相连接。
提供SPI串行时钟的SPI设备为SPI主机或主设备(Master),其他设备为SPI从机或从设备(Slave)。

主从设备间可以实现全双工通信,SPI接口是在CPU和外围低速器件之间进行同步串行数据传输,在主器件的移位脉冲下,数据按位传输,高位在前,地位在后,为全双工通信。
如果用通用IO口模拟SPI总线,必须要有一个输出口(SDO),一个输入口(SDI),另一个口则视实现的设备类型而定,如果要实现主从设备,则需输入输出口,若只实现主设备,则需输出口即可,若只实现从设备,则只需输入口即可。

UART需要固定的波特率,而SPI则无所谓,因为它是有时钟的协议。
SPI接口主要应用在EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。

2、I2C(Inter IC Bus)接口定义
I2C总线是双向两线(SCL——串行时钟、SDA——串行数据线)制同步串行总线,具有竞争检测和仲裁机制,可使多个主机任意同时发送数据而不破坏总线上的数据信息。非常适合在器件之间进行近距离、非经常性的数据通信。在它的协议体系中,传输数据时都会带上目的设备的设备地址,因此可以实现设备组网。
特点:
A、每个连到总线上的器件都可由软件唯一的地址寻址,并建立简单的主从关系。主器件既可作为发送器,又可作为接收器。
B、同步时钟允许器件通过总线以不同的波特率进行通信
C、同步时钟可以作为停止和重新启动串行口发送的握手方式
D、连接到同一总线上的集成电路器件数只受400PF的总大总线电容的限制
如果用通用IO口模拟I2C总线,并实现双向传输,则需一个输入输出口(SDA),另外还需一个输出口(SCL)。

注:组成I2C总线的串行数据线SDA和串行时钟线SCL必须经过上拉电阻Rp接到正电源上,连接到总线上的器件的输出极必须为“开漏”或“开集”的形式,以便完成“线与”的功能。

I2C需要有双向IO的支持,而且使用上拉电阻,抗干扰能力较弱,一般用于同一板卡上芯片之间的通信,较少用于远距离通信。

各种接口之间的区别如下:

1、UART和USART两个的区别是UART:universal asynchronous receiver and transmitter通用异步收发器USART:universal synchronous asynchronous receiver and transmitter通用同步异步收发器,USART是新出的,是复用功能,可以选择SPI模式(同步串行通讯)也可以是UART模式(异步串行通讯),比UART功能跟强大。UART就是两线,一根发送一根接收,可以全双工通信,线数也比较少。数据是异步传输的,对双方的时序要求比较严格,通信速度也不是很快。在多机通信上面用的最多。

2、SPI接口和上面UART相比,多了一条同步时钟线,上面UART的缺点也就是它的优点了,对通信双方的时序要求不严格不同设备之间可以很容易结合,而且通信速度非常快。一般用在产品内部元件之间的高速数据通信上面,如大容量存储器等。

3、I2C接口也是两线接口,它是两根线之间通过复杂的逻辑关系传输数据的,通信速度不高,程序写起来也比较复杂。一般单片机系统里主要用来和24C02等小容易存储器连接



关键词: SPII2CUART串行总

评论


技术专区

关闭