LCD 显示--lvds

作者简介: 一个平凡而乐于分享的小比特,中南民族大学通信工程专业研究生在读,研究方向无线联邦学习
擅长领域:驱动开发,嵌入式软件开发,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  910 11 12 13 14 15 16 17 18 1920 21 22 23 24 25 26 27 28 2930 31 32 33 34 35 36 37 38 3940 41 42 43 44 45 46 47 48 4950 51 52 53 54 55 56 57 58 5960 61 62 63 64 65 66 67 68 6970 71 72 73 74 75 76 77 78 7980 81 82 83 84 85 86 87 88 8990 91 92 93 94 95 96 97 98 99100>;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       40modes: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: preferredprops:1 EDID:flags: immutable blobblobs:value:2 DPMS:flags: enumenums: On=0 Standby=1 Suspend=2 Off=3value: 05 link-status:flags: enumenums: Good=0 Bad=1value: 06 non-desktop:flags: immutable rangevalues: 0 1value: 04 TILE:flags: immutable blobblobs: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: preferredprops:24 VRR_ENABLED:flags: rangevalues: 0 1value: 0
Planes:
id      crtc    fb      CRTC x,y        x,y     gamma size      possible crtcs
34      36      45      0,0             0,0     0               0x00000002formats: XR24 AR24 RG16 XB24 AB24 AR15 XR15props:8 type:flags: immutable enumenums: Overlay=0 Primary=1 Cursor=2value: 135 zpos:flags: immutable rangevalues: 0 0value: 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.mzph.cn/bicheng/38396.shtml

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

相关文章

鸿蒙生态应用开发白皮书V3.0

来源&#xff1a;华为&#xff1a; 近期历史回顾&#xff1a;

鸿蒙:this传递参数到子组件中无法实现

this指代当前组件的某个变量&#xff0c;当把这个变量当作参数传递给子组件时&#xff0c;子组件中没有这个变量&#xff0c;属于使用不了这个变量 解决方法&#xff1a;在变量后面加.bind(this)将当前组件的变量一起绑定过去

系统估算类问题

已知 Twitter 2020 年大约有 2000 亿的推文&#xff08;tweets&#xff09;&#xff0c;如果你来设计 Twitter 系统&#xff0c;请问发推服务的吞吐量需要多少&#xff0c;网络带宽要占用多大&#xff0c;要存储它们需要多少磁盘容量&#xff1f; 具体不同的编码方式&#xff0…

【6.26更新】Win10 22H2 19045.4598镜像:免费下载!

当前微软已经发布了六月最新的KB5039299更新补丁&#xff0c;用户完成升级后&#xff0c;系统版本号将更新至19045.4598。此次更新解决了任务栏上应用跳转列表失败、可能导致系统无法从休眠状态恢复等多个问题&#xff0c;推荐大家升级。如果您不知道去哪里才能下载到该版本&am…

MySQL索引设计与性能优化策略详解

MySQL索引设计与性能优化策略详解 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 引言 MySQL作为广泛应用的关系型数据库管理系统&#xff08;RDBMS&#xf…

JavaScript原型对象和对象原型、原型继承、原型链

目录 1. 原型对象和对象原型2. 原型继承3. 原型链 1. 原型对象和对象原型 作用: 以前通过构造函数实例化的对象&#xff0c;每个实例化的对象的属性和方法都是独立的&#xff0c;会造成内存浪费。通过prototype对象原型能实现不同实例化对象共享公用的属性和方法&#xff0c;减…

STM32之四:TIM定时器(1-基本定时器)

目录 1. STM32有哪些定时器 2. 基本定时器 2.1 基本定时器主要功能 2.2 基本定时器的框图 2.2.1 时钟输入 2.2.2 至DAC 2.2.3 至时基单元&#xff08;重点&#xff09; 2.2.4 影子寄存器 2.2.5 基本定时器寄存器说明 2.2.5.1 控制寄存器1&#xff08;TIMx_CR1&#x…

Linux Polkit 权限提升漏洞:CVE-2021-4034安全分析与修复指南

Linux Polkit 权限提升漏洞&#xff1a;CVE-2021-4034安全分析与修复指南 作为网络安全领域的专家&#xff0c;我对近期发现的影响Linux系统的Polkit权限提升漏洞&#xff08;CVE-2021-4034&#xff09;进行了深入分析。Polkit&#xff0c;即PolicyKit&#xff0c;是一个在Lin…

ITK-二值阈值分割

