尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

通信四剑客:UART、SPI、I2C、1-Wire 的江湖恩仇录

通信四剑客:UART、SPI、I2C、1-Wire 的江湖恩仇录 在嵌入式系统中单片机与外部设备之间的数据交换离不开串行通信。UART、SPI、I2C 和 1-Wire是最常见的四种串行通信方式它们各自在引脚数、速率、拓扑结构、协议复杂度等方面有着显著差异适用于不同的应用场景。本文将对这四种协议进行系统、丰富的介绍并给出对比与选型建议。一、UART通用异步收发器1. 基本概念UARTUniversal Asynchronous Receiver/Transmitter是一种异步、全双工、点对点的串行通信协议。它不需要时钟线通信双方通过约定的波特率baud rate来同步数据采样。UART 是计算机串口、蓝牙模块、GPS 模块、调试控制台等最常用的接口之一。2. 电气特性与信号线TX发送主机发送数据到对方。RX接收主机接收对方的数据。GND共地参考。逻辑电平常见有TTL/CMOS 电平0~3.3V 或 0~5V直接连接单片机引脚。RS-232 电平±3V~±15V需要电平转换芯片如 MAX232。RS-485 电平差分信号抗干扰强适合长距离多机通信。3. 数据帧格式UART 以帧为单位传输数据每帧包含[起始位][数据位(5~9位)][校验位(可选)][停止位(1/1.5/2位)]起始位1 位低电平表示帧开始。数据位通常 8 位LSB 在前或 MSB 在前可配置通常 LSB 先。校验位奇校验、偶校验或无校验。停止位1 位高电平或 1.5/2 位表示帧结束。空闲时总线保持高电平。接收方在检测到下降沿起始位后延时 1.5 个位周期采样数据位以提高抗干扰能力。4. 波特率与误差波特率是每秒传输的码元数常见值9600、19200、38400、57600、115200 等。由于异步通信没有时钟线双方晶振误差会导致采样偏移。通常要求波特率误差 3%否则会出现数据错误。5. 优缺点优点仅需两根数据线TX、RX简单方便。全双工可同时收发。协议简单几乎所有单片机都有硬件 UART 外设。适合中等距离RS-232 约 15mRS-485 可达 1.2km。缺点点对点通信为主多机通信需要额外协议如 RS-485 地址码。异步无时钟对波特率精度要求高。速率较低通常不超过几 Mbps高速 UART 可达 4 Mbps。6. 典型应用调试串口printf 输出GPS、蓝牙、WiFi 模块工业 RS-485 总线与 PC 通信二、SPI串行外设接口1. 基本概念SPISerial Peripheral Interface是由 Motorola 提出的同步、全双工、高速串行通信协议。它采用主从架构由一个主机控制时钟一个或多个从机通过片选信号被选中通信。SPI 常用于 Flash 存储器、ADC/DAC、显示屏、传感器等高速外设。2. 信号线SCLKSerial Clock主机产生的时钟信号。MOSIMaster Out Slave In主机发送、从机接收的数据线。MISOMaster In Slave Out从机发送、主机接收的数据线。CS/SSChip Select / Slave Select低电平有效的片选信号用于选择从机。有些变体使用三线制共用数据线半双工或四线制标准全双工。3. 工作原理与模式SPI 通信基于移位寄存器。主机和从机各自有一个移位寄存器在时钟边沿同时移出和移入数据实现全双工交换。时钟极性与相位CPOL、CPHACPOL0空闲时 SCLK 为低电平。CPOL1空闲时 SCLK 为高电平。CPHA0第一个时钟边沿采样数据。CPHA1第二个时钟边沿采样数据。四种组合模式模式 0、1、2、3需主机与从机配置一致。4. 拓扑结构一主一从最简单直接连接。一主多从主机为每个从机分配独立的 CS 引脚或使用菊花链daisy chain方式。5. 优缺点优点高速时钟可达数十 MHz甚至 100 MHz 以上。全双工同时收发数据。协议简单无寻址、无应答硬件实现容易。推挽驱动信号质量好无需上拉电阻。缺点所需引脚较多至少 4 根多从机时需更多 CS。无标准协议层不同器件配置差异大。无应答机制无法确认从机是否收到数据。传输距离短通常用于板级通信 几十厘米。6. 典型应用SPI FlashW25Q128高速 ADC/DACTFT 显示屏SD 卡SPI 模式无线模块nRF24L01、LoRa三、I2CInter-Integrated Circuit又称 IIC1. 基本概念I2C 是 Philips现 NXP开发的同步、半双工、多主多从串行总线。它仅用两根线SDA、SCL即可连接多个设备通过地址进行寻址。I2C 广泛应用于板级低速外设如 EEPROM、传感器、RTC、PMIC 等。2. 信号线SDASerial Data串行数据线。SCLSerial Clock串行时钟线由主机产生。GND共地。两根线均通过上拉电阻连接到电源通常 3.3V 或 5V采用开漏输出实现“线与”逻辑。3. 电气特性与地址上拉电阻典型值 4.7kΩ根据总线电容和速率调整。逻辑电平低电平由设备拉低高电平由上拉电阻拉高。地址每个从机有 7 位或 10 位地址。7 位地址模式下总线上最多可挂 112 个设备部分地址保留。常见地址如 0x50EEPROM、0x68MPU6050、0x48ADS1115。4. 通信协议I2C 通信以字节为单位每字节 8 位MSB 在前。每次传输由主机发起以起始条件开始停止条件结束。起始条件STARTSCL 高电平时SDA 从高到低跳变。停止条件STOPSCL 高电平时SDA 从低到高跳变。数据位SDA 在 SCL 低电平时改变在 SCL 高电平时保持稳定。应答位ACK/NACK每传输完 8 位数据后接收方在第 9 个时钟脉冲拉低 SDA 表示 ACK保持高电平表示 NACK。传输格式[START][从机地址(7位)R/W位][ACK][数据字节][ACK]...[STOP]5. 时钟拉伸Clock Stretching当从机需要更多时间处理数据时可以将 SCL 拉低使主机等待直到从机释放 SCL。这是一种流控机制。6. 多主机与仲裁I2C 支持多主机。当多个主机同时发送时通过“线与”机制进行仲裁发送低电平的主机优先竞争失败的主机自动退出不破坏总线数据。7. 速率模式标准模式100 kbps快速模式400 kbps快速模式1 Mbps高速模式3.4 Mbps超快速模式5 Mbps单向8. 优缺点优点仅需两根线节省引脚。支持多主多从地址寻址灵活。有应答机制可靠性较高。可挂载大量设备适合板级传感器网络。缺点速率较低通常 400 kbps。开漏结构导致上升沿较慢影响高速通信。协议相对复杂需要处理起始/停止/应答/仲裁等。半双工同一时刻只能单向传输。9. 典型应用EEPROMAT24C02传感器温度、湿度、加速度计、陀螺仪RTC 时钟芯片电源管理 ICOLED 显示屏部分四、1-Wire单总线1. 基本概念1-Wire 是 Dallas Semiconductor现 Maxim Integrated / ADI开发的单线、异步、半双工串行通信协议。它仅用一根数据线DQ加地线即可实现主机与多个从机之间的通信甚至可以通过数据线为从机寄生供电。最典型的器件是 DS18B20 数字温度传感器。2. 电气特性数据线 DQ开漏结构外接上拉电阻典型 4.7kΩ。空闲状态高电平由上拉电阻维持。驱动方式任何设备都可以拉低 DQ释放后由上拉电阻拉高实现“线与”。3. 供电方式外部供电从机有独立 VDD 引脚提供稳定电源。寄生供电从机无外部电源利用数据线高电平期间向内部电容充电。在需要大电流操作如温度转换时主机需在数据线上提供强上拉用 MOSFET 直接拉高。4. 通信协议1-Wire 通信以时隙time slot为基本单位每个时隙传输一位。通信总是由主机发起。初始化复位/存在脉冲主机拉低 DQ 至少 480 µs然后释放。从机检测到上升沿后拉低 DQ 60~240 µs 作为存在脉冲应答。主机检测到低电平表示有从机存在。写时隙写 0主机拉低 DQ 至少 60 µs。写 1主机拉低 DQ 1~15 µs 后释放由上拉电阻拉高。从机在拉低后 15~60 µs 窗口内采样。读时隙主机拉低 DQ 1 µs 以上然后释放。从机若发送 0 则继续拉低发送 1 则释放。主机在拉低后 15 µs 内采样 DQ 电平。数据字节LSB 在前每字节 8 位。标准速率约 16.3 kbps过驱动模式约 142 kbps。5. 设备寻址每个 1-Wire 器件都有全球唯一的 64 位 ROM 地址包括8 位家族码如 DS18B20 为 0x2848 位序列号8 位 CRC 校验ROM 命令用于设备选择与管理Skip ROM0xCC跳过寻址广播命令。Match ROM0x55指定 64 位地址只有匹配设备响应。Search ROM0xF0枚举总线上的所有设备地址。Read ROM0x33读取单个设备的地址。6. 优缺点优点仅需一根数据线布线极简。支持多设备并联唯一地址寻址。可寄生供电省去电源线。适合长距离低速传输可达 100 米以上。缺点速率极低标准 16.3 kbps。时序要求严格软件模拟易受中断影响。抗干扰能力一般不如差分总线。多设备枚举算法较复杂。7. 典型应用多点温度采集DS18B20身份识别iButton小容量 EEPROMDS2431传感器网络五、四种协议对比特性UARTSPII2C1-Wire信号线数2TX/RXGND4SCLK/MOSI/MISO/CSGND2SDA/SCLGND1DQGND时钟方式异步双方约定波特率同步主机提供时钟同步主机提供时钟异步时隙定时双工性全双工全双工半双工半双工典型速率9600~4 Mbps1~100 Mbps100 kbps~3.4 Mbps16.3 kbps标准多设备支持通常点对点或 RS-485 多机一主多从需片选多主多从地址寻址多设备唯一 64 位地址寻址方式无或地址位片选 CS7/10 位地址64 位 ROM 地址应答机制无无ACK/NACK存在脉冲电平类型TTL/RS-232/RS-485推挽通常开漏上拉开漏上拉传输距离RS-232 15mRS-485 1.2km板级30cm板级1m可达 100m复杂度低低硬件简单中等协议较复杂高时序严格典型应用调试、GPS、蓝牙Flash、ADC、显示屏EEPROM、传感器、RTC温度传感器、iButton六、选型指南需要最少引脚、长距离、多传感器节点→ 选择1-Wire如 DS18B20 温度网络。需要高速、全双工、板级传输→ 选择SPI如 SPI Flash、TFT 屏。需要节省引脚、多设备共享总线、中低速→ 选择I2C如传感器、EEPROM。需要与 PC 通信、调试输出、简单点对点→ 选择UART如串口调试、蓝牙模块。实际项目中单片机通常同时集成多种外设可以根据需求灵活组合。例如用 I2C 读取传感器用 SPI 驱动显示屏用 UART 打印日志用 1-Wire 采集多点温度。七、总结UART、SPI、I2C 和 1-Wire 是嵌入式系统中最基础也最重要的四种串行通信协议。它们各有特色UART异步全双工简单通用适合点对点和调试。SPI同步全双工高速高效适合高速外设。I2C两线多设备地址寻址适合板上传感器网络。1-Wire单线低速可寄生供电适合分布式传感器。理解它们的电气特性、协议时序、拓扑结构和应用场景是嵌入式工程师的基本功。选型时需综合考虑引脚资源、速率要求、通信距离、设备数量、功耗和开发复杂度才能设计出稳定可靠的系统。
返回列表