uart、iic、spi通信总线
一、uart
uart一种异步串行通信协议,用于在两个设备之间传输数据。它将数据按位发送,不需要时钟信号进行同步。在uart通信中,数据通过两根线路传输:发送线(TX)和接收线(RX)。它主要用于简单的点对点通信。
工作原理:数据被拆分成多个数据位,并通过串行方式(一个接一个地)发送,接收方根据预定的波特率解析数据。
应用场景:常见于调试接口、串口通信、GPS模块、蓝牙、WIFI模块等。
数据帧格式:异步通信,双方各自使用自己的时钟信号进行数据传输,由于双方的始终不一样,就算提前约定好了波特率,随着传输数据量的增加,双方数据收发就会累计一定的误差,所以为了避免这个误差,我们需要对传输收发的数据进行约定,规范好收发的格式来消除误差。
空闲位:当不进行数据收发时,数据线处于高电平状态
起始位:1bit低电平,一帧数据传输的开始
数据位:5-8bit数据位,传输的数据
校验位:1bit,可有可无
奇校验:一帧数据传输后保证数据位和校验位1的个数是一个奇数;
偶校验:一帧数据传输后保证数据位和校验位1的个数是一个偶数。
停止位:1-2bit高电平,一帧数据结束的标志
二、iic
iic是一种同步串行通信协议,有Philips(现为NXP)开发,广泛用于低速、短距离的多设备通信。iic允许多个设备(包括多个主设备和从设备)共享2根线路:数据线(SDA)和时钟线(SCL)。
工作原理:由主设备控制时钟线(SCL),通过数据线(SDA)与多个从设备通信。每个设备由唯一的地址,主设备通过设备地址选择要通信的设备。、
iic的信号:
起始信号(SCL为高电平期间,SDA由高电平向低电平变化)。
终止信号(SCL为高电平期间,SDA由低电平向高电平变化)。
应答信号(接收方接收到数据后,还可以进行下一次8bit数据的接收)。
非应答信号(接收方接收到数据后,不可以进行下一次8bit数据的接收)
数据接收和发送信号。
应用场景:传感器、EEPROM、RTC(实时时钟)、显示屏等。
主机和从机通信过程分析:
1、主机给从机发送数据
2、主机从从机读取数据
三、spi
spi是一种同步串行通信协议,用于主从设备之间的高速数据传输。spi是全双工通信,意味着数据可以同时在两个方向上传输。它使用四根信号线:时钟线(SCK)、主设备输入从设备输出线(MISO)、主设备输出从设备输入线(MOSI)和片选线(SS)来进行通信。
工作原理:主设备提供时钟信号(SCK),通过数据线(MISO和MOSI)与从设备进行双向数据传输。每个从设备需要一个单独的片选信号(SS)来进行通信。
应用场景:存储设备(如Flash、SD卡)、显示屏、传感器、音频解码器等。
时序分析:
spi主从机通信需要通过两个时钟特性进行约定:
1、时钟极性(CPOL):空闲状态下时钟线电平的高低
时钟极性为1:空闲状态下时钟线保持高电平;
时钟极性为0:空闲状态下时钟线保持低电平。
2、时钟相位(CPHA):通信进行数据采样(数据读取)在时钟前沿还是时钟后沿
时钟相位1:在时钟后沿进行数据采样,在时钟前沿进行数据输出;
时钟相位1:在时钟前沿进行数据采样,在时钟后沿进行数据输出。
四、总结对比
特性 | uart | iic | spi |
数据传输模式 | 异步(全双工/半双工) | 同步(半双工) | 同步(全双工) |
引脚数量 | 2根(TX/RX) | 2根(SDA/SCL) | 4根(MISO/MOSI/SCK/SS) |
支持的设备数量 | 1对1(点对点) | 多主多从(最多127个设备) | 主从结构(多个从设备) |
通信速度 | 低至中速(9600bps-115200bps) | 低速(100kbps-3.4Mbps) | 高速(数Mbps) |
距离 | 短距离(通常几米) | 短至中距离(通常几米) | 短至中距离(通常几米) |
优点 | 简单、硬件需求少、全双工 | 适合多个设备、引脚少 | 高速、全双工、稳定可靠 |
缺点 | 只能连接两个设备、速度有限 | 传输速率较低、易受噪音干扰 | 需要更多引脚、不支持多主设备 |