imx6 LCD 参数配置(lvds为例)

article/2025/9/17 10:45:42

目前imx6的BSP开发中,lvds的参数配置一般在两个地方:
1. uboot的CMDLINE的参数设置,形如:
video=mxcfb0:dev=ldb,bpp=32
2. uboot板级代码中对struct display_info_t的配置,形如:

static struct display_info_t const displays[] = {{.bus    = -1,.addr   = 0,.pixfmt = IPU_PIX_FMT_LVDS666,.detect = NULL,.enable = NULL,.mode   = {.name           = "wvga-lvds",.refresh        = 60,.xres           = 800,.yres           = 480,.pixclock       = 30066,.left_margin    = 88,//HBPD   .right_margin   = 140,//HFPD  .upper_margin   = 31,//VBPD.lower_margin   = 10, //VFBD .hsync_len      = 28,//HSPW .vsync_len      = 4,//VSPW  .sync           = FB_SYNC_EXT,.vmode          = FB_VMODE_NONINTERLACED}
}}

3.kernel中设备树对ldb的配置,形如:

&ldb {lvds-channel@0 {fsl,data-mapping = "spwg";fsl,data-width = <24>;primary;status = "okay";display-timings {native-mode = <&timing0>;timing0: claa080na23 {clock-frequency = <33260000>;hactive = <800>;vactive = <480>;hback-porch = <88>;hfront-porch = <140>;vback-porch = <31>;vfront-porch = <10>;hsync-len = <28>;vsync-len = <4>;};};};
};

下面几篇博客对lcd基础以及imx6相关方面的内容讲的都十分详细:
1. LCD参数解释及计算
2. LCD驱动中pixclock的计算
3. imx6 android4.3 bsp开发实录之一lvds、HDMMI输出显示
4. Kernel源码中文档:
Documentation/devicetree/bindings/video/fsl,ldb.txt
Documentation/devicetree/bindings/fb/fsl_ipuv3_fb.txt
Documentation/devicetree/bindings/video/display-timing.txt

我这里对以上内容进行总结,并结合开发经验,对我们需要进行的配置项进行下归纳说明:

一. lcd相关参数说明:

下图必不可少:
这里写图片描述
具体参数(不同datasheet中定义名称略有差别):
1. VBP(vertical back porch):
表示在一帧图像开始时,垂直同步信号以后的无效的行数,
对应驱动/设备树中的upper_margin/vback-porch;
2. VFP(vertical front porch):
表示在一帧图像结束后,垂直同步信号以前的无效的行数,
对应驱动/设备树中的lower_margin/vfront-porch;
3. VSPW(vertical sync pulse width):
表示垂直同步脉冲的宽度,用行数计算,
对应驱动/设备树中的vsync_len/vsync-len;
4. HBP(horizontal back porch):
表示从水平同步信号开始到一行的有效数据开始之间的VCLK的个数,
对应驱动/设备树中的left_margin/hback-porch;
5. HFP(horizontal front porth):
表示一行的有效数据结束到下一个水平同步信号开始之间的VCLK的个数,
对应驱动/设备树中的right_margin/hfront-porch;
6. HSPW(horizontal sync pulse width):
表示水平同步信号的宽度,用VCLK计算,
对应驱动/设备树中的hsync_len/hsync-len;

以上都是无效显示区域,下面两个是我们lcd正真有效的显示区域,即分辨率:
7. VDP(vertical display period):
表示垂直显示有效区域,对应驱动/设备树中的对应yres/hactive
8. HDP(horizontal display period):
表示水平显示有效区域,对应驱动/设备树中的对应xres/vactive

此外还有两个时钟相关参数:
DOTCLK frequency(设备树中的clock-frequency)和驱动中的pixclock
DOTCLK在datasheet中能查阅到,它与pixclock的关系是:
pixclock = 1000000 / DOTCLK ,启动DOTCLK单位是MHz,pixclock单位是皮秒,例如:
若DOTCLK为33.26MHz,pixclock即为30066ps = 30.066ns

关于以上6个无效显示区域的配置,是根据datasheet中的Video Signal Timing来设置的,datasheet中还有两个参数VP和HP,即水平方向总长和垂直方向总长,他们与上述8个参数关系是:
VP = VBP + VDP + VFP + VSPW
HP = HBP + HDP + HFP + HSPW
若datasheet中没有这些参数的type值,而且根据时序图也无法计算出来,
就只能在min和max值之间进行选择尝试,注意:这8个值都非0,并且一定遵循上述2个公式
还有一点需要注意(不是很确定,看到有一个datasheet是这么定义的):
VSPW(min) < VSPW < VBP
HSPW(min) < HSPW < HBP

二. 设备树中的配置:

