HMI方案技术分享|启明智显M4核心板适配RGB/LVDS接口屏幕教程

news2024/10/6 6:45:03

前言:

深圳市启明智显科技有限公司专注于HMI(人机交互)和AIoT(人工智能物联网)产品和解决方案的研发、设计和生产。公司产品覆覆盖了多种操作系统,包括Linux、RTOS和OneOs等。无论您的项目使用哪种系统,我们都能提供相应的产品和解决方案。目前公司产品广泛应用于各个领域,包括但不限于智能家居、工业自动化、智慧医疗、智能家电和智慧出行等领域。

今天给大家分享的是启明智显M4核心板适配RGB/LVDS屏幕的教程

M4核心板-ZXM4R64CT
在这里插入图片描述

适配M4开发板
在这里插入图片描述

M4核心板主要功能特点:

M4核心板是启明智显基于M4芯片设计的一款高性能的全高清显示和智能控制模组,采用国产自主 64 位高算力 RISC-V 内核,内置 16 位 DDR 控制器并提供丰富的互联外设接口,配备了 2D 图像加速引擎和 H.264 解码引擎,主频600MHz,支持工业宽温。

  1. 默认配置 64MB DDR2,128MB Nand Flash(up to 2GB)

  2. 超小尺寸(27.3mm*27.3mm)。

  3. 单面布件,正面可选装屏蔽罩支持 Linux 系统,1s超快速启动

  4. 严格的信号完整性与电源完整性设计与测试

  5. 88Pin 1.1mm 引脚间距

  6. 支持Linux,Openwrt,RT-Thread,OneOS,FreeRtos

  7. UI支持LVGL,8MS

  8. 支持1920*1080分辨率,支持H.264解码 1080P@30fps、MJPEG/PNG/JPEG解码,2D图像加速

  9. 1EMAC/8UART/2USB/3SPI/2CAN//8PWM/1CIR/2SDMC/DVP YUV/1*LVDS/RGB/MIPI DSI

**

显示接口

**

RGB接口

  • 支持 PRGB 24/18/16 bit 模式,最高 120MHz PIXELCLK

  • 支持 SRGB 8/6bit 模式,最高 480x320@60fps

  • 支持 8 位色深,R/G/B 三组信号可任意交叉

  • 支持 R/G/B 组内数据输出顺序切换

  • PRGB/SRGB 时钟提供4个相位选择

LVDS接口

  • 支持 Single Link,最高速率 700Mbps
  • 支持 VESA 和 JEIDA 模式
  • 支持 18bit 和 24bit 数据传输
  • 支持 LVDS 信号极性选择模式
  • 支持 LVDS 五组差分对信号任意互换

MIPI-DSI接口

  • 最大支持 1080P60 及衍生分辨率,支持 Video 和 Command 模式
  • Video 模式支持 Non-burst 和 Burst 两种方式
  • 可配置为 1/2/3/4 对数据通道,每通道最大支持 1Gbps 速率
  • 支持 RGB888,RGB666,RGB666 packed,RGB565

MIPI-DBI接口

  • 支持 B 类接口,Intel 8080 总线
  • 支持 C 类接口,SPI 总线
  • I8080 支持 24/18/16/9/8bit 模式,最高 960x540@60fps
  • SPI 支持 3/4-wire 以及 4-sda 模式,最高 480x320@60fps

M4核心板适配RGB/LVDS屏幕的教程:

一、LCD 外设在 ZX-RTT 上的适配方法

方式一:通过 menuconfig 修改屏参数

在 ZX-RTT 根目录下执行 scons --menuconfig,进入 menuconfig 的功能配置界面,按如下选择:


> Board options  --->    Graphics Support  --->        Graphics support 
> [*] Display Support                select Display interface (Display
> LVDS interface)  --->                LVDS interface options  --->     
> Display Panels  --->                    ZX Panel Drivers (ZX simple
> panel)  --->                    display timing of simple panel  --->

此方法支持修改 simple panel 的时序参数和 RGB/LVDS 的部分参数

方式二:将屏参数写入 panel 驱动源码中

时序参数
在这里插入图片描述

屏接口参数
在这里插入图片描述

提示:如果方式一和方式二都配置了屏幕参数,最终生效的是方式二的参数。

如果适配一款 RGB/LVDS 屏幕,通过 menuconfig 选择 ZX simple panel , 修改显示参数即可。这类屏幕往往不需要初始化,使用通用的屏驱动即可。

menuconfig配置

1、使能显示模块驱动

在 ZX-RTT 根目录下执行 scons --menuconfig,进入 menuconfig 的功能配置界面,按如下选择:

