【K230/K230D 新技能点亮】手把手教你在RTOS系统添加一个屏幕|保姆级教程

描述

上一期,我们详细讲解了K230/K230D RTOS 系统中直接适配好的 SPI 屏幕使用方法,快速上手就能点亮屏幕,https://mp.weixin.qq.com/s/Qy0gyceHgGGdeSlUKrU2IA

 

不少开发者反馈:项目里常用的小众型号、未适配的 SPI/QSPI/MCU 屏幕,该怎么在 K230/K230D 上驱动?别急,今天这篇保姆级教程,就来手把手教你搞定自定义屏幕适配,解锁更多低成本小屏方案!
 

今天就基于官方最新驱动框架,给你一篇从零到点亮的完整教程,照着做就能成功!

一、先搞懂:

K230 屏幕驱动框架长啥样?

 

Connector + Panel 双层架构

Connector:管理 DSI/SPI/QSPI 等物理接口

Panel:管理屏幕型号、初始化序列、显示时序

一切配置从 make menuconfig 开始,代码只填必要信息

一句话:先配菜单,再补代码,最后跑 sample
 

二、适配新屏第一步:menuconfig 完整配置流程
 

打开终端进入 SDK,直接敲:

  •  

make menuconfig

进入路径:

MPP Configuration → Display Configuration


 

1


 

打开对应显示驱动

根据你的屏幕接口选择:

MIPI DSI 屏 → 开 Enable LCD Display Driver

SPI 屏 → 开 Enable SPI LCD Display Driver

HDMI 显示 → 开 Enable HDMI Display Driver


 

2


 

配置引脚(必做!)

以最常用的 MIPI DSI 屏幕为例:

DSI-LCD Reset GPIO

DSI-LCD BackLight GPIO

SPI 屏还要额外配:

DC 脚、CS 脚、时钟脚、数据脚


 

RTOS


 

3


 

选择面板驱动

如果库里已有你的屏幕型号,直接勾选

如果没有,先随便选一个相近的,后面我们自己加

配置完保存退出,先编译一次,确保基础链路正常。


 


 

三、适配前必须拿到

这 2 份资料


 

没有这两个,神仙也点不亮屏幕:


 

1


 

屏幕时序参数(厂家给)

pclk_hz=27000000fps=60lane_num=2
hactive=368hsync=8hbp=16hfp=16
vactive=552vsync=48vbp=250vfp=250


 

这些是点亮屏幕的核心参数


 

2


 

屏幕初始化序列(厂家给)

类似这种:

  •  
  •  
  •  

{0xFF,5,{0x77,0x01,0x00,0x00,0x13}},{0xEF,1,{0x08}},{0x11,0,{0x00}},

后面要转换成 SDK 规定的格式。


 


 

四、手把手:代码里添加新屏幕(5步搞定)


 


 

第1步:定义屏幕类型


 

打开文件:

src/rtsmart/mpp/include/comm/k_connector_comm.h


 

新增一行,格式如下:

  •  

#define ST7701_368_552_DSI_V1  K_CONN_TYPE(ST7701, DSI, 368, 552, 1)


 


 

第2步:添加面板驱动文件


 

在目录下新建/复制面板文件:

src/rtsmart/mpp/kernel/connector/src/panels/


 

主要填写 3 块内容:

初始化序列 init_sequence

显示时序 timing

GPIO 配置(复位、背光)

 

static const k_panel_desc st7701_368_552_dsi_v1 = {    .name = "st7701_368_552_dsi_v1",    .connector_type = ST7701_368_552_DSI_V1,    .bus_type = K_CONN_BUS_DSI,    .timing = {        .pclk_hz = 27000000,        .hactive = 368,        .hfront_porch = 16,        .hback_porch = 16,        .hsync_len = 8,        .vactive = 552,        .vfront_porch = 250,        .vback_porch = 250,        .vsync_len = 48,    },    .gpio = {        .reset_pin = CONFIG_MPP_DSI_LCD_RESET_PIN,        .backlight_pin = CONFIG_MPP_DSI_LCD_BACKLIGHT_PIN,        .reset_active_low = K_TRUE,    },    .ops = &st7701_panel_ops,};


 


 

第3步:把面板挂进驱动列表


 

打开 connector_dev.c,把你的面板加入 panel_variants,

这样系统启动时才能识别到新屏幕。


 


 

第4步:Kconfig + Makefile 加入编译


 

Kconfig 添加菜单选项

Makefile 根据配置决定是否编译你的 .c 文件

这样 menuconfig 里就能看到你新加的屏幕了!


 


 

第5步:加 CanMV Python 支持


 

修改:

src/canmv/port/modules/modmedia_display.c


 

添加类型映射,Python 就能直接调用新屏幕。


 


 

五、最关键:验证是否成功

(2 条命令)


 

编译完成烧录后,在 shell 里输入:


 

1


 

查看当前支持的屏幕

  •  

list_connector

能看到你定义的名字,说明驱动加载成功


 

RTOS


 

2


 

直接点亮测试

  •  

./mpp/sample_vo_osd.elf -c 你的屏幕ID

跑起来就亮了!


 

六、最常见 3 个坑


 

1


 

menuconfig 看不到新面板

→ 没打开上层驱动(LCD/DSI 开关)

→ Kconfig 里没写 depends


 

2


 

编译过了,但 list_connector 看不到

→ Makefile 没加源文件

→ 没挂进 panel_variants


 

3


 

屏幕有电但不亮

→ 复位/背光 GPIO 方向反了

→ 初始化序列错

→ 时序参数完全不对

→ sample 用错 connector_type

 

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分