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寸高亮屏)
1.4 课程目标
通过本课程的学习,你将能够:
- 理解协议本质:掌握SPI和I2C的时序、帧格式、仲裁机制和电气特性。
- 独立驱动LCD:从零编写初始化序列、像素操作、矩形填充、字符显示等核心函数。
- 优化显示性能:学会使用DMA传输、双缓冲、局部刷新等技术提升帧率。
- 调试与排错:使用逻辑分析仪抓取波形,分析常见通信故障(时钟极性错误、地址冲突、应答丢失)。
- 工程化交付:编写可移植的驱动层代码,适配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章,按“基础→驱动→优化→实战”四阶段递进:
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打印调试信息。