SPI IIC UART三种通信方式的比较

1.UART、SPI、IIC是经常用到的几个数据传输标准,基本描述:

       (1)UART(Universal Asynchronous Receive Transmitter):也就是我们经常所说的串口,基本都用于调试。

               主机和从机之间采用三根线,RX,TX,GND。TX是用来发送数据,RX是用来接收数据,这个过程中,收和发不是同一根线,所以它是全双工进行通信,GND 是地线;

       (2)IIC(Inter Integrated Circuit):

                它的通信只需要两根数据线,一个时钟线SCL和一个数据线SDA。只有一根数据线,所以是半双工通信,两条线上可以挂载许多设备(不同的设备会有不同的IIC地址)

       (3)SPI(Serial Peripheral Interface, 同步外设接口):

                是摩托罗拉开发的全双工同步串行总线,该总线大量在EEPROM,ADC,FRAM和显示驱动器之类的外设器件通信(通信速度比较慢);

                SPI是一种串行同步通讯协议,由一个主设备和一个或多个从设备组成,主设备启动一个与从设备的同步通讯,从而完成数据的交换。SPI 接口由SDI(串行数据输入),SDO(串行数据输出),SCK(串行移位时钟),CS(从使能信号)四种信号构成,CS 决定了唯一的与主设备通信的从设备,片选信号低电平有效。如没有CS 信号,则只能存在一个从设备,主设备通过产生移位时钟来发起通讯。通讯时,数据由SDO 输出,SDI 输入,数据在时钟的上升或下降沿由SDO 输出,在紧接着的下降或上升沿由SDI 读入,这样经过8/16 次时钟的改变,完成8/16 位数据的传输。

2.各自的通信原理(工作方式):

        1.> UART传输数据时序图如下

                具体数据传输时的工作原理:

       发送数据过程:空闲状态,线路处于高电位;当收到发送数据指令后,拉低线路一个数据位的时间 T,接着数据按低位到高位依次发送,数据发送完毕后,接着发送奇偶校验位和停止位(停止位为高电位),一帧数据发送结束。

       接收数据过程:空闲状态,线路处于高电位;当检测到线路的下降沿(线路电位由高电位变为低电位)时说明线路有数据传输,按照约定的波特率从低位到高位接收数据,数据接收完毕后,接着接收并比较奇偶校验位是否正确,如果正确则通知后续设备准备接收数据或存入缓存。由于UART是异步传输,没有传输同步时钟。为了能保证数据传输的正确性,UART 采用 16 倍数据波特率的时钟进行采样。每个数据有 16 个时钟采样,取中间的采样值,以保证采样不会滑码或误码。一般 UART 一帧的数据位数为 8,这样即使每个数据有一个时钟的误差,接收端也能正确地采样到数据。

        UART的接收数据时序为:当检测到数据的下降沿时,表明线路上有数据进行传输,这时计数器CNT开始计数,当计数器为24=16+8 时,采样的值为第0位数据;当计数器的值为40时,采样的值为第1位数据,依此类推,进行后面6个数据的采样。如果需要进行奇偶校验,则当计数器的值为152时,采样的值即为奇偶位;当计数器的值为 168 时,采样的值为"1"表示停止位,一帧数据接收完成。一个标准的10位异步串行通信协议(包含1个起始位、1个停止位和8个数据位)收发时序,如下:

           2>. SPI 通信原理   

           SPI的通信以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时)。也是所有基于SPI的设备共有的,它们是SDI(数据输入)、SDO(数据输出)、SCLK(时钟)、CS(片选)。

         (1)SDO – 主设备数据输出,从设备数据输入;

         (2)SDI – 主设备数据输入,从设备数据输出;

         (3)SCLK – 时钟信号,由主设备产生;

         (4)CS – 从设备使能信号,由主设备控制。

         CS是控制芯片是否被选中的,也就是说只有片选信号为预先规定的使能信号时(高电平或低电位),对此芯片的操作才有效。这就允许在同一总线上连接多个SPI设备成为可能。

接下来就负责通讯的3根线了。通讯是通过数据交换完成的,这里先要知道SPI是串行通讯协议,也就是说数据是一位一位的传输的。这就是SCLK时钟线存在的原因,由SCLK提供时钟脉冲,SDI,SDO则基于此脉冲完成数据传输。数据输出通过 SDO线,数据在时钟上升沿或下降沿时改变,在紧接着的下降沿或上升沿被读取。完成一位数据传输,输入也使用同样原理。因此,至少需要8次时钟信号的改变(上沿和下沿为一次),才能完成8位数据的传输。

           SCLK信号线只由主设备控制,从设备不能控制信号线。同样,在一个基于SPI的设备中,至少有一个主控设备。这样传输的特点:这样的传输方式有一个优点,与普通的串行通讯不同,普通的串行通讯一次连续传送至少8位数据,而SPI允许数据一位一位的传送,甚至允许暂停,因为SCLK时钟线由主控设备控制,当没有时钟跳变时,从设备不采集或传送数据。也就是说,主设备通过对SCLK时钟线的控制可以完成对通讯的控制。SPI还是一个数据交换协议:因为SPI的数据输入和输出线独立,所以允许同时完成数据的输入和输出。不同的SPI设备的实现方式不尽相同,主要是数据改变和采集的时间不同,在时钟信号上沿或下沿采集有不同定义,具体请参考相关器件的文档。

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

SPI是一个环形总线结构,由ss(cs)、sck、sdi、sdo构成,其时序其实很简单,主要是在sck的控制下,两个双向移位寄存器进行数据交换。

            3>. IIC工作原理

          IIC 接口的协议里面包括设备地址信息,可以同一总线上连接多个从设备,通过应答来互通数据及命令。但是传输速率有限,标准模式下可达到100Kbps,快速模式下可达到400Kbps(我们开发板一般在130Kbps),高速模式下达到4Mbps,不能实现全双工,不适合传输很多的数据。IIC总线是一个真正的多主机总线,总线上多个主机初始化传输,可以通过传输检测和仲裁来防止数据被破坏 。
 

 


 

 

 

 

  • 9
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
IICSPIUART是常见的串行通信接口标准,它们在硬件电路和通信方式上有一些区别。 IIC(Inter-Integrated Circuit)是一种多主从结构的串行通信接口。它使用两根线(串行数据线SDA和串行时钟线SCL)进行通信。IIC接口主要用于器件间的通信,比如在同一个电路板上的芯片之间传输数据。 SPI(Serial Peripheral Interface)是一种全双工串行通信接口。它使用四根线(片选线/使能线CS、时钟线SCLK、输入线MISO和输出线MOSI)进行通信。SPI接口一般由一个主设备和一个或多个从设备组成,通过片选线来选择通信的目标设备。SPI接口的通信速度较快,适用于高速数据传输和短距离通信。 UART(Universal Asynchronous Receiver Transmitter)是一种异步串行通信接口。它使用两根线(接收线RX和发送线TX)进行通信。UART接口一般用于设备之间的通信,例如计算机与外围设备之间的通信。UART接口的传输速度较慢,但易于实现和使用。 总结来说,IIC适用于器件间的通信,SPI适用于高速数据传输和短距离通信,UART适用于设备之间的通信。它们在硬件电路和通信方式上有所不同,因此在具体的应用场景中需要选择合适的接口来满足需求。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [I2C接口与SPIUART接口的区别](https://blog.csdn.net/chenhuanqiangnihao/article/details/123359352)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值