下面把GLCDC /r_gLCDC相关参数按「谁在用、解决什么问题」分类整理,方便和屏厂手册对照。
1. 工程级(编译前定死)
| 类别 | 做什么 | 典型位置 |
|---|---|---|
| 编译期模块选项 | 是否编入参数检查、是否编入亮度/对比度/伽马等校正代码 | fsp_cfg/r_glcdc_cfg.h(Parameter Checking、Color Correction) |
| 栈实例标识 | 生成g_display0等符号,和代码里Open用的 ctrl/cfg 绑定 | RA 配置 → General → Name |
2. 时钟与点频(决定一行多久、整帧频率)
| 子类 | 含义 |
|---|---|
| 外设时钟 | GLCDC 数字逻辑用PCLKA(手册说明) |
| 点时钟来源 | 内部GLCDCLK(从 PCLKA 分频)或外部LCD_EXTCLK |
| 分频比 | 把 PCLKA/外部钟变成LCD 像素时钟的除数(工具里枚举) |
| 频率上限 | 多数输出格式点时钟约≤54 MHz;Serial RGB可到60 MHz;外部输入也有上限(手册写 60 MHz) |
要点:先算目标像素时钟(或屏手册给的典型 DCLK),再反推 PLL/PCLKA 和分频,保证在器件允许范围内且已稳定再上电出图。
3. 引脚与 TCON(信号从哪根脚出去)
| 子类 | 含义 |
|---|---|
| 像素数据脚 | LCD_DATAx与 RGB 位宽、RGB/BGR 顺序一起决定接线 |
| 点时钟输出 | LCD_CLK(内部点钟输出时) |
| 可选外部钟输入 | LCD_EXTCLK |
| TCON 映射 | HSYNC / VSYNC / DE各绑定到LCD_TCON0~3或 Not used(须和屏接线、屏要求的控制方式一致) |
要点:这是硬件连接 + 复用功能类参数,和「时序数值」是两块拼图。
4. 时序类(和屏手册「Timing」一页一一对应)
手册里Output → Timing那一整块都属于这里:
| 方向 | 常见参数名思路 |
|---|---|
| 水平 | total cycles、active cycles、back porch(含 sync 理解方式见手册)、sync width、HSYNC 极性 |
| 垂直 | total lines、active lines、back porch lines、VSYNC lines、VSYNC 极性 |
| 数据有效 | DE 极性、Sync edge(上升/下降沿采样关系) |
要点:水平/垂直 total、active、porch、sync必须自洽;屏厂若用「front porch / back porch」另一种画法,要先换算成你工具里定义的「back porch 是否含 sync」再填(以 FSP/用户手册那一节的文字为准)。
5. 输出格式(屏接口「长什么样」)
| 子类 | 含义 |
|---|---|
| 每像素位数 | 24bit RGB888 / 18bit RGB666 / 16bit RGB565 / 8bit serial 等 |
| 通道顺序 | RGB / BGR |
| Endian | 总线字节序(Little / Big) |
要点:决定数据线根数、排列、与屏控制器输入是否一致;和 framebuffer 里存的格式可以不同(中间有硬件转换路径)。
6. 图层与帧缓冲(显存里「画什么、多大块」)
| 子类 | 含义 |
|---|---|
| Layer1/Layer2 开关与区域 | 是否启用、宽高、在背景上的X/Y 偏移 |
| 层输入格式 | ARGB8888、RGB565、CLUT 等 |
| Framebuffer | 名称、个数(单缓冲/双缓冲)、链接段(如 SDRAM) |
| 行方向 | Line descending(图像是否从下往上存) |
| Line repeat | 用小高度 buffer 纵向重复铺满屏 |
| Fading | 淡入淡出模式与速度(帧数) |
要点:层的 active 尺寸一般与显示内容一致;总屏时序仍以第 4 节「Output Timing」里的 active/total 为准。
7. 合成与背景(没有「图层图」时底下垫什么)
| 子类 | 含义 |
|---|---|
| Background ARGB | 两图层背后的纯色画布 |
8. CLUT(仅当某层用索引色时)
| 子类 | 含义 |
|---|---|
| 是否启用 CLUT 缓冲 | 与层格式选 CLUT8/4/1 配套 |
| 表项个数 | 最多 256 项,每项 4 字节 |
要点:CLUT 内容要在开始输出前写入;手册还提醒同一帧内不要混用某些 CLUT 更新 API(见 Limitations)。
9. 图像质量与校正(可选)
| 子类 | 含义 |
|---|---|
| Brightness / Contrast | 各通道增益类参数 |
| Gamma | 分段曲线(Gain / Threshold 等) |
| Dither | 抖动模式与图案 |
要点:依赖编译期Color Correction = On;否则栈里配了也可能无效。
10. 中断与回调(和「何时换缓冲、何时画」相关)
| 子类 | 含义 |
|---|---|
| Callback | VSYNC(Line detect)、Underflow 等事件进用户函数 |
| 优先级 | Line detect、Layer1/2 underflow |
要点:不做动画/双缓冲可以很简单;要无撕裂换页通常要 VSYNC 对齐。
11. 内存约束(不是屏厂表上的「时序」,但决定能不能亮)
- Framebuffer 基址 64 字节对齐
- 水平 stride(字节)为 64 的倍数
RA 配置工具生成的 buffer 一般会满足;手写或自定义分配时要自检。
一张脑图:和屏厂文档怎么对
屏厂数据手册 ├── 电气/电源/背光/初始化总线 → 多数不在 GLCDC「Timing」里,另做原理图/代码 └── RGB 时序与信号要求 ├── 分辨率 + DCLK → 对应 第2节 + 第4节 active/total + 分频 ├── H/V porch、sync、极性 → 对应 第4节 ├── DE 是否需要、极性 → 对应 第4节 + 第3节 TCON └── 数据线位数、顺序 → 对应 第5节 + 第3节 DATA 脚