作者&#xff1a;翟天保Steven 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 什么是二值阈值分割&#xff1f; 二值阈值分割是一种常见的图像处理技术&#xff0c;用于将图像的像素值分成两个类别&#xff1…

【JVM系列】JVM调优

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

量化交易策略:KDJ策略的买入卖出点确认

KDJ指标简介 KDJ指标,全称随机指标(Stochastic Oscillator),是一种非常常用的技术分析指标,用于判断股票价格的超买和超卖状态。KDJ指标由三条线组成:K线、D线和J线。其中,K线代表快速移动平均线,D线代表慢速移动平均线,J线是K线与D线的差值。 KDJ策略的原理 KDJ策…

AT32F425C8T7 开发笔记

目录 0x00 AT32F425C8T7 引脚矩阵映射关系0x01 AT32_Work_Bench 图形化配置指南0x02 AT32串口打印函数0x03 AT32 串口中断函数0x04 AT32 延时函数 0x00 AT32F425C8T7 引脚矩阵映射关系 详情可见AT32手册 AT32的矩阵映射其实也就是开启端口的复用功能&#xff0c;但是它的功能…

HTML-缓动函数-贝萨尔曲线

缓动函数速查表 (easings.net)-cubic-bezier(.06,.44,.94,.7) ✿ cubic-bezier.com 展示了如何使用easeOutSine函数来实现一个元素的平滑移动动画。这个demo创建了一个按钮&#xff0c;当点击它时&#xff0c;会使页面上的一个元素向右平滑移动。 <!DOCTYPE html> <ht…

【Jetpack】Lifecycle之监听LifecycleObserver

关于LifecycleEventObserver Lifecycle可以添加观察者&#xff0c;从而让其它工作与周期变化保持一致 比如我们希望Dialog和Activity的生命周期一致&#xff0c;能够在Activity结束时自动关闭 可以通过如下代码来实现 与Lifecycle同步的Dialog package com.android.codeim…

GPTPDF: 利用 GPT 将 PDF 转为 Markdown

GPTPDF 是一款利用视觉模型&#xff08;GPT-4o&#xff09;将 PDF 转为 MD 文件的开源工具 它利用 PyMuPDF 将 PDF 拆分为图片&#xff0c;再利用 GPT 来判断是否能够转为纯文本&#xff0c;否则直接使用图片&#xff0c;所以能够比较好的还原排版、数学公式、表格、图片、图表…

计算机组成原理——寄存器

文章目录 1. 寄存器 2. 带寄存器的加法器 3. 时钟信号与计算速度 1. 寄存器 上一篇D触发器可以在时钟上沿存储1位数据。如果想存储多个位&#xff08;bit&#xff09;的数据&#xff0c;就需要用多个D触发器并联实现&#xff0c;这种电路称之为寄存器。 寄存器是计算机中央…

深入模拟版图工程师基础学习:CMOS工艺解析

作为模拟版图工程师&#xff0c;了解CMOS&#xff08;互补金属氧化物半导体&#xff09;工艺是非常重要的&#xff0c;以下是我们需要掌握的基本内容&#xff1a; 1.基础理论&#xff1a;理解CMOS工艺的基本原理和结构&#xff0c;包括NMOS和PMOS晶体管的构造及其工作原理。&a…

python 无监督生成模型

无监督生成模型在机器学习中扮演着重要角色&#xff0c;特别是当我们在没有标签数据的情况下想要生成新的样本或理解数据的内在结构时。一种流行的无监督生成模型是生成对抗网络&#xff08;Generative Adversarial Networks, GANs&#xff09;。 1.python 无监督生成模型 GA…

使用element-resize-detector监听普通元素

说明&#xff1a;在进行后台系统开发时&#xff0c;经常会用到一些图表展示&#xff0c;当改变浏览大小后&#xff0c;这些图表本身是没有响应式的&#xff0c;可以借助第三方插件element-resize-detector来监听窗口的变化 一、element-resize-detector 安装 npm install elem…

适配手机《植物大战僵尸杂交版》最新整合包,附Android、iOS、Windows保姆级教程和工具合集!

最近&#xff0c;新版的《植物大战僵尸杂交版》火爆全网啊&#xff01;许多小伙伴不知道手机和电脑怎样安装设置才能畅玩《杂交版》&#xff0c;所以今天阿星特意为大家准备了一份安装工具集。 里面有安卓、iOS及电脑端的安装包&#xff0c;包含安装视频教程、修改器、防闪退、…