1. 课程导论:SPI与I2C协议概述、小尺寸LCD显示屏应用场景、课程目标与前置知识

1.1 为什么需要学习SPI与I2C驱动LCD?

在嵌入式系统中,小尺寸LCD显示屏(通常指1.3寸~3.5寸,分辨率128×64~480×320)是信息交互的核心窗口。驱动这类显示屏的底层通信协议主要有两种:SPI(串行外设接口)和I2C(内部集成电路总线)。掌握这两种协议的驱动方法,是嵌入式工程师从“点亮LED”进阶到“构建人机界面”的关键一步。

💡 学习价值:市面上90%以上的小尺寸LCD模组(如SSD1306 OLED、ST7735 TFT、ILI9341 TFT)都支持SPI或I2C接口。学会驱动一种,即可快速迁移到其他型号。

1.2 SPI与I2C协议核心对比

两种协议在引脚数量、速率、拓扑结构上存在本质差异,下表从驱动LCD的角度进行对比:

对比维度 SPI(串行外设接口) I2C(内部集成电路总线)
信号线数量 4线(SCLK, MOSI, MISO, CS)
或3线(无MISO)
2线(SCL, SDA)
通信速率 典型10~80 MHz,最高可达100+ MHz 标准模式100 kHz,快速模式400 kHz,高速模式3.4 MHz
数据传输方向 全双工(同时收发) 半双工(分时收发)
从设备选择 片选线(CS/SS)独立寻址 7位或10位地址总线寻址
总线拓扑 一主多从(每个从设备独立CS) 多主多从(总线仲裁)
LCD驱动优势 刷新率高,适合视频/动画显示 引脚少,适合低功耗/小尺寸PCB
典型LCD应用 TFT彩色屏(ST7735, ILI9341) 单色OLED屏(SSD1306, SH1106)
📌 驱动选型原则:需要高帧率(>30 FPS)或全彩显示时优先选择SPI;对引脚数量敏感、刷新率要求不高(<10 FPS)时选择I2C。

1.3 小尺寸LCD显示屏应用场景

小尺寸LCD在嵌入式产品中无处不在,以下是典型应用场景:

  • 可穿戴设备:智能手表、运动手环、医疗监测手环(0.96寸~1.5寸OLED/TFT)
  • 智能家居面板:温控器、智能开关、空气质量检测仪(1.3寸~2.8寸TFT)
  • 工业手持终端:条码扫描器、对讲机、数据采集器(2.0寸~3.5寸半透屏)
  • 消费电子配件:MP3播放器、电子书阅读器、游戏掌机(1.8寸~3.2寸)
  • 汽车电子:仪表盘辅助屏、空调控制面板、后视镜显示器(2.0寸~3.5寸高亮屏)
小尺寸LCD应用场景拓扑 小尺寸LCD 可穿戴设备 智能家居面板 工业手持终端 消费电子配件 汽车电子辅助屏 典型尺寸范围:0.96寸~3.5寸 | 分辨率:128×64 ~ 480×320 | 接口:SPI / I2C / 并行

1.4 课程目标

通过本课程的学习,你将能够:

  1. 理解协议本质:掌握SPI和I2C的时序、帧格式、仲裁机制和电气特性。
  2. 独立驱动LCD:从零编写初始化序列、像素操作、矩形填充、字符显示等核心函数。
  3. 优化显示性能:学会使用DMA传输、双缓冲、局部刷新等技术提升帧率。
  4. 调试与排错:使用逻辑分析仪抓取波形,分析常见通信故障(时钟极性错误、地址冲突、应答丢失)。
  5. 工程化交付:编写可移植的驱动层代码,适配STM32、ESP32、Arduino等主流平台。

1.5 前置知识要求

为了顺利学习本课程,建议你具备以下基础:

知识领域 具体要求 推荐自学资源
C语言编程 掌握指针、结构体、位操作、函数指针 《C Primer Plus》第6版 第10~14章
单片机基础 了解GPIO配置、定时器中断、UART打印 STM32或Arduino入门教程
数字电路常识 理解高低电平、上拉电阻、推挽/开漏输出 《数字电子技术基础》阎石 第1~3章
开发工具 会使用IDE(Keil/STM32CubeIDE/Arduino IDE)和逻辑分析仪 对应IDE官方快速入门文档
⚠️ 重要提醒:如果你对“寄存器操作”或“中断优先级”尚不熟悉,建议先花2~3小时复习相关概念。本课程不会从零讲解单片机基础,而是聚焦于协议与LCD驱动的结合。

1.6 课程知识体系总览

本课程共30章,按“基础→驱动→优化→实战”四阶段递进:

课程四阶段知识体系 阶段一:基础 SPI/I2C协议详解 LCD控制器原理 阶段二:驱动 初始化序列编写 像素/字符/图形API 阶段三:优化 DMA传输加速 双缓冲/局部刷新 阶段四:实战 多平台移植 综合项目 📚 章节分布(共30章) 阶段一:第1~8章 | 阶段二:第9~18章 | 阶段三:第19~25章 | 阶段四:第26~30章 每章包含:理论讲解 + 代码示例 + 波形分析 + 课后练习 最终项目:基于SPI驱动2.8寸TFT彩屏的智能仪表盘

1.7 学习建议与工具准备

为了获得最佳学习效果,建议你提前准备好以下硬件和软件工具:

  • 硬件清单:
    • 开发板:STM32F103C8T6(Blue Pill)或 ESP32-DevKitC
    • LCD模组:0.96寸 SSD1306 OLED(I2C) + 1.8寸 ST7735 TFT(SPI)
    • 逻辑分析仪:Saleae Logic 8 或兼容克隆版(采样率≥24 MHz)
    • 杜邦线、面包板、USB-TTL转换器
  • 软件工具:
    • IDE:STM32CubeIDE(免费)或 Arduino IDE 2.x
    • 逻辑分析仪软件:PulseView(免费)或 Saleae Logic 2
    • 文档查阅:对应LCD控制器的数据手册(Datasheet)
🔧 省钱替代方案:如果暂时没有逻辑分析仪,可以使用MCU的GPIO翻转+示波器单通道观察SCLK波形,或使用软件模拟I2C/SPI并通过UART打印调试信息。