1. 课程导论:为什么需要多串口扩展?SPI与I2C总线对比概览

1.1 嵌入式系统中的串口资源困境

在嵌入式开发中,UART(通用异步收发传输器)是最常用的串行通信接口之一,广泛用于传感器数据采集、GPS模块通信、蓝牙/Wi-Fi模组对接、调试日志输出等场景。然而,绝大多数MCU(微控制器)原生提供的UART外设数量非常有限:

  • 低端MCU(如STM32F0、GD32E1系列):通常只有1~2个UART。
  • 中端MCU(如STM32F4、AT32F4系列):通常提供3~5个UART。
  • 高端MCU(如i.MX RT、STM32H7系列):最多可达8~10个UART,但引脚复用冲突严重。

当项目需要同时挂接4个、6个甚至更多串口设备时,原生UART数量往往成为系统瓶颈。此时,通过高速总线(SPI/I²C)扩展UART成为最经济、最灵活的解决方案。

核心痛点: 一个典型的物联网网关可能需要同时连接GPS(UART1)、4G模块(UART2)、LoRa模块(UART3)、蓝牙(UART4)和调试串口(UART5),而多数MCU无法原生提供5个以上独立UART。

1.2 多串口扩展的两种主流方案

业界主流的串口扩展方案分为两大类:SPI转UART 和 I²C转UART。两者均通过专用桥接芯片实现,但总线特性决定了它们在性能、引脚数和系统复杂度上的显著差异。

对比维度 SPI转UART I²C转UART
总线速率 典型10~60 Mbps(全双工) 标准100 kHz~3.4 MHz(半双工)
引脚数量 4线(SCLK、MOSI、MISO、CS) 2线(SCL、SDA)
多设备支持 每设备独立CS引脚,N设备需N+3线 7位/10位地址,2线可挂最多127个设备
传输模式 全双工,主从同步 半双工,主从同步(带时钟拉伸)
典型芯片 SC16IS752、WK2124、GM8125 SC16IS740、MAX3107、PCA9665
适用场景 高速串口(≥921600 bps)、大数据量 低速串口(≤115200 bps)、引脚受限

1.3 总线架构对比:SPI vs I²C

为了更直观地理解两种方案的本质差异,下面通过系统架构图展示SPI和I²C在连接多串口扩展芯片时的拓扑结构。

SPI vs I²C 多串口扩展拓扑对比 SPI 总线拓扑 MCU 主控 (SPI Master) SCLK / MOSI / MISO UART 扩展芯片 #1 CS1 UART 扩展芯片 #2 CS2 UART 扩展芯片 #3 CS3 每增加一个设备,需增加一个CS引脚 N设备 = N+3 根信号线 全双工,速率可达 10~60 Mbps I²C 总线拓扑 MCU 主控 (I²C Master) SCL / SDA(仅2线) UART 扩展 #1 地址 0x50 UART 扩展 #2 地址 0x51 UART 扩展 #3 地址 0x52 所有设备共享SCL/SDA,通过地址区分 N设备 = 2 根信号线(最多127个设备) 半双工,速率 100 kHz ~ 3.4 MHz

1.4 如何选择:决策树与场景匹配

在实际项目中,选择SPI还是I²C方案需要综合评估以下因素:

  1. 波特率需求:如果串口波特率超过 115200 bps(如 921600 bps 或 1.5 Mbps),必须选择SPI方案,因为I²C的时钟速率无法支撑高速连续数据流。
  2. 引脚预算:如果MCU引脚极度紧张(如TSSOP-20封装),I²C的2线制具有明显优势。
  3. 设备数量:需要扩展4个以上UART时,I²C的地址复用机制比SPI的独立CS更节省引脚。
  4. 实时性要求:SPI的全双工特性适合需要同时收发数据的场景(如与4G模块的AT指令交互)。
  5. 软件复杂度:I²C的协议栈更复杂(需处理ACK/NACK、时钟拉伸、多主机仲裁),而SPI的驱动编写相对简单。
经验法则: 当串口波特率 ≤ 115200 bps 且引脚受限时,优先选择I²C转UART;当波特率 ≥ 460800 bps 或需要全双工高速通信时,必须选择SPI转UART。

1.5 课程路线图

本课程将按照以下结构逐步深入:

章节 核心内容 实践目标
第1章 课程导论与总线对比 理解多串口扩展的必要性,掌握SPI/I²C选型原则
第2~5章 SPI转UART芯片详解(SC16IS752/WK2124) 完成硬件设计、驱动移植、双工通信测试
第6~9章 I²C转UART芯片详解(SC16IS740/MAX3107) 实现I²C从机配置、中断处理、低功耗设计
第10章 综合实战:8路串口扩展网关 完成从原理图到量产固件的全流程
前置要求: 本课程假设学员已掌握基础嵌入式C语言编程、MCU GPIO/UART基本操作,并具备阅读芯片数据手册的能力。如对SPI/I²C总线协议尚不熟悉,建议先学习相关基础课程。