LCD 显示--lvds

news2024/11/20 10:28:10

作者简介: 一个平凡而乐于分享的小比特,中南民族大学通信工程专业研究生在读,研究方向无线联邦学习
擅长领域:驱动开发,嵌入式软件开发,BSP开发
作者主页:一个平凡而乐于分享的小比特的个人主页
文章收录专栏:IMX8MP,本专栏记录imx8mp开发板,学习开发过程中的问题及解决方法记录
欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖

LCD 显示–lvds

该lcd详细技术文档,请下载:lvds lcd

1.基础知识

1.1 lcd

下图是LCD各个参数对应的位置:

在这里插入图片描述

显示mode 各个参数含义如下:

hdisplay:有效显示区水平像素数量,对应Active Width

hsync_start:水平同步开始,对应hdispay + HFP

hsync_end:水平同步结束,对应hdisplay + HFP + HSYNC width(HPW)

htotal:水平总像素,对应hdisplay + HFP + HSYNC width + HBP

vdisplay:垂直显示像素,对应Active Height

vsync_start:垂直同步开始,对应vdispay + VFP

vsync_end:垂直像素结束,对应vdisplay + VFP + VSYNC width(VPW)

vtotal:垂直总像素,对应vdisplay + VFP + VSYNC width + VBP

vrefresh:刷新率

1.2 lvds

LVDS(Low Voltage Differential Signaling,即低电压差分信号)接口又称RS-644总线接口,是20世纪90年代才提出的一种数据传输和接口技术。
LVDS接口是美国NS美国国家半导体公司为克服以TTL电平方式传输宽带高码率数据时功耗大,电磁干扰大等缺点而研制的一种数字视频信号传输方式。由于其采用低压和低电流驱动方式,因此,实现了低噪声和低功耗。LVDS技术具有低功耗、低误码率、低串扰和低辐射等特点,其传输介质可以是铜质的PCB连线,也可以是平衡电缆。LVDS在对信号完整性、低抖动及共模特性要求较高的系统中得到了越来越广泛的应用,常见于液晶电视中。

2.原理图

在这里插入图片描述

在这里插入图片描述

3.设备数添加

    lvds0_panel {
        compatible = "boe,ev121wxm-n10-1850";
        backlight = <&lvds_backlight>;

        port {
            panel_lvds_in: endpoint {
                remote-endpoint = <&lvds_out>;
            };
        };
    };


    lvds_backlight: lvds_backlight {
        compatible = "pwm-backlight";
        pwms = <&pwm2 0 100000 0>;
        status = "okay";
    enable-gpios = <&gpio1 13 GPIO_ACTIVE_HIGH>;
        brightness-levels = < 0  1  2  3  4  5  6  7  8  9
                     10 11 12 13 14 15 16 17 18 19
                     20 21 22 23 24 25 26 27 28 29
                     30 31 32 33 34 35 36 37 38 39
                     40 41 42 43 44 45 46 47 48 49
                     50 51 52 53 54 55 56 57 58 59
                     60 61 62 63 64 65 66 67 68 69
                     70 71 72 73 74 75 76 77 78 79
                     80 81 82 83 84 85 86 87 88 89
                     90 91 92 93 94 95 96 97 98 99
                    100>;
        default-brightness-level = <80>;
    };
&pwm2 {
    pinctrl-names = "default";
    pinctrl-0 = <&pinctrl_pwm2>;
    status = "okay";
};

&lcdif2 {
    status = "okay";
};

&ldb {
    status = "okay";

    lvds-channel@0 {
        fsl,data-mapping = "spwg";
        fsl,data-width = <24>;
        status = "okay";

        port@1 {
            reg = <1>;

            lvds_out: endpoint {
                remote-endpoint = <&panel_lvds_in>;
            };
        };
    };
};

&ldb_phy {
    status = "okay";
};

&lcdif1 {
    status = "okay";
};

    pinctrl_pwm2: pwm2grp {
        fsl,pins = <
            MX8MP_IOMUXC_GPIO1_IO11__PWM2_OUT   0x116
        >;
    };

