硬件平台选型:MCU选型要点与显示接口详解

做嵌入式GUI,选硬件平台是第一步,也是最容易踩坑的一步。我见过不少朋友,软件写得漂亮,结果硬件资源不够,最后只能砍功能重来。今天咱们就聊聊MCU选型那些事儿。

MCU选型三要素:RAM、Flash、主频

说白了,这三个参数决定了你的GUI能跑多流畅、能画多复杂。我个人的习惯是:先定RAM,再看Flash,最后确认主频。

RAM:GUI的命脉

RAM决定了你能开多大的显存缓冲区。举个例子,一个320×240的16位色屏,单缓冲就要320×240×2 = 153,600字节,约150KB。如果你要做双缓冲,直接翻倍到300KB。

经验公式:RAM需求 = 显存缓冲区 + 控件对象池 + 系统堆栈 + 任务栈

我个人建议:至少留出显存大小2倍以上的RAM给GUI使用。

屏幕分辨率 色深 单缓冲RAM 推荐MCU RAM
320×240 16位 150KB ≥512KB
480×272 16位 261KB ≥1MB
800×480 16位 768KB ≥2MB

避坑指南:我曾经选了一颗256KB RAM的MCU做320×240屏,结果发现光显存就占了150KB,剩下100KB要跑系统、存控件、做动画,最后只能砍掉窗口切换动画。所以,RAM宁大勿小。

Flash:存代码和资源

Flash主要存三样东西:程序代码、字库、图片资源。一个中文字库(GB2312,16×16点阵)大约260KB,一张全屏图片(320×240,16位色)约150KB。你想想看,如果要做多语言界面,Flash很快就吃完了。

  • 纯代码:GUI框架+驱动+应用逻辑,约100-300KB
  • 字库:中文字库260KB起,英文字库小很多
  • 图片资源:每张全屏图150KB起

我建议起步选1MB以上的Flash,如果要做复杂界面,2MB或4MB更稳妥。

主频:决定刷新率

主频影响的是像素填充速度。比如一个320×240的屏,刷新一帧需要填充76,800个像素。如果主频太低,刷屏就会卡顿。

嗯,这里要注意:主频不是越高越好。高主频意味着高功耗、高发热。对于手持设备,平衡点很重要。我个人经验是:

  • 简单菜单界面:72MHz够用
  • 带动画的界面:120MHz起步
  • 视频播放级别:200MHz以上

显示驱动IC选择

显示驱动IC决定了你怎么跟屏幕打交道。市面上常见的驱动IC分几类:

驱动IC类型 典型型号 特点 适用场景
SPI接口 ILI9341, ST7789 引脚少,速度慢 小屏、低功耗
8080并口 ILI9488, SSD1963 速度快,引脚多 中尺寸屏
RGB接口 RA8875, FT5x06 直接刷屏,需要外部RAM 大屏、高刷新
MIPI接口 ILI9881, OTA7290 高速差分信号,复杂 手机屏、高清屏

我的建议:初学者先从SPI接口的ILI9341入手,引脚少、资料多、调试简单。等熟悉了再上8080或RGB接口。

触摸屏接口:SPI / 8080 / RGB / MIPI

触摸屏接口这块,我踩过不少坑。咱们一个一个说。

SPI接口

最常见,也最简单。4根线(CS、SCLK、MOSI、MISO)就能搞定。速度一般在10-40MHz。适合小尺寸屏(3.5寸以下)。

// SPI初始化示例(伪代码)
void SPI_Init(void) {
    SPI_Config.Speed = 20MHz;  // 20MHz时钟
    SPI_Config.Mode = SPI_MODE_0;
    SPI_Config.DataWidth = 8;
    SPI_Init(&SPI_Config);
}

8080并口

16根数据线+控制线,速度比SPI快很多。我记得第一次用8080接口刷320×240屏,刷新率直接从SPI的15fps提升到45fps。代价是占用了大量GPIO。

RGB接口

直接操作像素,不需要显存缓冲区在MCU内部。但MCU需要支持RGB接口,而且通常需要外挂SDRAM做显存。说白了,这是把显存从MCU内部搬到了外部。

MIPI接口

差分信号,速度快得吓人,但协议复杂。一般用于手机屏或高清屏。我建议除非必要,否则别碰MIPI——调试起来真的很痛苦。

避坑指南:我曾经在一个项目里选了MIPI接口的屏,结果MCU不支持MIPI,只能加桥接芯片。成本增加了20块,还多了一堆调试工作。所以选屏之前,一定要确认MCU是否原生支持该接口。

外部存储配置

当MCU内部Flash不够用时,就得考虑外部存储了。常见方案有:

  • SPI Flash:存字库、图片资源,容量从2MB到64MB不等
  • SD卡:存大量图片或视频,但体积大、功耗高
  • PSRAM:扩展RAM,用于大显存或复杂动画
  • SDRAM:大容量RAM,RGB接口屏的标配
存储类型 接口 典型容量 用途
SPI Flash SPI/QSPI 2-64MB 字库、图片
PSRAM SPI/OPI 2-16MB 显存扩展
SDRAM 并行 8-64MB RGB显存
SD卡 SDIO/SPI GB级 大容量存储

个人经验:如果只是存字库和几张图片,用SPI Flash就够了。我一般选W25Q系列,便宜又好用。如果要做动画或视频,那就得上PSRAM或SDRAM。

硬件选型决策流程

说了这么多,咱们用一张图总结一下选型思路:

硬件选型决策流程图 硬件选型决策流程 确定屏幕参数 分辨率 ≤ 480×272? 是 否 小屏方案 SPI/8080接口 MCU内部RAM ≥ 512KB 大屏方案 RGB/MIPI接口 需要外部SDRAM 资源评估 Flash ≥ 1MB 主频 ≥ 72MHz 资源评估 Flash ≥ 2MB 主频 ≥ 120MHz 选型完成 选型完成 提示:选型时优先考虑有成熟驱动库的MCU,可以大幅缩短开发周期

这张图是我自己总结的选型流程。说白了,先定屏幕,再定接口,最后评估资源。别一上来就选顶级MCU,够用就好。

总结一下:

  • RAM是GUI的瓶颈,宁大勿小
  • Flash存资源,1MB起步
  • 主频够用就好,别盲目追高
  • 接口选型看分辨率,小屏SPI,大屏RGB
  • 外部存储是扩展手段,不是必需品