LCD

FAQ1 怎么添加一份自己的屏模组(LCD + TP)

  • SDK\customer\peripherals 路径下复制一份lcd驱动

  • 修改复制的驱动文件与SConscript,适配寄存器,数据接口,CLK速率,RGB格式

  • 修改SDK\customer\peripherals\Kconfig 添加新驱动宏

  • 修改SDK\customer\boards\Kconfig_lcd 添加新屏模组配置

  • 确认bsp_pinmux.cbsp_lcd_tp.c 的引脚配置

  • 确认menuconfig -> Built-in LCD module driver 选择你添加的驱动

请参见屏幕模组调试


FAQ2 上电屏幕是黑的如何排查

关键引脚检测

  • VCC:主供电

  • 背光引脚:背光供电

  • LCD_RST:复位引脚 排查方法

  1. 检查 bsp_pinmux.cbsp_lcd_tp.c 的引脚配置

  2. 使用finsh命令检查软件配置的引脚状态:

    pin status 1   # 检查PA01脚
    
    异常状态:
    PIN 1, FUNC=15, VAL=0, ANA_IN, GPIO_MODE_INPUT
    
    正常状态:
    PIN 1, FUNC=0, VAL=1, DIG_IO, GPIO_MODE_OUTPUT
    

关键差异

  • FUNC=0(GPIO模式)

  • VAL=1(输出高电平)

  • DIG_IO(数字IO模式)

  • GPIO_MODE_OUTPUT(输出模式)

  1. 逻辑分析仪抓具体上电波形分析上电时序


FAQ3 LCD调试常见问题

  • LCD屏幕右侧绿条纹

  • LCD显示花屏

  • TFT屏开机或唤醒时第一帧花屏

  • 初始化读写都正常但不亮屏问题

  • 如何从Framebuffer 导出来看图像是否正常?

  • LCD驱动中常见的Assert死机

  • 打静电ESD时LCD花屏和定屏问题

  • 开关机动画或者充电图像显示扭曲问题

  • 屏QSPI读不到屏ID的问题

  • 屏QSPI动态调整读写寄存器CLK速率

请参见LCD常见问题


FAQ4 如何导出送屏buf中的数据并恢复成图像

  1. hcpu.map 文件中查询送屏缓冲区的地址,对应为 buf2_1;若项目配置双缓冲区,同步查询 buf2_2

../../_images/buf2_addr.png
  1. 从 dump 文件中拷贝 buf2_1/buf2_2 对应的二进制文件(psram.bin 或 hcpu_ram.bin),dump 导出方法参见 死机分析

  2. 将拷贝的 bin 文件放入 sdk/tools/bin2bmp 目录,参照该目录下 readme 文档内的指令,执行生成图像即可

../../_images/using_buf_addr.png ../../_images/flash_map1.png ../../_images/bin_to_map.png

FAQ5 如何排查屏显画面倾斜扭曲问题

../../_images/disp_distortion.png
  1. 如上图,该现象为像素对齐异常导致,需参考对应 LCD 硬件规格书,确认标准的像素对齐要求

  2. 根据规格书要求,核对 LCD 注册接口中 pixel_align 对齐参数配置是否符合要求

LCD_DRIVER_EXPORT(name, id, init_cfg, dev_ops, ic_max_hor_res, ic_max_ver_res, pixel_align)

FAQ6 如何配置合适的TE周期

TE 周期的配置标准、计算方法及适配规则,参见:帧率/ LCD TE 周期


FAQ7 如何配置屏显画面旋转角度(90°/180°/270°)

1. 芯片原生支持能力

  • 56x、58x 系列 LCDC 控制器:支持垂直镜像、水平镜像;

  • 52x 系列 LCDC 控制器:仅支持垂直镜像。

2. 配置方法

  • 优先确认 LCD 硬件是否原生支持镜像,若支持则直接基于对应芯片系列配置,控制指令如下:

rt_device_control(lcd_device, RTGRAPHIC_CTRL_ROTATE_180, NULL)

⚠️注意:旋转 180° 等价于 水平镜像+垂直镜像

  • 若 LCD 不支持旋转,或芯片镜像方案无法满足需求,可通过 GPU 实现送屏缓冲区旋转,调用以下接口设置旋转角度即可:

/**
 * @brief  设置屏显画面旋转角度
 * @param  rotate: 旋转角度枚举值,支持90°/180°/270°旋转配置
 * @return rt_err_t: 配置成功返回RT_EOK,失败返回对应错误码
 */
rt_err_t drv_epic_set_rotation(drv_epic_rotate_t rotate)

⚠️注意:该方案会占用 GPU 资源,可能导致图像渲染耗时增加,当前仅支持 90°、180°、270° 固定角度旋转。


FAQ8 如何计算理论帧率

详细的理论帧率推导公式、计算示例、性能评估标准,参见:帧率/LCD送数


FAQ9 如何在应用层设置不休眠

可在应用层直接调用以下接口实现屏幕不休眠功能,接口调用简单无依赖:

/**
 * @brief  应用层屏幕休眠锁使能/关闭 (设置不休眠/恢复休眠)
 * @param  enable  false:禁止休眠(屏幕常亮)  true:恢复自动休眠
 */
void app_screen_lock_enable(bool enable);

FAQ10 如何重置休眠时间

当需要刷新屏幕休眠计时(比如触摸操作、按键响应、数据更新时),调用以下接口重置休眠时间,重新开始倒计时:

/**
 * @brief  手动触发显示屏的活跃状态 (刷新屏幕休眠计时/重置休眠倒计时)
 * @param  disp  显示屏设备句柄指针,传 NULL 则使用默认显示屏
 */
void lv_disp_trig_activity(lv_disp_t * disp)