分享

UC头条:IIC, SPI, UART, 单总线

 TangMouXiong 2021-07-20

IIC与SPI通信

IIC

SPI通信

IIC与SPI的比较

UART

单总线

因为面试时被问到IIC和SPI通信,所以又重新学习了一下。

IIC

IIC顾名思义就是两根线,一根SCL(时钟线),一根SDA(数据线)。时钟线用来通过电平变化来标志数据传输过程,SDA线传输数据。

通信过程

首先,SCL处于高电平,SDA从高电平变化为低电平表示START信号,此时将SCL线拉低便可通过SDA线读写数据(SCL线高电平时无法读写)。

然后,由于IIC通信分为主设备(比如单片机),从设备可能会有多个,这时候我们在读写数据之前要先确定从设备,每个从设备会对应一个特定的地址,所以主设备需要传输一个七位地址(好像现在有10位的地址)和一位R/W读写位,每个从设备接受到地址会和自己的地址进行对比,相同就会传输一个应答信号给主机。

主机收到应答信号确认从设备后可以进行数据传输。数据传输一般一帧数据为为8位,尾随一位应答位。从设备收到应答位,做出应答或非应答信号表示数据的接收成功与否(读操作主从应答相反)。

主机接收到应答,选择STOP信号输出便可以结束一帧的传输。

点击加载图片

SPI通信

与IIC不同的是SPI通信有四根线,MOSI(masterinputslaveoutput,主发从收),MISO(主收从发),SCLK(时钟线)和SS(serialselect)(片选信号,每个从机都需要单独的一条SS线与主机相连,而不是所有从机共用一条)。

点击加载图片

通信过程

首先,主机拉低SS线选择要通信的从机。

开始发送数据,时钟线不断输出脉冲,MOSI和MISO可以在相应时钟沿同时进行数据(1bit)的传输,所以SPI是全双工通信。

SS线被拉高,结束传输。

SPI_MOD

此外在数据传输时钟沿选择上有四种方式

CKP(时钟极性)//0–>ss休闲状态为低电平,1–>ss休闲状态为高电平

CKE(时钟相位)//0–>第一个时钟沿采集信号,1–>第二个时钟沿采集信号

点击加载图片

理论上,SPI通信的速率取决于时钟频率,所以就这一点来说会比IIC的传输速率要快得多,硬件设备的最大时钟频率的大小可以影响SPI通信。

IIC与SPI的比较

对于SPI我觉得优点可以有以下几点

高速率,传输bit频率最大与系统的时钟频率相当

传输bit无限制,对于IIC每次传输8位一个字节,而SPI是一位一位的传输,所以避免了某些无意义位的传输

硬件软件的配置比较轻便简单,硬件方面,没有IIC从机对应的逻辑地址,一根SS线连接一个从机;软件方面也没有过多复杂的时序,IIC中的起始应答停止的信号反复转换显得有点复杂。

缺点我觉得就是SPI通信没有应答,可能导致数据传输无效,或者在从机出现故障时主机依旧发送数据,就显得有点盲目。还有主机设备需要更多的引脚接口才能容纳更多的从设备。而且主设备只能有一个。

UART

通用异步收发器,三根线RX(接收数据端),TX(发送数据端),GND。

点击加载图片

通信过程

数据线上休闲时为高电平,将其拉低表示起始信号,从而可以开始通信。

单总线

1-wire通信,如DS18B20(温度传感器),DHT11(温湿度传感器)

这是DS18B20的单总线电路图,由图中可以看到单总线是收发双向的,但是也不能同时进行收发,所以是半双工。

点击加载图片

以上传输过程

初始化,主机发送复位脉冲(拉低总线一段时间),从机产生应答脉冲(拉低总线一段时间)。

写bit,低电平时为写0,高电平时为写1

单总线的数据传输速率一般为16.3Kbit/s,最大可达142Kbit/s,通常情况下采用100Kbit/s以下的速率传输数据。相比于IIC和SPI传输速率比较慢,但是硬件结构比较简单。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多