因为我们的lcd显示屏也是京东方公司的产品,在/drivers/gpu/drm/panel/panel-simple.c文件,搜索boe,会找到一个与我们所使用lcd参数很相似的产品boe,ev121wxm-n10-1850

static const struct drm_display_mode boe_ev121wxm_n10_1850_mode = {
    .clock = 71143,
    .hdisplay = 1280,
    .hsync_start = 1280 + 48,
    .hsync_end = 1280 + 48 + 32,
    .htotal = 1280 + 48 + 32 + 80,
    .vdisplay = 800,
    .vsync_start = 800 + 3,
    .vsync_end = 800 + 3 + 6,
    .vtotal = 800 + 3 + 6 + 14,
};

static const struct panel_desc boe_ev121wxm_n10_1850 = {
    .modes = &boe_ev121wxm_n10_1850_mode,
    .num_modes = 1,
    .bpc = 8,
    .size = {
        .width = 261,
        .height = 163,
    },
    .delay = {
        .prepare = 8,
        .enable = 300,
        .unprepare = 300,
        .disable = 60,
    },
    .bus_format = MEDIA_BUS_FMT_RGB888_1X7X4_SPWG,
    .bus_flags = DRM_BUS_FLAG_DE_HIGH,
    .connector_type = DRM_MODE_CONNECTOR_LVDS,
};

对比一下我们的lcd屏幕参数,会发现几乎差不多,是同个厂家生产的产品,几乎是兼容的,于是我们在设备数中添加compatible = "boe,ev121wxm-n10-1850"与其兼容。

在这里插入图片描述

4.实物图及其接线

lcd屏背面

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

5.实验测试

5.1 启动显示

开机,屏幕显示终端信息:

在这里插入图片描述

在这里插入图片描述

/dev目录下出现fb0

在这里插入图片描述

在/sys/kernel/debug/dri/0目录下有LVDS-1

在这里插入图片描述

5.2 使用modetest工具进行DRM测试

查看DRM驱动名称为imx-drm

root@igkboard:/sys/kernel/debug/dri/0# cat /sys/class/drm/card0/device/uevent
DRIVER=imx-drm
OF_NAME=display-subsystem
OF_FULLNAME=/display-subsystem
OF_COMPATIBLE_0=fsl,imx-display-subsystem
OF_COMPATIBLE_N=1
MODALIAS=of:Ndisplay-subsystemT(null)Cfsl,imx-display-subsystem
  • DRIVER=imx-drm:指示使用的驱动程序是 imx-drm,这是用于i.MX处理器的DRM(Direct Rendering Manager)驱动。
  • OF_NAME=display-subsystem:设备树中的节点名称是 display-subsystem,表示这是显示子系统的一部分。
  • OF_FULLNAME=/display-subsystem:设备树中的完整路径是 /display-subsystem,这是设备在设备树中的位置。
  • OF_COMPATIBLE_0=fsl,imx-display-subsystem:设备的兼容性信息,指示这是适用于Freescale(现在的NXP)i.MX平台的显示子系统。
  • MODALIAS=of:Ndisplay-subsystemT(null)Cfsl,imx-display-subsystem:这是一个模块别名,用于在Linux系统中标识设备和其对应的设备树节点。

查看DRM驱动connectors信息:

Connectors:
id      encoder status          name            size (mm)       modes   encoders
41      40      connected       LVDS-1          261x163         1       40
  modes:
        index name refresh (Hz) hdisp hss hse htot vdisp vss vse vtot
  #0 1280x800 60.03 1280 1328 1360 1440 800 803 809 823 71143 flags: ; type: preferred
  props:
        1 EDID:
                flags: immutable blob
                blobs:

                value:
        2 DPMS:
                flags: enum
                enums: On=0 Standby=1 Suspend=2 Off=3
                value: 0
        5 link-status:
                flags: enum
                enums: Good=0 Bad=1
                value: 0
        6 non-desktop:
                flags: immutable range
                values: 0 1
                value: 0
        4 TILE:
                flags: immutable blob
                blobs:

                value:

