微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > I2C SPI UART和CAN通信协议的区别

I2C SPI UART和CAN通信协议的区别

时间:12-12 来源:互联网 点击:
通信标准接口。当Uart接口连到PC机上时,需要接RS232电平转换电路。

UART使用发送数据线TXD和接收数据线RXD来传送数据,接收和发送可以单独进行也可以同时进行。它传送数据的格式有严格的规定,每个数据以相同的位串形式传送,每个串行数据由起始位,数据位,奇偶校验位和停止位组成。从起始位到停止位结束的时间称为一帧(frame),即一个字符的完整通信格式。

SPI

Serial Perheral Interface,是一种全双工同步串行接口标准,串行通信的双方用四根线进行通信,这四根连线分别是:片选信号,I/O时钟,串行输入,串行输出,这种接口的特点是快速,高效,并且操作起来比I2C要简单一些,接线也比较简单,TLC2543提供SPI接口。

I2C

Inter-Integrated Circuit(集成电路之间), I2C总线是一种由PHILIPS公司开发的两线式双向串行总线,用于连接微控制器及其外围设备。I2C总线产生于在80年代,最初为音频和视频设备开发,如今主要在服务器管理中使用,其中包括单个组件状态的通信。例如管理员可对各个组件进行查询,以管理系统的配置或掌握组件的功能状态,如电源和系统风扇。可随时监控内存、硬盘、网络、系统温度等多个参数,增加了系统的安全性,方便了管理。I2C属于两线式串行总线,它由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。在CPU与被控IC之间、IC与IC之间进行双向传送,最高传送速率100kbps。各种被控制电路均并联在这条总线上,但就像电话机一样只有拨通各自的号码才能工作,所以每个电路和模块都有唯一的地址,在信息的传输过程中,IC2总线上并接的每一模块电路既是主控器(或被控器),又是发送器(或接收器),这取决于它所要完成的功能。CPU发出的控制信号分为地址码和控制量两部分,地址码用来选址,即接通需要控制的电路,确定控制的种类;控制量决定该调整的类别(如对比度、亮度等)及需要调整的量。这样,各控制电路虽然挂在同一条总线上,却彼此独立,互不相关。

CAN

Controller Area Network(区域网络控制器),CAN 全称为Controller Area Network,即控制器局域网,由德国Bosch 公司最先提出,是国际上应用最广泛的现场总线之一。CAN 是一种多主方式的串行通讯总线,基本设计规范要求有高的位速率、高抗电磁干扰性,而且要能够检测出总线的任何错误。当信号传输距离达10Km 时CAN 仍可提供高达50Kbit/s 的数据传输速率。现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计算机局域网。它的出现为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。CAN属于现场总线的范畴,它是一种有效支持分布式控制或实时控制的串行通信网络。较之目前许多RS-485基于R线构建的分布式控制系统而言, 基于CAN总线的分布式控制系统具有明显的优越性。

第一,名称
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不行;
第四,看看牛人们的意见吧!

i2c线更少,我觉得比uart、spi更为强大,但是技术上也更加麻烦些,因为i2c需要有双向io的支持,而且使用上拉电阻,我觉得抗干扰能力较弱,一般用于同一板卡上芯片之间的通信,较少用于远距离通信。spi实现要简单一些,uart需要固定的波特率,就是说两位数据的间隔要相等,而spi则无所谓,因为它是有时钟的协议。
i2c的速度比spi慢一点,协议比spi复杂一点,但是连线也比标准的spi要少

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top