  1. display-timings中的参数例如clock-frequency ,hactive ,vactive,hback-porch 等等在上面已经描述过了,经过查阅datasheet和调试,即可完成

  2. fsl,data-mapping和fsl,data-width的配置:
    fsl,data-mapping: Should be “spwg” or “jeida”.
    This describes how the color bits are laid out in the serialized LVDS signal.
    fsl,data-width: Should be <18> or <24>

data-mapping具体也要根据datasheet来设置,”spwg” 和 “jeida”遵循下图规则:
这里写图片描述

3.mode的选择:

/**    "ldb=spl0/1"       --      split mode on DI0/1*    "ldb=dul0/1"       --      dual mode on DI0/1*    "ldb=sin0/1"       --      single mode on LVDS0/1*    "ldb=sep0/1"       --      separate mode begin from LVDS0/1**    there are two LVDS channels(LVDS0 and LVDS1) which can transfer video*    datas, there two channels can be used as split/dual/single/separate mode.**    split mode means display data from DI0 or DI1 will send to both channels*    LVDS0+LVDS1.*    dual mode means display data from DI0 or DI1 will be duplicated on LVDS0*    and LVDS1, it said, LVDS0 and LVDS1 has the same content.*    single mode means only work for DI0/DI1->LVDS0 or DI0/DI1->LVDS1.*    separate mode means you can make DI0/DI1->LVDS0 and DI0/DI1->LVDS1 work*    at the same time.*/

根据如上说明,uboot参数中可以配置ldb的这四种模式,并且在设备树中,对于单通道和双通道也有以下配置:
- split-mode: Provide this bool property if your board uses LDB split
mode to drive a high resolution display, say 1080P@60. In this
mode, two LVDS channels will drive one display.
- dual-mode: Provide this bool property if your board uses LDB dual
mode to drive two displays. In this mode, one display engine will
drive two displays which have the same timings and display content.

对于大分辨率双通道lvds来说,需要配置设备树中:
lvds属性split-mode,
并且clock-frequency为datasheet中DCLK×2
还需要在uboot参数中添加:
ldb=spl0/1

我们项目中即将使用分辨率为1920*720的双通道lvds,待我验证完成以后,会对此博客进行详细说明和补充


http://chatgpt.dhexx.cn/article/GDaR0yis.shtml

相关文章

IMX6U主频详解和配置

IMX6U默认396Mhz主频 可以达到528Mhz 一、时钟来源及组成 1、时钟的来源都是晶振 32.768khz的晶振 给RTC使用 24MHz的晶振给系统来使用 接在T16和T17这两个IO上 2、芯片时钟构成 七路PLL 全都由24Mhz晶振产生 使用这些的原因是为了方便外设使用 倍频产生 ①ARM PLL供给AR…

iMX6平台MAX9288调试

因为有之前Ti ds90ub964的调试经验&#xff0c;这次调9288只是当做一个常规的驱动调试&#xff0c;坑大也得到了宝贵的经验 9288&#xff08;GMSL--->MIPI CSI2&#xff09;解码器解码9291和9277编码器过来的gmsl信号 iMX6DQ的mipi csi接口寄存器控制的特性&#xff1a; …

【imx6ul】从头搭建imx6ul开发环境(uboot、内核编译及烧入、mfgtools详细使用方法)

实现一个自制的Bootloader见: 01-基于imx6ul从0自制Bootloader专栏实现总结_【星星之火】的博客-CSDN博客 硬件平台&#xff1a;自制imx6ul&#xff08;详见【ALLEGRO】从零制作imx6-PCB核心板全流程_【星星之火】的博客-CSDN博客&#xff09;系统&#xff1a;linux-4.1.15文件…

飞思卡尔IMX6处理器的GPIO配置方式

在linux或android系统中&#xff0c;假如我们要配置飞思卡尔IMX6处理器的GPIO管脚&#xff0c;比如是GPIO_19这个管脚&#xff0c;那么要像这样&#xff1a; #define MX6Q_PAD_GPIO_19__GPIO_4_5 \(_MX6Q_PAD_GPIO_19__GPIO_4_5 | MUX_PAD_CTRL(NO_PAD_CTRL))其中_MX6Q_PAD_…

迅为IMX6Q四核核心板商业级|工业级|IMX6Plus版本|IMX6D双核核心板

迅为IMX6Q核心板工业级/Plus版本 IMX6Q处理器&#xff1a;兼容单核&#xff0c;双核&#xff0c;工业级&#xff0c;汽车级&#xff0c;IMX6Q最新Plus版本&#xff0c;共用同一底板&#xff0c;高端产品无忧。 i.MX6系列针对消费电子、工业控制和汽车应用领域&#xff0c;它将…

imx6ull驱动开发经验

1、背景 imx6ull驱动开发基于正点原子的开发板&#xff0c;上面运行linux 4.1.15内核&#xff0c;根文件系统为ubuntu 16.05.5 LTS. 2、加载驱动文件chrdevbase.ko文件时&#xff0c;先使用depmod生成依赖文件时&#xff0c;提示无modules.order, modules.builtin无这两个文件…

【盘点】imx6的应用

导读: i.mx6系列应用处理器因其高性能&#xff0c;低功耗以及令人瞩目的多媒体功能等特性&#xff0c;被广泛运用于消费电子、工业以及汽车车载娱乐系统等新应用中。 今天为大家盘点一下启扬i.MX6嵌入式主板的部分实际应用。 以智能、多媒体为中心、基于触摸的设备市场正在迅速…

imx6 usb增强信号强度

USB信号 参考&#xff1a;官方文档 USB信号完整性取决于许多因素&#xff0c;如电路设计、PCB布局、堆叠和阻抗。每个产品可能彼此不同&#xff0c;因此客户需要微调参数&#xff0c;以获得最佳的信号质量。 测试板已经路由出两个USB端口:一个OTG1&#xff0c;一个主机。每个端…

iMX6ULL上手体验

CSDN仅用于增加百度收录权重&#xff0c;排版未优化&#xff0c;日常不维护。请访问&#xff1a;www.hceng.cn 查看、评论。 本博文对应地址: https://hceng.cn/2018/03/28/iMX6ULL上手体验/#more 第一次接触NXP/Freescale的SOC&#xff0c;记录拿到板子后快速上手的技巧和思维…

imx6ul 驱动详解

链表的知识&#xff1a; struct list_head { struct list_head *next, *prev; };API函数 函数 功能LIST_HEAD声明并初始化双向链表。INIT_LIST_HEAD初始化双向链表。list_add在链表头head节点后面插入一个新的节点new。list_add_tail在链表末尾tail节点后面插入一个新的节点n…

IMX6 / IMX8 系列芯片简单对比

imx6有&#xff1a; imx8 分为&#xff1a; IMX8/IMX8M/IMX8X三个系列 IMX8有&#xff1a;iMX 8qm 和 IMX8-QP IMX8M有&#xff1a;IMX8mn 、 IMX8mm 、 IMX8mq 、IMX8mp 3.IMX8X 有&#xff1a;iMX8dxp / iMX8qxp 和 iMX8dx

IMX6启动流程

目录 1. 流程图 2. u-boot.imx的构造 1. 流程图 正常情况下&#xff0c;一台IMX6设备的启动路径就是图中自上而下最左边那条路&#xff1a; 启动/复位后先检查CPU的ID(每颗芯片独一无二) ------> 检查复位状态(有没有按下复位键) ------> 检查boot模式(mmc? USB? SPI…

ARM恩智浦IMX6系列-产品开发无忧-四种主控核心

ITOP-IMX6 开发平台是基于 NXP 的 IMX6 系类的芯片开发的一款产品&#xff0c;CPU 采用 Cortex-A9 内核&#xff0c;主频达1Ghz。 ITOP-IMX6 开发板平台均由核心板和底板构成&#xff0c;核心板的主要芯片有 CPU,内存&#xff0c;EMMC&#xff0c;电源管理&#xff0c;EEPROM 等…

关于NXP公司的IMX6系列芯片参考资料体系介绍

IMX6系列芯片由FreeScale公司基于ARM核设计开发&#xff0c;该公司于2015年被NXP公司收购。之前由FreeScale提供支持的资源被整合进NXP支持体系&#xff0c;资料内部FreeScale和NXP的标记都有&#xff0c;文档内部原有资源链接失效&#xff0c;给人混乱感。加之IMX6系列芯片本身…

伺服电机矢量控制原理与仿真(1)控制系统的建立

自动控制原理综合实践 直流伺服电机及其控制为什么是六步换向法类比有刷直流电机类比三相异步电机这些差异意味着什么 从六步换向到FOCFOC的大体流程FOC的目的电流环的执行器&#xff1a;SVPWM 从物理走向数学直流伺服电机的数学模型&#xff08;正弦式&#xff09;从数学模型到…

台达PLC模拟量或台达伺服电机控制模块程序案例

台达PLC模拟量或台达伺服电机控制模块程序案例&#xff0c;二选一 ID:6958618562901252Anh13309639501 以下内容不属于本博内容&#xff0c;仅仅是相关参考&#xff1a; 台达PLC采用可以编制程序的存储器&#xff0c;用来在其部存储执行逻辑运算、顺序运算、计时、计数和算术运…

使用Arduino开发板控制伺服电机

大多数情况下&#xff0c;直流电机控制的控制方法都是非常简单的&#xff08;只需要连接电源和地&#xff09;。伺服电机有一些不同&#xff0c;它使用3根线连接&#xff08;电源、地和信号&#xff09;将电机移动到某个旋转位置。该位置由信号线上发送的信号决定。一旦电机到达…

步进伺服电机控制程序: 1.实现步进电机的正转、反转控制 2.相对和绝对位置运动

步进伺服电机控制程序: 1.实现步进电机的正转、反转控制 2.相对和绝对位置运动 3.电机复位找原点功能 4.显示电机的当前位置 硬件:1西门子S7-200PLC 2.昆仑通泰MCGS触摸屏 3.步进电机驱动器(不限制厂家) 西门子200步进电机控制 4810625077520119gao699592

三菱fx3u型PLC和昆仑通泰MCGS触摸屏控制松下伺服电机控制程序

三菱fx3u型PLC和昆仑通泰MCGS触摸屏控制松下伺服电机控制程序 一、包含内容&#xff1a; mcgs7.7触摸屏程序 2.三菱FX3U型PLC梯形图程序一个&#xff0c;带IO表 3.PLC和伺服电机接线图一个 4.伺服电机使用手册 二、主要功能&#xff1a; 1.伺服电机运动速度设定 2.伺服电机运动…

伺服电机

1.简介 伺服系统&#xff08;servomechanism&#xff09;是使物体的位置、方位、状态等输出被控量能够跟随输入目标&#xff08;或给定值&#xff09;的任意变化的自动控制系统。伺服主要靠脉冲来定位&#xff0c;基本上可以这样理解&#xff0c;伺服电机接收到1个脉冲&#xf…