一、串口UART1. UART介绍通用异步收发传输器Universal Asynchronous Receiver/Transmitter的缩写是一种用于串行通信的硬件接口协议。它允许设备之间通过简单的两根线TX发送、RX接收进行全双工异步数据传输无需时钟信号同步广泛应用于微控制器、嵌入式系统、计算机外设等场景2.工作原理1接线TX(发送)RX(接收)交叉连接外加GND共地最少2根线2同步方式异步没有同步时钟线靠双方约定波特率常见9600/115200来对时3拓扑点对点一收一发一UART口只能挂一设备4全/半双工全双工这解释双工只能单向半双工双向都能走但不能同时全双工双向都能走可以同时进行TX、RX 独立走5速率一般9600~3Mbps115200最常见3.特点1.简单粗暴最为常见的一种通信协议2.无地址机制不支持多设备挂同一条线上3.长距离相比IIC和SPI更耐造RS232/RS485 就是 UART 的电平变种能跑几十米4.通信格式起始位1数据位8校验位0/1停止位1/1.5/25.经典应用场景1.printf重定向串口调试打印输出2.蓝牙模块驱动例如BT07 BT311 M02蓝牙模块AT指令发送等二、IIC1.IIC介绍IICInter-Integrated Circuit集成电路互联总线​ 是一种同步、半双工、多主多从、串行通信总线由飞利浦现恩智浦在 1982 年发明用于在同一块电路板上连接低速外设2.工作原理1接线SDA(数据线)SCL(时钟线)外加GND共地2根线挂所有设备2同步方式同步有SCL时钟线3拓扑多主多从每条线上可以挂多个设备每个设备有7位/10位地址主机通过发送相应从机地址来进行通信4全/半双工半双工SDA一根线分时收发5速率标准100Kbps快速400Kbps高速3.4Mbps3.特点1.真正的总线式省引脚通过发送不同从机地址进行主从通信2.有应答/非应答机制3.开漏输出上拉电阻遵循线与逻辑任意一个拉低总线就会变低只有都将总线释放靠外部上拉电阻拉高总线才会呈现高电平4.串行数据按位在单根线上逐个传输一句话记住它用两根线SDA SCL挂一堆设备每次喊地址找人干活谁喊谁主、被喊的从说完就放总线给别人用4.通信格式起始信号 从机地址7bit 读写位0写1读 ACK从机应答 数据字节MSB先行 ACK 停止信号1起始信号SCL 为高电平时SDA 由高→低产生一个下降沿2停止信号SCL 为高电平时SDA 由低→高产生一个上升沿3地址与读写7 位从机地址左对齐最低位为读写位0 写 / 1 读组成 8 位发送4应答机制每发送完一个字节后接收方在第 9 个 SCL 时钟周期拉低 SDA 表示 ACK若接收方不拉低保持高电平则为 NACK通常表示传输结束或从机忙5数据字节每次传输 1 字节8 位MSB最高位先发可连续发送多个字节每字节后跟一个 ACK5.经典应用场景1.OLED屏幕驱动2.光照传感器BH1750温湿度传感器DHT11等等3.EEPROM三、SPI1.SPI介绍SPISerial Peripheral Interface串行外设接口​ 是一种同步、全双工、一主多从、串行通信总线由摩托罗拉在 1980 年代推出用于 MCU 与外围芯片之间高速交换数据2.工作原理1接线CS(片选线)SCK(时钟线)MISO主收从发MOSI主发从收标准为4根线若为OLED/LCD屏幕驱动则只需要三根线CS(片选线)SCK(时钟线)MOSI主发从收2同步方式同步有SCK时钟线3拓扑一主多从每个从设备独占一条CS片选线主设备和那个从设备通信就先把那个从机的CS线拉低4全/半双工全双工MOSI/MISO 同时跑主机在SCK低电平期间把数据逐位放在MOSI线上从机在高电平期间进行读取随着相同的SCK同步时钟信号下从设备在SCK低电平期间把数据逐位放在MISO线上主机在高电平期间进行读取5速率几 Mbps ~ 几十 Mbps常见 10M/20M/50M高端能上百 M3.特点1.最快的板级协议无地址、无应答纯靠 CS 选人2.无标准谁来发的仲裁全靠主设备控 CS 和 SCK3.引脚占用多N 个从设备要多 N 根 CS4.通信格式SPI 通信以主设备产生的 SCK 时钟为同步基准数据在 MOSI 和 MISO 线上同时传输。每次传输以 CS 片选信号拉低开始以 CS 拉高结束。1数据帧结构SPI 没有固定的帧格式通常以 8 位1 字节为基本传输单位MSB最高位先行。主设备在 SCK 的每个时钟周期通过 MOSI 发送 1 位数据同时从设备通过 MISO 返回 1 位数据实现全双工传输。连续传输多个字节时CS 保持低电平SCK 持续输出时钟脉冲。2时钟极性CPOL与时钟相位CPHASPI 通过 CPOL 和 CPHA 两个参数组合出 4 种工作模式决定数据在 SCK 的哪个边沿被采样和发送CPOLClock Polarity定义 SCK 空闲时的电平。CPOL 0空闲时 SCK 为低电平CPOL 1空闲时 SCK 为高电平。CPHAClock Phase定义数据在 SCK 的哪个边沿被采样。CPHA 0在 SCK 的第一个边沿上升沿或下降沿取决于 CPOL采样数据CPHA 1在 SCK 的第二个边沿采样数据。3四种模式详解模式 0 ~ 模式 3模式 0CPOL0, CPHA0SCK 空闲为低在 SCK 上升沿采样数据下降沿发送数据。这是最常用的模式大多数 SPI 外设默认支持。模式 1CPOL0, CPHA1SCK 空闲为低在 SCK 下降沿采样数据上升沿发送数据。模式 2CPOL1, CPHA0SCK 空闲为高在 SCK 下降沿采样数据上升沿发送数据。模式 3CPOL1, CPHA1SCK 空闲为高在 SCK 上升沿采样数据下降沿发送数据。4数据传输时序示例模式 0以模式 0CPOL0, CPHA0传输 1 字节 0xA5二进制 1010_0101为例主设备将 CS 拉低选中从设备。SCK 空闲为低主设备在 SCK 下降沿将数据位放到 MOSI 线上第一位 MSB 1。SCK 上升沿到来时从设备在 MOSI 上采样该位同时从设备在 MISO 上放置自己的数据位供主设备在下一个上升沿采样。重复步骤 2-3 共 8 个 SCK 周期完成 1 字节传输。主设备将 CS 拉高结束本次传输。主从双方必须工作在相同的 CPOL 和 CPHA 模式下否则采样边沿错位会导致数据错误。实际开发中需查阅从设备数据手册确认其支持的 SPI 模式并在主设备端配置一致。5.经典应用场景1.OLED/LCD屏幕驱动2.FlashW25Q643.ADC四、三者区别下表从多个维度对 UART、IIC 和 SPI 三种常见串行通信协议进行对比帮助读者快速理解各自的特点与适用场景对比项UARTIICSPI接线方式TX、RX 两根数据线 GND共地交叉连接SDA数据线、SCL时钟线两根线 GND所有设备挂在同一总线上CS片选、SCK时钟、MISO、MOSI 四根线标准每增加一个从设备需多一根 CS同步方式异步无时钟线靠双方约定波特率同步同步由 SCL 时钟线提供同步信号同步由 SCK 时钟线提供同步信号拓扑结构点对点一收一发一个 UART 口只能挂一个设备多主多从总线上可挂多个设备通过地址区分一主多从每个从设备独占一条 CS 片选线双工模式全双工TX 和 RX 独立同时收发半双工SDA 一根线分时收发全双工MOSI 和 MISO 可同时传输速率范围一般 9600 ~ 3 Mbps115200 最常见标准 100 Kbps快速 400 Kbps高速 3.4 Mbps几 Mbps ~ 几十 Mbps常见 10M/20M/50M高端可达上百 Mbps有无地址/应答机制无地址机制不支持多设备挂同一条线无硬件应答有 7 位/10 位从机地址每字节后跟 ACK/NACK 应答无地址机制无硬件应答纯靠 CS 片选选中从设备典型应用场景串口调试打印输出、蓝牙模块驱动BT07/BT311/M02、GPS 模块、RS232/RS485 通信OLED 屏幕驱动、温湿度传感器DHT11/BH1750、EEPROM 存储、RTC 时钟模块OLED/LCD 屏幕驱动、Flash 存储W25Q64、ADC 采样、高速传感器、SD 卡优缺点优点简单易用、硬件成本低、传输距离远RS232/RS485 可达几十米缺点速率较低、无多设备挂载能力、无硬件纠错优点引脚少仅 2 线、支持多设备总线、有应答机制保证可靠性缺点速率相对较低、半双工效率受限、传输距离短优点速率最快、全双工效率高、无地址开销、协议简单灵活缺点引脚占用多N 个从设备需 N3 根线、无应答机制、无多主仲裁