连接器信息

显示了连接器的属性和详情:

  • ID 41:
    • 编码器 (encoder): 40
    • 连接状态 (status): 已连接 (connected)
    • 名称 (name): LVDS-1
    • 尺寸 (size): 261 毫米 x 163 毫米
    • 支持的模式 (modes): 1 种
    • 编码器 (encoders): 40

支持的模式

列出了支持的显示模式:

  • 模式 0:
    • 名称: 1280x800
    • 刷新率 (refresh): 60.03 Hz
    • 水平显示参数: 1280 1328 1360 1440
    • 垂直显示参数: 800 803 809 823
    • 总计参数: 71143
    • 属性:
      • EDID: 不可更改的二进制数据块
      • DPMS: 当前状态为 “On” (开启)
      • 连接状态: 连接良好
      • 非桌面显示:
      • TILE: 不可更改的二进制数据块

查看DRM驱动CRTs和plans信息:

root@igkboard:/sys/class/drm/card0/device# modetest -M imx-drm -p
CRTCs:
id      fb      pos     size
36      45      (0,0)   (1280x800)
  #0 1280x800 60.03 1280 1328 1360 1440 800 803 809 823 71143 flags: ; type: preferred
  props:
        24 VRR_ENABLED:
                flags: range
                values: 0 1
                value: 0
Planes:
id      crtc    fb      CRTC x,y        x,y     gamma size      possible crtcs
34      36      45      0,0             0,0     0               0x00000002
  formats: XR24 AR24 RG16 XB24 AB24 AR15 XR15
  props:
        8 type:
                flags: immutable enum
                enums: Overlay=0 Primary=1 Cursor=2
                value: 1
        35 zpos:
                flags: immutable range
                values: 0 0
                value: 0

CRTCs (显示控制器管道)

显示了与显示控制器管道相关的信息:

CRTC ID 36

  • 帧缓冲 (fb): 45
  • 位置 (pos): (0,0)
  • 尺寸 (size): (1280x800)

该 CRTC 连接到一个显示设备,显示分辨率为 1280x800。

Planes (平面)

显示了与显示平面相关的信息:

平面 ID 34

  • 关联 CRTC (crtc): 36
  • 帧缓冲 (fb): 45
  • CRTC 坐标 (CRTC x,y): (0,0)
  • 平面坐标 (x,y): (0,0)
  • 伽马大小 (gamma size): 0
  • 可能的 CRTCs: 0x00000002

支持的格式 (formats):

  • XR24, AR24, RG16, XB24, AB24, AR15, XR15

属性 (props):

  • 类型 (type):
    • 不可变枚举类型: 表示平面类型,可能是 Overlay (叠加层)、Primary (主显示)、Cursor (光标)。
    • 值为 1: 表示当前为主显示。
  • zpos:
    • 不可变范围: 表示平面的 Z 轴位置。
    • 值为 0: 表示当前 Z 轴位置为 0。

5.3 花屏显示