Board options —>
[*] Using Display Engine (DE)
Display Parameter —>

2、选择显示接口

使能显示模块的驱动后,需要选择相应的显示接口。

Board options  --->
    [*] Using Display Engine (DE)
        Display Parameter  --->
            select Display interface (Display LVDS interface)  --->

ZX 平台支持多种显示接口标准,但在系统运行时只能生效一个。

3、屏幕配置

ZX-RTT sdk 不仅为 RGB/LVDS 接口提供通用的 panel 驱动 (ZX simple panel),

也为部分屏驱 IC 提供专用的 panel 驱动。

提示:只有使能了 panel 对应的显示接口后,panel 才能在 menuconfig 中可见。

Board options  --->
    [*] Using Display Engine (DE)
        Display Parameter  --->
            Display Panels  --->

如果选择了 ZX simple panel,可以通过 menuconfig 来修改屏时序参数

Display Panels  --->
    ZX Panel Drivers (ZX simple panel)  --->
    display timing of simple panel  --->

二、背光配置

1、GPIO

在 menuconfig 中,选择 GPIO 方式控制背光,以字符串的形式指定 gpio 引脚。

enable-gpio 默认高电平有效。

Board options  --->
    [*] Using Display Engine (DE)
        Display Parameter  --->
            panel backlight control (gpio)  --->
        (PE.19) panel backlight enable pin
        [ ] panel backlight enable pin low active

2、PWM

在 menuconfig 中,选择 PWM 方式控制背光,配置 pwm 的通道和默认占空比 [0, 100]

使能 pwm

Board options  --->
    [*] Using PWM3

配置 pwm-backlight

Board options  --->
    [*] Using Display Engine (DE)
        Display Parameter  --->
            panel backlight control (pwm)  --->
        (3) pwm backlight channel
        (80) default brightness level

三、显示引擎配置

Board options  --->
    [*] Using Display Engine (DE)
        Display Parameter  --->
            select framebuffer format (argb8888)  --->
            [*] Support double framebuffer
            [*] Enable Display Dither

framebuffer 默认使用 32 位 ARGB8888 格式。

使能双 buffer 可以避免屏幕撕裂,获得更好的显示效果。

当显示引擎 blend 32 位 RGB 数据,但显示接口只输出 18/16 位 RGB 数据时,使能 dither 能让图像色彩渐变更平滑

四、显示接口配置

1、RGB 接口

选择 RGB 显示接口

Board options  --->
    [*] Using Display Engine (DE)
        Display Parameter  --->
            select Display interface (Display RGB interface)  --->
            RGB interface options  --->

RGB 显示接口参数配置

RGB interface options  --->
    rgb mode (PRGB)  --->
    interface format (PRGB 16 BIT LD)  --->
    data order (RGB)  --->
    clock phase select (0 degree)  --->

rgb mode

支持并行 RRGB 和串行 SRGB 两种模式

interface format

接口的输出格式

在这里插入图片描述

data order

R/G/B 分量输出顺序

在这里插入图片描述

clock phase select

支持 0/90/180/270 度,四种时钟相位选择

data mirror

RGB数据组内大小端输出。默认输出低位到高位 0 - 7。如果设置则输出变为 7 - 0

2、LVDS接口

选择 LVDS 显示接口

Board options  --->
    [*] Using Display Engine (DE)
        Display Parameter  --->
            select Display interface (Display LVDS interface)  --->
            LVDS interface options  --->

LVDS 显示接口参数配置

LVDS interface options  --->
    lvds mode (vesa-24)  --->
    lvds link mode (single link 1)  --->
lvds mode

lvds 模式设置,默认输出为 vesa-24 模式
在这里插入图片描述

lvds link mode

lvds link 设置,默认配置 single link1 ,单link输出,link1通道。

3、调试指南

调试开关

在 ZX-RTT 根目录下执行 scons --menuconfig,进入 menuconfig 的功能配置界面,按如下选择:

Drivers options  --->
    Drivers debug  --->
        [*] Enable Display driver debug

此 DEBUG 选项打开的影响:

显示驱动的 pr_debug() 调试信息会被打印输出

显示 color block

在 ZX-RTT 根目录下执行 scons --menuconfig,进入 menuconfig 的功能配置界面,按如下选择:

Board options  --->
   Graphics Support  --->
       [*] Display color block

此选项开启后,系统上电时 LCD 屏幕会显示红,绿,蓝,黑,白五种颜色的矩形色块,矩形色块通过 CPU 进行绘制。

使能 color bar

在 RT-Thread 系统启动后,可在命令行执行以下命令:

m 0x18a00004 1
m 0x18a00008 1

