【f1c200s/f1c100s】RGB接口 LCD驱动适配

  • RGB模式介绍
  • F1C200s/F1C100s RGB LCD驱动适配
    • 设备树修改
    • 源码修改
    • 结果

RGB模式介绍

RGB 模式就是我们通过说的 RGB 屏,以 RGB(TTL 信号)并行数据线传输,广泛的应用于 5 寸及以上的 TFT-LCD 中。引脚包含RGB数据+时钟+控制引脚;数据位数可为:RGB565、RGB666、RGB888,数据位树越多,颜色失真就越少。

信号线 描述
R[7:0] 8 根红色数据线
G[7:0] 8 根绿色数据线
B[7:0] 8 根蓝色数据线
DE 数据使能线
VSYNC 垂直同步信号线
HSYNC 水平同步信号线
PCLK 像素时钟信号线

由于每一块屏幕分辨率、时序参数不一样(其实差距不大,所以参数有时候设置不完全正确也能点亮屏幕),每一块屏幕的参数都必须重新配置。幸运的是,linux内核已经适配了RGB模式下的LCD驱动(见drivers/gpu/drm/panel/panel-simple.c),我们不需要从零写一个屏幕驱动,所以我们只需要简单几步即可驱动LCD屏幕。

F1C200s/F1C100s RGB LCD驱动适配

基于的硬件为自己设计的Mangopi和正点原子7寸LCD显示屏,分辨率为840x480。
软件在荔枝派官方代码基础上进行修改。

设备树修改

suniv-f1c100s.dtsi中将连接LCD的引脚复用为lcd功能:

