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 课程前置知识要求

本课程定位为中级进阶,建议学习者具备以下基础:

  1. C 语言基础:指针操作、结构体、回调函数、链表或队列等基础数据结构。
  2. 嵌入式裸机开发经验:至少使用过一种 MCU(STM32 或 ESP32),熟悉 GPIO、定时器、中断的基本配置。
  3. 通信协议基础:了解 I2C 的起始/停止条件、从机地址、ACK/NACK 机制;了解 SPI 的 4 线模式与时钟极性。
  4. 工具链使用:能独立搭建 Keil / STM32CubeIDE 或 ESP-IDF / Arduino IDE 开发环境。
注意:如果你对 I2C 协议仅有模糊概念,建议先阅读本课程附录 A《I2C 协议速查手册》或观看配套的协议精讲视频。课程不会从“什么是 SDA/SCL”开始逐字讲解。

1.4 系统架构总览

下图展示了本课程最终交付的驱动软件架构。触摸与显示两条总线在应用层通过事件队列解耦,确保高刷新率下触摸响应不丢失。

I2C 触摸 LCD TFT 驱动软件架构图 I2C 触摸 LCD TFT 驱动软件架构 应用层 (Application Layer) GUI 框架 (LVGL / uGFX) · 手势识别 · 用户回调 触摸事件队列 (FIFO) 触摸驱动层 (Touch HAL) I2C 读写 · 寄存器映射 · 去抖滤波 显示驱动层 (Display HAL) SPI 初始化 · 帧缓冲 · 局部刷新 硬件抽象层 (HAL / BSP) GPIO · I2C 时序 · SPI DMA · 定时器中断

1.5 课程章节结构

全课程共 30 章,按“基础 → 驱动 → 集成 → 优化”四阶段递进:

阶段 章节范围 核心内容 实践产出
基础篇 第 1–6 章 I2C 协议精讲、触摸 IC 寄存器手册解读、LCD 初始化序列分析 I2C 扫描工具、LCD 点亮工程
驱动篇 第 7–16 章 触摸驱动状态机、显示帧缓冲管理、双总线 DMA 传输 触摸坐标读取、显示画点/画线 API
集成篇 第 17–24 章 事件队列实现、FreeRTOS 任务拆分、LVGL 移植适配 触摸-显示联动演示、GUI 控件响应
优化篇 第 25–30 章 功耗优化、I2C 总线错误恢复、性能基准测试与调优 驱动性能报告、低功耗触摸唤醒
学习路径建议:如果你时间紧张,可以跳过“优化篇”前两章,但第 28 章《I2C 总线错误恢复与看门狗协同》强烈建议阅读——这是工业级产品的必备保障。