此命令会使能显示引擎的 colorbar 模式。此时,显示引擎不再从内存中读取数据,而是直接生成 colorbar 数据并传送给显示接口。colorbar 模式仅供调试使用。

禁用 colorbar 模式的命令为:

m 0x18a00004 0
m 0x18a00008 1

4、测试指南

LVDS屏幕,7寸TFT屏幕,驱动芯片EK79001+EK73215

软件配置 LVDS屏幕

测试中需要用到LVDS屏幕,以驱动芯片EK79001+EK73215为例,在 ZX-RTT 的根目录下执行 scons --menuconfig ,按如下选择

[*] Display Support
        select Display interface (Display LVDS interface)  --->
    LVDS interface options  --->

video_layer 测试

video_layer 的主要功能是测试显示引擎 UI 图层和 Video 图层 blend,在 Video 图层播放一个视频帧文件

测试需要依赖 SD Card,将 YUV 数据保存在 SD Card 中,在系统启动后进行挂载:

mount sd0p0 / elm

播放一个 yuv420 格式的文件

aic /> video_layer -u
Usage: video_layer [options]:
     -w, --width        need an integer argument, default is 176
     -h, --height       need an integer argument, default is 144
     -s, --stride       video stride, just tile format need
     -f, --format       video format, yuv420p etc
     -i, --input        need a file name
     -l, --list     list the supported formats
     -u, --usage

Example: video_layer -w 176 -h 144 -f yuv420p -i my.yuv

aic /> video_layer -w 176 -h 144 -f yuv420p -i my.yuv

disp_prop测试

disp_prop 的主要功能是测试显示引擎 Video 图层的 csc 色彩转换模块,通过设置亮度,对比度,饱和度,色调等参数,改变 video 图层的显示效果。

aic /> disp_prop -u
Usage: disp_prop [Options], built on May 24 2023 17:41:29
    -b, --bright
    -c, --contrast
    -s, --saturation
    -h, --hue
    -u, --usage

All parameter range in [0, 100], 50 means no effect, default is 50

Example: disp_prop -b 35 -c 40 -s 45 -h 44

设置参数后再次在 video 图层播放一个 YUV 视频帧文件,可以看到两者显示效果不同:

aic /> video_layer -w 176 -h 144 -f yuv420p -i my.yuv

如果想重置显示效果,可将所有参数设置为 50,或者直接执行 disp_prop 命令

aic /> disp_prop -b 50 -c 50 -s 50 -h 50

aic /> disp_prop

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

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

相关文章

policy-space response oracles (PSRO)含义

Algorithm 1 维护了一个所有玩家策略的策略池。然后循环地选定玩家,然后从他的策略集中选择出一个策略,固定其它所有玩家此时的策略,然后不断地训练这个策略使得该策略成为一个在别的玩家策略不变的情况下、近似的best respond。然后将其加入…

仿牛客网项目---关注模块的实现

本篇文章是关于我的项目的关注模块的开发。 关注模块的开发实现了用户之间的关注功能和关注列表的展示。通过使用相应的服务类处理关注和取消关注操作,并利用用户服务类获取用户信息,实现了关注功能的存储和查询。同时,通过触发关注事件&…

哈希的简单介绍

unordered系列关联式容器 在C98中,STL提供了底层为红黑树结构的一系列关联式容器,在查询时效率可达到 l o g 2 N log_2 N log2​N,即最差情况下需要比较红黑树的高度次,当树中的节点非常多时,查询效率也不理想。最好的…

少儿编程 中国电子学会C++等级考试一级历年真题答案解析【持续更新 已更新82题】

C 等级考试一级考纲说明 一、能力目标 通过本级考核的学生,能对 C 语言有基本的了解,会使用顺序结构、选择结构、循环结构编写程序,具体用计算思维的方式解决简单的问题。 二、考核目标 考核内容是根据软件开发所需要的技能和知识&#x…

深度学习_18_模型的下载与读取

在深度学习的过程中,需要将训练好的模型运用到我们要使用的另一个程序中,这就需要模型的下载与转移操作 代码: import math import torch from torch import nn from d2l import torch as d2l import matplotlib.pyplot as plt# 生成随机的…

私有化部署自己的ChatGPT,免费开源的chatgpt-next-web搭建

随着AI的应用变广,各类AI程序已逐渐普及,尤其是在一些日常办公、学习等与撰写/翻译文稿密切相关的场景,大家都希望找到一个适合自己的稳定可靠的ChatGPT软件来使用。 ChatGPT-Next-Web就是一个很好的选择。它是一个Github上超人气的免费开源…