pio: pinctrl@1c20800 {compatible = "allwinner,suniv-f1c100s-pinctrl";reg = <0x01c20800 0x400>;interrupts = <38>, <39>, <40>;clocks = <&ccu CLK_BUS_PIO>, <&osc24M>, <&osc32k>;clock-names = "apb", "hosc", "losc";gpio-controller;interrupt-controller;#interrupt-cells = <3>;#gpio-cells = <3>;uart0_pe_pins: uart0-pe-pins {pins = "PE0", "PE1";function = "uart0";};uart1_pe_pins: uart1-pe-pins {pins = "PA2", "PA3";function = "uart1";};//复用LCD为模式lcd_rgb666_pins: lcd-rgb666-pins {pins = "PD0", "PD1", "PD2", "PD3", "PD4","PD5", "PD6", "PD7", "PD8", "PD9","PD10", "PD11", "PD12", "PD13", "PD14","PD15", "PD16", "PD17", "PD18", "PD19","PD20", "PD21";function = "lcd";};mmc0_pins: mmc0-pins {pins = "PF0", "PF1", "PF2", "PF3", "PF4", "PF5";function = "mmc0";};key_pins: key_pins {pins = "PA0", "PA1";function = "gpio_in";};i2c0_pins: i2c0_pins {pins = "PE11", "PE12";function = "i2c0";};};

suniv-f1c100s-licheepi-nano.dts中修改后的panel节点如下,其中compatible 属性增加了alientek,alientek_7_inch,是为了适配驱动代码中的相应屏幕的配置。

panel: panel {compatible = "alientek,alientek_7_inch", "simple-panel";#address-cells = <1>;#size-cells = <0>;reset-gpios = <&pio 4 4 GPIO_ACTIVE_LOW>;//复位引脚power-supply = <&reg_vcc3v3>;port@0 {reg = <0>;#address-cells = <1>;#size-cells = <0>;panel_input: endpoint@0 {reg = <0>;remote-endpoint = <&tcon0_out_lcd>;};};};

源码修改

drivers/gpu/drm/panel/panel-simple.c文件中存在非常多厂家的屏幕参数,如:

我们要做的就是在这个文件里面,仿照这些预设的参数添加我们自己的屏幕参数。
大约在2560行左右仿照上面预设的屏幕参数添加自己屏幕的时序信息,时序信息的具体含义可以参考:
Documentation/devicetree/bindings/display/panel/display-timing.txtinclude/drm/drm_modes.h、RBG LCD时序参考以及自己屏幕的数据手册。

static const struct drm_display_mode alientek_7_inch_mode = {.clock = 51200,.hdisplay = 800,.hsync_start = 800+20,.hsync_end = 800 + 20 + 160,.htotal = 800 + 20 + 140 + 160,.vdisplay = 480,.vsync_start = 480 + 3,.vsync_end = 480 + 3 + 12,.vtotal = 480 + 3 + 12 + 20,.vrefresh = 60,
};static const struct panel_desc alientek_7_inch = {.modes = &alientek_7_inch_mode,.num_modes = 1,.bpc = 6,.size = {.width = 154,.height = 85,},
};

然后在大约2860行左右,添加屏幕的适配信息,其中的compatible 属性需要和设备树panel中的一致。

     {.compatible = "winstar,wf35ltiacd",.data = &winstar_wf35ltiacd,}, {.compatible = "alientek,alientek_7_inch",  //自己添加的,需要和设备树一致.data = &alientek_7_inch, //自己添加的}, {  //末尾为空结构体,不能删除/* sentinel */}

然后在menuconfig中配置打开linux logo,保存编译。

-> Device Drivers-> Graphics support -> Bootup logo (LOGO [=y]) -> Standard black and white Linux logo -> Standard 16-color Linux logo -> Standard 224-color Linux logo

结果

不出意外在内核启动时可以看到屏幕左上角上有小企鹅logo,进入系统后可以在/dev目录下找到fb0设备。有了这个framebuffer设备之后,就可以使用lvgl或者awtk等GUI库编写漂亮的界面了。

用lvgl简单写了个测试屏幕的demo:

【f1c200s/f1c100s】RGB接口 LCD驱动适配相关推荐

  1. 【f1c200s/f1c100s】FT5426触摸屏驱动适配

    [f1c200s/f1c100s]FT5426触摸屏驱动适配 前言 设备树配置 IIC控制器 FT5426设备树配置 内核配置 结果 前言 嵌入式linux下的触摸屏驱动是基于input子系统的,当触 ...

  2. rgb 接口lcd 驱动调试

    文章目录 lcd 控制器的模式配置 rgb 接口 时序 dma 配置 lcd 调试要点 lcd 控制器的模式配置 接口配置 soc lcd controller 一般都支持多种的 Lcd 接口, 如 ...

  3. MCUXpresso开发RT1060(1)——使用RGB接口LCD

    一.开发环境 1.TencentOS物联网开发套件,MCU为RT1060 2.IDE:MCUXpresso v11.4.1 3.屏幕为微雪4.3寸IPS屏幕,RGB888接口 二.使用MCUXpres ...

  4. linux图形界面抖动,Linux下RGB接口LCD显示屏移植杂点抖动问题解决

    处理器:IMX6Q 操作系统:Linux 3.14.28 LCD接口:RGB24bit+SPI 显示屏型号:TM043YDHG30-40 问题描述: SPI设置完参数给显示屏后,屏幕可以显示图片.亮度 ...

  5. Linux下RGB接口LCD显示屏移植杂点抖动问题

    处理器:IMX6Q 操作系统:Linux 3.14.28 LCD接口:RGB24bit+SPI 显示屏型号:TM043YDHG30-40 问题描述: SPI设置完参数给显示屏后,屏幕可以显示图片.亮度 ...

  6. 【f1c200s/f1c100s】mangopi自制linux开发板驱动适配进度(PCB、代码开源)

    [f1c200s/f1c100s]mangopi自制linux开发板驱动适配进度(PCB.代码开源) 目前进度 过程记录博客 目前进度 目前自制的mangopi设备驱动适配已完成部分包含: 基于扫描的 ...

  7. 高通-LCD驱动框架简述

    LCD驱动框架简述 目录 一 LCD硬件结构框架 二 不同的硬件结构LCD的驱动框架简述 三 RGB接口LCD驱动简述(以户外手机(Android5.1)为例) 3.1 硬件线路框架 3.2 软件驱动 ...

  8. mipi接口 1280(RGB)*720 LCD屏开发驱动笔记帖

    ps:创业开发产品,自学笔记,不一定适合教材性的阅读,零碎整理,自我总结用 材料:4.1寸lcd屏两块,屏自带触控,屏幕资料具备,rk3399和MK8788开发版上分别开发. 开发环境: 1]rk33 ...

  9. S3C2440A驱动RGB接口TFT LCD的研究(转载)

    S3C2440A驱动RGB接口TFT LCD的研究 时间: 2009-02-25 11:29:50 来源:嵌入式在线 作者:纪宁宁,孙灵燕 1 引言     随着科技的进步,TFT LCD作为显示器件 ...

  10. ZYNQ7020(黑金)纯verilog驱动4.3寸RGB接口TFT液晶屏(AN430)显示彩条

    ZYNQ7020(黑金)纯verilog驱动4.3寸RGB接口TFT液晶屏(AN430)显示彩条 简介 像素(Pixel):像素是指由图像的小方格组成的,这些小方快都有一个明确的位置和被分配的色彩数值 ...

最新文章

  1. oracle job 时间间隔,关于job的时间间隔的一个问题
  2. LeetCode Algorithm 169. 多数元素
  3. Mybatisplus插件
  4. Lua开发工作笔记0004---交互式编程与脚本式编程及注释的写法
  5. mysql 如何解决字段不区分大小写的问题
  6. linux令普通用户拥有root权限
  7. access字段类型varchar_Access SQL语句创建表对应的数据类型名称
  8. Android8.1根据app名字调用显示app的属性页(App info)
  9. Python源码阅读(一)
  10. 《从0到1:CTFer成长之路》 配套题目Web WP
  11. 各种插件、扩展、工具网站
  12. jquery引入外部CDN,失效后则引入本地jq库
  13. 钢琴谱coda是什么意思
  14. 错题集(求助中):爬虫碰到cookies检查还是script啊甚至连被什么拦住的都不知道···
  15. excel数据透视表中插入一列新数据
  16. 【十问评估经营理念】
  17. 人工智能课程系列1-汇总整理
  18. 有源医疗器械的开发过程和各阶段的注意事项(三)
  19. mac 读取linux分区,Paragon extFS for mac下载-Mac读写Linux分区工具Paragon extFS下载v11.2.16 官方版__西西软件下载...
  20. android setdata方法,Android intent.setData方法

热门文章

  1. kail linux暴力破解wifi
  2. Kali暴力破解Wifi密码完整步骤(学习记录)
  3. Scientific Reports|比较转录组分析揭示了杀菌剂氰烯菌酯对尖孢镰刀菌的抗性调控机制和杀菌活性
  4. 银行业保险业数字化转型指导意见下发,IT 基础架构团队如何应对挑战?
  5. Java主流框架技术及少量前端框架使用与总结
  6. JavaWeb后端开发框架SSM+前端框架Layui简介
  7. [渝粤教育] 西南科技大学 行政法学与行政诉讼法学 在线考试复习资料(1)
  8. 通过阅读器打开ofd格式发票并转为PDF
  9. 区块链如何推动人力资源和薪酬管理体系变革?
  10. otc机器人tp_发那科机器人TP 示教器按键使用简介