1. 项目概述
最近在做一个嵌入式GUI项目,需要驱动一块3.5英寸的16bit MCU接口LCD屏幕。经过一番折腾,终于成功用STM32H743通过FMC接口点亮了屏幕,并实现了基本的触摸功能。这个过程中踩了不少坑,也积累了一些经验,今天就来详细分享一下整个实现过程。
这个项目的主要技术点包括:
- STM32H743的FMC接口配置
- 16bit MCU屏的驱动原理
- CubeMX的图形化配置
- 触摸屏驱动实现
- 基础图形绘制功能
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 硬件选型与准备
2.1 屏幕选型
我选择的是中景园的3.5英寸IPS电容触摸屏,具体型号是带ST7796驱动和GT911触控芯片的那款。主要参数如下:
- 分辨率:320×480
- 接口类型:16bit MCU并口
- 驱动IC:ST7796
- 触控IC:GT911(I2C接口)
- 视角:全视角IPS硬屏

这块屏幕的接口定义如下:
code复制DB0-DB15: 16位数据总线
WR: 写使能
RD: 读使能
RS: 寄存器选择
RESET: 复位
CS: 片选
2.2 MCU选型
开发板使用的是鹿小班的STM32H743ZIT6核心板,主要看中它的以下特性:
- Cortex-M7内核,最高480MHz主频
- 丰富的存储资源:2MB Flash,1MB RAM
- 内置FMC控制器,支持16bit总线接口
- 多个硬件I2C接口(用于触摸屏)

使用H7系列需要注意的几个问题:
- MPU必须正确配置,否则很多功能无法正常工作
- 内存管理更复杂,最大连续空间只有512KB
- 虽然标称480MHz,但实际使用建议不超过240MHz
3. CubeMX工程配置
3.1 时钟配置
首先配置时钟树,使用外部25MHz晶振作为HSE时钟源,经过PLL倍频后系统时钟设置为200MHz。这个频率在稳定性和性能之间取得了较好的平衡。

3.2 MPU配置
H7系列的MPU配置非常关键。我设置了Region 0用于FMC访问,配置如下:
- 基地址:0x6C000000
- 大小:64MB
- 类型:Normal
- 缓存策略:Write-through, read allocate