新零售SaaS架构:订单履约系统的概念模型设计

订单履约系统的概念模型 订单:客户提交购物请求后,生成的买卖合同,通常包含客户信息、下单日期、所购买的商品或服务明细、价格、数量、收货地址以及支付方式等详细信息。 子订单:为了更高效地进行履约,大订单可能会被…

安卓开发:计时器

一、新建模块 二、填写应用名称和模块名称 三、选择模块,Next 四、可以保持不变,Finish 五、相关目录文件 六、相关知识 七、?

正大国际:期货结算价是如何理解呢?结算价有什么作用?

如何理解期货结算价: 什么是商品期货当日结算价, 商品期货当日结算价是指某一期货合约当日交易期间成交价格按成交量的加权平均价。当日 无成交的,当日结算价按照交易所相关规定确定。 股指期货当日结算价是指某一期货合约当日交易期间最后一…

采购软件是如何改善采购周期?

采购是一个复杂的职能重叠网络,由市场分析、供应商选择、发布 RPF/RFQ、合同谈判等多个工作流程组成。此外,时间紧迫、满足客户期望等压力也使这项工作极具挑战性。因此,如果企业在采购过程中采取短视的方法,没有遵循适当的结构&a…

Pygame教程02:图片的加载+缩放+旋转+显示操作

------------★Pygame系列教程★------------ Pygame教程01:初识pygame游戏模块 Pygame教程02:图片的加载缩放旋转显示操作 Pygame教程03:文本显示字体加载transform方法 Pygame教程04:draw方法绘制矩形、多边形、圆、椭圆、弧…

海王星(Neptune)系列和大禹(DAYU)系列OpenHarmony智能硬件配置解决方案

海王星(Neptune)系列和大禹(DAYU)系列OpenHarmony智能硬件对OS的适配、部件拼装配置、启动配置和文件系统配置等。产品解决方案的源码路径规则为:vendor/{产品解决方案厂商}/{产品名称}_。 解决方案的目录树规则如下&…

React__ 二、React状态管理工具Redux的使用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言redux状态管理安装redux创建文件 并使用传参action 总结 前言 redux状态管理插件的使用 提示:以下是本篇文章正文内容,下面案例可供参考…

Typescript 哲学 morn on funtion

函数重载 overload 有一些编程语言(eg:java)允许不同的函数参数,对应不同的函数实现。但是,JavaScript 函数只能有一个实现,必须在这个实现当中,处理不同的参数。因此,函数体内部就…

【系统需求分析报告-项目案例直接套用】

软件需求分析报告 软件开发要求项目建设内容物理设计安全系统设计安全网络安全设计应用安全设计用户安全管理性能设计稳定性设计安全性设计兼容性设计易操作性设计可维护行设计 软件开发全套精华资料过去进主页领取。

10亿数据如何快速插入MySQL

最快的速度把10亿条数据导入到数据库,首先需要和面试官明确一下,10亿条数据什么形式存在哪里,每条数据多大,是否有序导入,是否不能重复,数据库是否是MySQL? 有如下约束 10亿条数据,每条数据 1 Kb 数据内容是非结构化的用户访问日志,需要解析后写入到数据库 数据存放在…

2024新版SonarQube+JenKins+Github联动代码扫描(2)-SonarQube代码扫描

文章目录 前言一、docker方式安装sonar二、启动容器三、创建数据库四、启动sonarqube五、访问sonar六、如果访问报错-通过sonar日志定位问题七、修改密码八、汉化(看个人选择)九、扫描十、我遇到的Sonar报错以及解决办法 总结 前言 这是2024新版SonarQu…

【OpenGL编程手册08】 摄像机

一、说明 前面的教程中我们讨论了观察矩阵以及如何使用观察矩阵移动场景(我们向后移动了一点)。OpenGL本身没有摄像机(Camera)的概念,但我们可以通过把场景中的所有物体往相反方向移动的方式来模拟出摄像机,产生一种我们在移动的感…

关于python函数参数传递

参数传递 在 python 中,类型属于对象,对象有不同类型的区分,变量是没有类型的: 在下面的代码示例重,[1,2,3] 是 List 类型,“qayrup” 是 String 类型,而变量 a 是没有类型,它仅仅…

PyTorch深度学习实战(38)——StyleGAN详解与实现

PyTorch深度学习实战(38)——StyleGAN详解与实现 0. 前言1. StyleGAN1.1 模型介绍1.2 模型策略分析 2. 实现 StyleGAN2.1 生成图像2.2 风格迁移 小结系列链接 0. 前言 StyleGAN (Style-Generative Adversarial Networks) 是生成对抗网络 (Generative Ad…