硬件平台选型: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。
硬件选型决策流程
说了这么多,咱们用一张图总结一下选型思路:
这张图是我自己总结的选型流程。说白了,先定屏幕,再定接口,最后评估资源。别一上来就选顶级MCU,够用就好。
总结一下:
- RAM是GUI的瓶颈,宁大勿小
- Flash存资源,1MB起步
- 主频够用就好,别盲目追高
- 接口选型看分辨率,小屏SPI,大屏RGB
- 外部存储是扩展手段,不是必需品