1. 课程概述:I2C 触摸 LCD TFT 显示屏驱动开发工程案例
1.1 课程目标与定位
本课程旨在系统性地讲解如何基于 I2C 总线协议,驱动一块带有触摸功能的 LCD TFT 显示屏。课程从底层硬件时序出发,逐步深入到固件架构设计与应用层交互,最终交付一个可直接移植的工程级驱动模块。
通过本课程,你将掌握以下核心能力:
- I2C 协议深度理解:从物理层时序到多主机仲裁,再到高速模式(Fast Mode / Fast Mode Plus)的适配。
- 触摸控制器驱动:解析 I2C 触摸屏(如 FT5x06、GT911 系列)的寄存器映射与手势识别算法。
- LCD TFT 显示驱动:掌握 SPI/并行接口的初始化序列、帧缓冲管理与局部刷新策略。
- 双总线协同架构:设计 I2C(触摸)+ SPI(显示)的并发任务调度与资源互斥。
- 工程化交付:编写可移植的 HAL 层抽象、错误处理与性能基准测试。
核心交付物:一个基于状态机的触摸-显示联动驱动框架,支持 STM32 与 ESP32 双平台,代码量约 2000 行,含完整注释与单元测试用例。
1.2 适用硬件平台
课程案例覆盖两大主流嵌入式平台,兼顾资源受限与高性能场景:
| 平台 | MCU 型号 | 主频 | RAM | I2C 外设 | 典型开发板 |
|---|---|---|---|---|---|
| STM32 | STM32F103C8T6 / STM32F407VGT6 | 72 MHz / 168 MHz | 20 KB / 192 KB | I2C1 / I2C2 (支持 Fast Mode+) | Blue Pill / STM32F4-Discovery |
| ESP32 | ESP32-WROOM-32 | 240 MHz (双核) | 520 KB SRAM | I2C0 / I2C1 (硬件滤波可配置) | ESP32-DevKitC / NodeMCU-32S |
平台选择建议:若你侧重低功耗与工业控制,推荐 STM32 系列;若需要 Wi-Fi/BLE 联网与更丰富的软件生态,ESP32 是更优选择。课程代码通过宏定义
#ifdef PLATFORM_STM32 / #ifdef PLATFORM_ESP32 实现双平台切换。
1.3 课程前置知识要求
本课程定位为中级进阶,建议学习者具备以下基础:
- C 语言基础:指针操作、结构体、回调函数、链表或队列等基础数据结构。
- 嵌入式裸机开发经验:至少使用过一种 MCU(STM32 或 ESP32),熟悉 GPIO、定时器、中断的基本配置。
- 通信协议基础:了解 I2C 的起始/停止条件、从机地址、ACK/NACK 机制;了解 SPI 的 4 线模式与时钟极性。
- 工具链使用:能独立搭建 Keil / STM32CubeIDE 或 ESP-IDF / Arduino IDE 开发环境。
注意:如果你对 I2C 协议仅有模糊概念,建议先阅读本课程附录 A《I2C 协议速查手册》或观看配套的协议精讲视频。课程不会从“什么是 SDA/SCL”开始逐字讲解。
1.4 系统架构总览
下图展示了本课程最终交付的驱动软件架构。触摸与显示两条总线在应用层通过事件队列解耦,确保高刷新率下触摸响应不丢失。
1.5 课程章节结构
全课程共 30 章,按“基础 → 驱动 → 集成 → 优化”四阶段递进:
| 阶段 | 章节范围 | 核心内容 | 实践产出 |
|---|---|---|---|
| 基础篇 | 第 1–6 章 | I2C 协议精讲、触摸 IC 寄存器手册解读、LCD 初始化序列分析 | I2C 扫描工具、LCD 点亮工程 |
| 驱动篇 | 第 7–16 章 | 触摸驱动状态机、显示帧缓冲管理、双总线 DMA 传输 | 触摸坐标读取、显示画点/画线 API |
| 集成篇 | 第 17–24 章 | 事件队列实现、FreeRTOS 任务拆分、LVGL 移植适配 | 触摸-显示联动演示、GUI 控件响应 |
| 优化篇 | 第 25–30 章 | 功耗优化、I2C 总线错误恢复、性能基准测试与调优 | 驱动性能报告、低功耗触摸唤醒 |
学习路径建议:如果你时间紧张,可以跳过“优化篇”前两章,但第 28 章《I2C 总线错误恢复与看门狗协同》强烈建议阅读——这是工业级产品的必备保障。