modetest -M imx-drm -D 1 -a -s 41@36:1280x800 -P 34@36:1280x800
        -P <plane_id>@<crtc_id>:<w>x<h>[+<x>+<y>][*<scale>][@<format>]  set a plane
        -s <connector_id>[,<connector_id>][@<crtc_id>]:[#<mode index>]<mode>[-<vrefresh>][@<format>]    set a mode

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1881773.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

本地Navicat/客户端连接阿里云RDSMySQL时遇到过的问题及解决

1.之前开发的RDS MySQL版本和本地MySQL版本最好接近&#xff0c;比如8.0.28和8.0.20好像都是可以兼容的&#xff0c;他们里面都有那个utf8的字符编码&#xff0c;但是后面我选的RDS MySQL版本有点新&#xff0c;是8.0.30甚至更新的版本&#xff0c;之前用C#语言写的连接MySQL以…

Avalonia 常用控件三 Window窗体相关二

1、效果演示 2、在Views中创建WindowDemo.axaml如下图 WindowDemo.axaml代码如下 <Window xmlns"https://github.com/avaloniaui"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"http://schemas.microsoft.com/expression/blend/…

【C++题解】1228. 排队打水问题

问题&#xff1a;1228. 排队打水问题 类型&#xff1a;贪心 题目描述&#xff1a; 有 n 个人排队到r 个水龙头去打水&#xff0c;他们装满水桶的时间 t1​,t2​,…,tn​ 为整数且各不相等&#xff0c;应如何安排他们的打水顺序才能使他们花费的总时间最少&#xff1f; 每个人…

嵌入式UI开发-lvgl+wsl2+vscode系列:8、控件(Widgets)(一)

一、前言 这里将介绍一系列控件&#xff0c;了解后就可以开始基础的开发了。 二、示例 1、Base Obj&#xff08;基础对象&#xff09; 1.1、示例1 #include "../../lv_examples.h" #if LV_BUILD_EXAMPLESvoid lv_example_obj_1(void) {lv_obj_t * obj1;obj1 lv…

Swift 新结构化并发中鲜为人知的 isolated 参数

概述 伴随着 Swift 5.5&#xff08;WWDC21&#xff09;推出的新结构化并发到今年的 WWDC 24 已经有 3 个多年头了。想必大家都对其中 async/awiat、async let、TaskGroup、Actor 等各种概念都了然于胸了吧&#xff1f; 不过小伙伴们可能不知道的是&#xff1a;新结构化并发&a…

零基础STM32单片机编程入门(五)FreeRTOS实时操作系统详解及实战含源码视频

文章目录 一.概要二.什么是实时操作系统三.FreeRTOS的特性四.FreeRTOS的任务详解1.任务函数定义2.任务的创建3.任务的调度原理 五.CubeMX配置一个FreeRTOS例程1.硬件准备2.创建工程3.调试FreeRTOS任务调度 六.CubeMX工程源代码下载七.讲解视频链接地址八.小结 一.概要 FreeRTO…

世界羽坛失去了一位天才选手:如何预防运动场上发生意外

世界羽坛失去了一位天才选手&#xff1a;如何预防运动场上发生意外 --中国羽毛球新星张志杰赛场突发意外&#xff0c;年仅17岁离世 中国羽毛球界的一颗新星、年仅17岁的张志杰&#xff0c;在印尼举行的2024亚洲青年羽毛球锦标赛中不幸离世。这位出生于嘉兴的天才选手&#xf…

北京酒店订房小程序开发的优势与主要功能

随着我国经济与交通的飞速发展&#xff0c;人们出行的次数越来越多&#xff0c;频率也越来越快。无论是出差还是出游&#xff0c;人家对外出酒店的舒适度与便捷度的要求也越来越高。为了满足人们对于酒店的新需求&#xff0c;北京酒店订房小程序与互联网技术相结合&#xff0c;…

经典文献阅读之--BALM2(高效且一致的激光雷达点云束调整)

0. 简介 束调整&#xff08;Bundle Adjustment&#xff0c;BA&#xff09;是指同时确定传感器姿态和场景几何的问题&#xff0c;这是机器人视觉中的一个基本问题。本文提出了一种高效且一致的激光雷达束调整方法。该方法利用边缘和平面特征来表示场景几何&#xff0c;并直接最…

制定全面测试计划:使用TS-GNSS模拟器助力接收器选择

GPS/GNSS信号无处不在&#xff0c;也是目前定位导航应用中最为关键的一环&#xff0c;而GNSS接收器芯片组的低成本和高性能使得将GNSS接收器更容易得集成到以前从未有过的产品中去。由于存在以多种频率传输信号的多个GNSS星座&#xff0c;以及用于提高GNSS精度的各种可用技术&a…

并发控制-事务的调度、数据不一致问题(更新丢失、脏读、不可重复读)、非串行调度的的可串行化

一、引言 1、数据库管理系统DBMS的事务处理技术实现的另一个主要功能部分是并发控制机制。并发控制机制完成的功能就是对并发执行的事务进行控制&#xff0c;保证事务的隔离性&#xff0c;从而进一步保持数据库的一致性。 2、事务的并发控制就是对并发执行的不同事务中的数据…

NLP特征提取的惊人历史演变

NLP特征提取的惊人演变 1.理解特征提取2. 文本表示的演变2.1.词袋的简单性2.2. N-Gram 模型的进步2.3. TF-IDF 的崛起 3. 深入研究词嵌入3.1.探索 Word2Vec3.2.深入了解 GloVe3.3.深入研究 FastText 4. 上下文嵌入的影响4.1 ELMo 的突破4.2 理解 BERT 的机制4.3 Transformer的出…

MySQL-核心知识要点

1、索引的数据结构-Btree BTree的优势&#xff1a; B树的内节点无data&#xff0c;一个节点可以存储更多的K-V对。在构造树时&#xff0c;需要的内节点会更少&#xff0c;那么树的层级也会越低。查询一条数据时&#xff0c;1. 扫描的层级低&#xff0c;扫描过的节点更少&…

Java使用Tessdata做OCR图片文字识别【搬代码】

下载tessdata各语言集合包.zip 找个盘下面解压缩&#xff0c;名字改成英文的 pom文件依赖 <dependency><groupId>net.sourceforge.tess4j</groupId><artifactId>tess4j</artifactId><version>4.5.4</version></dependency>j…

第二天:ALOAM前端讲解【第2部分】

三、scan2scan 3. 帧间匹配 特征关联与损失函数计算 (1)线特征 点到线的距离公式: d ϵ = ∣ ( X ~ ( k +

高温电子设备对设计和可靠性带来挑战

1 高温应用 地下石油和天然气行业&#xff0c;温度&#xff1e;150℃&#xff0c;最高温度可达200℃。 地下钻探作业 地下钻探时&#xff0c;需要收集周围的地质构造&#xff0c;可通过测量电阻率、放射性、声音传播时间、磁共振和其他属性&#xff0c;同时还会监控压力、温度、…

[go-zero] goctl 生成api和rpc

文章目录 1.goctl 概述2.go-zero 需要安装的组件3.生成 api4.生成 rpc 1.goctl 概述 goctl支持多种rpc&#xff0c;较为流行的是google开源的grpc&#xff0c;这里主要介绍goctl rpc protoc的代码生成与使用。protoc是grpc的命令&#xff0c;作用是将proto buffer文件转化为相…

2024.07使用gradle上传maven组件到central.sonatype,非常简单

本文基于sonatypeUploader2.0版本 在1.0版本我们还需要手动去添加maven-publish和signing插件&#xff0c;在2.0版本他已经内置了&#xff0c;如果你仍然需要手动配置&#xff0c;你可以手动添加这两个插件及逻辑。 具体信息参考开源仓库&#xff1a; 插件仓库&#xff1a;h…

GPT-5:博士级智能的破晓,人工智能的新里程碑

随着科技的飞速发展&#xff0c;人工智能领域再次迎来了一场革命性的突破。备受瞩目的新一代大语言模型GPT-5即将在一年半之后发布&#xff0c;这一创新不仅将再次刷新人们对人工智能的认知&#xff0c;更有可能在多个领域展现出超越人类博士级智能的卓越能力。本文将对GPT-5的…

一体化导航的优点及应用领域

一体化导航&#xff0c;作为现代导航技术的重要发展方向&#xff0c;正日益展现出其独特的魅力和广泛的应用前景。这种导航方式将多种导航技术、信息系统以及数据处理方法集成于一个统一的平台上&#xff0c;为用户提供高效、准确、便捷的导航服务。 一体化导航的核心在于其高度…