全志A133 android10 mipi屏幕调试

一,确认屏幕信息

屏幕调试首先要查看屏幕规格书,主要看里面的屏供电电压vdd,背光供电电压,timing参数部分。

举个例子:

  1. 屏供电电压
    在这里插入图片描述
    可以看出供电电压为3.3V,过大则会烧屏;
  2. 背光供电电压
    在这里插入图片描述
    屏幕背光电压为12V;
  3. 屏timing参数
    在这里插入图片描述
    全志平台的timming跟其他平台有一些差异,具体公式如下:
lcd_dclk_freq的值,具体公式如下:
lcd_dclk_freq = lcd_ht * lcd_vt * fps(60) 
对于一直点不亮的mipi屏,可以适当加大数值,不一定要按照公式算出的准确结果!lcd_hbp = hbp+hspw;
lcd_ht = hbp+hspw+hfp+ht;
lcd_hspw = hspw;
lcd_vbp = vbp+vspw;
lcd_vt = vbp+vspw+vfp+vt;
lcd_vspw = vspw;

二,设备树配置

  1. 设备树配置,主要配置disp,lcd0这两个节点:
    代码路径:longan/device/config/chips/a133/configs/b6/board.dts
       disp: disp@06000000 {disp_init_enable         = <1>;disp_mode                = <0>;screen0_output_type      = <1>;screen0_output_mode      = <4>;screen1_output_type      = <1>;screen1_output_mode      = <4>;screen1_output_format    = <0>;screen1_output_bits      = <0>;screen1_output_eotf      = <4>;screen1_output_cs        = <257>;screen1_output_dvi_hdmi  = <2>;screen1_output_range     = <2>;screen1_output_scan      = <0>;screen1_output_aspect_ratio = <8>;dev0_output_type         = <1>;dev0_output_mode         = <4>;dev0_screen_id           = <0>;dev0_do_hpd              = <0>;dev1_output_type         = <4>;dev1_output_mode         = <10>;dev1_screen_id           = <1>;dev1_do_hpd              = <1>;def_output_dev           = <0>;hdmi_mode_check          = <1>;fb0_format               = <0>;fb0_width                = <720>;fb0_height               = <1280>;fb1_format               = <0>;fb1_width                = <0>;fb1_height               = <0>;chn_cfg_mode             = <1>;disp_para_zone           = <1>;/*VCC-LCD*/dc1sw-supply = <&reg_cldo4>;/*VCC-DSI*/cldo1-supply = <&reg_cldo1>;/*VCC-PD*/dcdc1-supply = <&reg_cldo3>;};
      lcd0: lcd0@01c0c000 {lcd_used            = <1>;lcd_driver_name     = "K080_IM2HYL802R_800X1280";  //mipi驱动lcd_backlight       = <50>;lcd_if              = <4>;lcd_x               = <720>;lcd_y               = <1280>;lcd_width           = <150>;lcd_height          = <36>;lcd_dclk_freq       = <58>;lcd_pwm_used        = <1>;lcd_pwm_ch          = <0>;lcd_pwm_freq        = <50000>;lcd_pwm_pol         = <1>;lcd_pwm_max_limit   = <255>;lcd_hbp             = <30>;lcd_ht              = <770>;lcd_hspw            = <6>;lcd_vbp             = <16>;lcd_vt              = <1311>;lcd_vspw            = <4>;lcd_frm             = <0>;lcd_gamma_en        = <0>;lcd_bright_curve_en = <0>;lcd_cmap_en         = <0>;deu_mode            = <0>;lcdgamma4iep        = <22>;smart_color         = <90>;lcd_dsi_if          = <0>;lcd_dsi_lane        = <4>;lcd_dsi_format      = <0>;lcd_dsi_te          = <0>;lcd_dsi_eotp        = <0>;lcd_pin_power = "dcdc1";lcd_power0 = "cldo1";//VCC-MIPI-LCD cldo1 1.8lcd_power1 = "dc1sw";//VCC-LCD cldo4 3.3lcd_gpio_1 = <&pio PD 22 1 0 3 1>;//LCD-RSTlcd_gpio_2 = <&pio PE 9 1 0 3 1>;//LCD0_PWREN_H PE9lcd_gpio_3 = <&r_pio PL 9 1 0 3 1>;//LCD0_PWREN_H_1V8pinctrl-0 = <&dsi4lane_pins_a>;pinctrl-1 = <&dsi4lane_pins_b>;lcd_bl_en = <&pio PH 18 1 1 0 3 1>;lcd_bl_0_percent    = <15>;lcd_bl_100_percent  = <100>;};
  1. uboot驱动配置
    上面lcd节点中“lcd_driver_name = "K080_IM2HYL802R_800X1280";”有引用驱动,mipi驱动部分平台已经是已经添加,我们只需要按照要求配置。如果uboot中没有添加驱动,那么连背光都不亮。驱动代码如下:
    代码路径:longan/brandy/brandy-2.0/u-boot-2018/drivers/video/sunxi/disp2/disp/lcd/K080_IM2HYL802R_800X1280.c

替换填入初始化代码(一般由屏厂提供,按照格式替换进全志的数组中)

/*add panel initialization below*/static struct LCM_setting_table lcm_init_setting[] = {{0xB9,    3,     {0xFF,0x83,0x94} },{0xBA,    6,     {0x63,0x03,0x68,0x6B,0xB2,0xC0} },{0xB1,   10,     {0x50,0x12,0x72,0x09,0x33,0x54,0x71,0x31,0x70,0x2F} },{0xB2,    6,     {0x00,0x80,0x64,0x0E,0x0D,0x2F} },{0xB4,   21,     {0x6C,0x6D,0x6C,0x6D,0x6C,0x6D,0x01,0x01,0xFF,0x75,0x00,0x3F,0x6C,0x6D,0x6C,0x6D,0x6C,0x6D,0x01,0x01,0xFF} },{0xB6,    2,     {0x73,0x73} },{0xD3,   33,     {0x00,0x00,0x07,0x07,0x40,0x07,0x10,0x00,0x08,0x10,0x08,0x00,0x08,0x54,0x15,0x0E,0x05,0x0E,0x02,0x15,0x06,0x05,0x06,0x47,0x44,0x0A,0x0A,0x4B,0x10,0x07,0x07,0x0E,0x40} },{0xD5,   44,     {0x1A,0x1A,0x1B,0x1B,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x24,0x25,0x18,0x18,0x26,0x27,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x20,0x21,0x18,0x18,0x18,0x18} },{0xD6,   44,     {0x1A,0x1A,0x1B,0x1B,0x0B,0x0A,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x01,0x00,0x21,0x20,0x18,0x18,0x27,0x26,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x25,0x24,0x18,0x18,0x18,0x18} },{0xE0,   58,     {0x00,0x0C,0x19,0x20,0x23,0x26,0x29,0x28,0x51,0x61,0x70,0x6F,0x76,0x86,0x89,0x8D,0x99,0x9A,0x95,0xA1,0xB0,0x57,0x55,0x58,0x5C,0x5E,0x64,0x6B,0x7F,0x00,0x0C,0x18,0x20,0x23,0x26,0x29,0x28,0x51,0x61,0x70,0x6F,0x76,0x86,0x89,0x8D,0x99,0x9A,0x95,0xA1,0xB0,0x57,0x55,0x58,0x5C,0x5E,0x64,0x6B,0x7F} },{0xC0,    2,     {0x1F,0x31} },{0xCC,    1,     {0x0B} },{0xD4,    1,     {0x02} },{0xBD,    1,     {0x02} },{0xD8,   12,     {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF} },{0xBD,    1,     {0x00} },{0xBD,    1,     {0x01} },{0xB1,    1,     {0x60} },{0xBD,    1,     {0x00} },{0xBF,    7,     {0x40,0x81,0x50,0x00,0x1A,0xFC,0x01} },//SLP OUT{0x11,     1,     {0x00} },      // SLPOUT{REGFLAG_DELAY, REGFLAG_DELAY, {120} },//DISP ON{0x29,     1,     {0x00} },      // DSPON{REGFLAG_DELAY, REGFLAG_DELAY, {5} },{REGFLAG_END_OF_TABLE, REGFLAG_END_OF_TABLE, {} }
};

LCD_panel_init函数用于初始化 LCD 面板,通过 DSI(Display Serial Interface)发送初始化命令序列。

static void LCD_panel_init(u32 sel)
{__u32 i;sunxi_lcd_dsi_clk_enable(sel);sunxi_lcd_delay_ms(20);sunxi_lcd_dsi_dcs_write_0para(sel, DSI_DCS_SOFT_RESET);sunxi_lcd_delay_ms(10);print_dsi_cmd(lcm_init_setting);  //打印mipi屏初始化参数for (i = 0; ; i++) {if (lcm_init_setting[i].count == REGFLAG_END_OF_TABLE)break;else if (lcm_init_setting[i].count == REGFLAG_DELAY)sunxi_lcd_delay_ms(lcm_init_setting[i].para_list[0]);
#ifdef SUPPORT_DSIelsedsi_dcs_wr(sel, lcm_init_setting[i].cmd, lcm_init_setting[i].para_list, lcm_init_setting[i].count);
#endif//break;}return;
}

一般情况下,按照如上步骤适配,基本都可以正常点亮屏幕。

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

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

相关文章

(下:补充——五个模型的理论基础)深度学习——图像分类篇章

目录 1.1 卷积神经网络基础 3.1 AlexNet网络结构详解与花分类数据集下载 4.1 VGG网络详解及感受野的计算 5.1 GoogLeNet网络详解 6.1 ResNet网络结构&#xff0c;BN以及迁移学习详解 总结&#xff08;可以直接看总结&#xff09; 1.1 卷积神经网络基础 视频讲解&#xf…

批量给 Word 添加文字和图片水印

在 Word 中添加水印是非常常见的一个需求&#xff0c;当我们需要将 Word 文档发送给第三方&#xff0c;或者需要将 Word 文档打印出来的时候&#xff0c;给 Word 文档加上水印是一个很重要的操作&#xff0c;可以声明版权&#xff0c;也可以起到广告标识作用。如果少量 Word 文…

数据挖掘工程师的技术图谱和学习路径

数据挖掘工程师的技术图谱和学习路径: 1.基础知识 数据挖掘工程师是负责从大量数据中发现潜在模式、趋势和规律的专业人士。以下是数据挖掘工程师需要掌握的基础知识: 数据库知识:熟悉关系数据库和非关系数据库的基本概念和操作,掌握SQL语言。 统计学基础:了解统计学的基…

JavaSE-4方法 递归 数组

一、方法 public static 返回值类型 方法名{ 方法体&#xff1b; } 1&#xff09;修饰符&#xff1a;public static 2&#xff09;形参返回值类型和实参返回值类型一致 3&#xff09;方法名字&#xff1a;小驼峰 4&#xff09;参数列表&#xff1a;如果方法没有参数就不写…

快瞳通用文档解析技术是怎样赋能下游各类大语言模型任务?

、为什么不直接用大模型去解析文档&#xff1f; 在文档、票据结构化识别这个赛道上&#xff0c;大语言模型存在天然的局限性&#xff1a; 1.结构化数据生成效率低 大模型在处理表格、公式等结构化内容时&#xff0c;需消耗大量计算资源&#xff0c;生成速度慢且成本高昂。例如…

Microk8s Ingress实现七层负载均衡

Microk8s Ingress是什么 Ingress是k8s的一种资源对象&#xff0c;用于管理外部对集群内服务的访问, 它通过提供一个统一的入口点&#xff0c;将外部流量路由到集群内部的不同服务。 Microk8s Ingress用于解决什么问题 k8s集群中服务默认只能在集群内访问。 如果需要从外部访…

C语言(19)----------->函数(2)

本文介绍了C语言的return语句及其它在C语言函数中的作用&#xff0c;以及介绍了二维数组和一维数组传参时的一些注意事项和使用数组传参时的方法。 若没有学习过C语言的一维数组和二维数组&#xff0c;建议参考如下文章&#xff1a; C语言&#xff08;15&#xff09;--------…

数据结构——单调栈

一.单调栈简介 1.1单调栈定义与特性 本质&#xff1a;单调栈是一种特殊的栈结构&#xff0c;其内部元素始终保持单调递增或单调递减的顺序。核心规则&#xff1a;当新元素入栈时&#xff0c;会通过弹出破坏单调性的栈顶元素来维持有序性。单调方向&#xff1a; 单调递增栈&…

知微传感3D相机上位机DkamViewer使用:设置相机的静态IP

写在前面 本人从事机器视觉细分的3D相机行业。编写此系列文章主要目的有&#xff1a; 1、便利他人应用相机&#xff0c;本系列文章包含公司所出售相机的SDK的使用例程及详细注释&#xff1b;2、促进行业发展及交流。 知微传感Dkam系列3D相机可以应用于定位分拣、焊接焊缝提取、…

DeepSeek掘金——DeepSeek-R1微调指南

DeepSeek掘金——DeepSeek-R1微调指南 在这篇博文中,我们将逐步指导你在消费级 GPU 上使用 LoRA(低秩自适应)和 Unsloth 对 DeepSeek-R1 进行微调。 微调像 DeepSeek-R1 这样的大型 AI 模型可能需要大量资源,但使用正确的工具,可以在消费级硬件上进行有效训练。让我们探索…

GPT-4.5来了

https://chat.xutongbao.top/

从 JVM 源码(HotSpot)看 synchronized 原理

大家好&#xff0c;我是此林。 不知道大家有没有这样一种感觉&#xff0c;网上对于一些 Java 框架和类的原理实现众说纷纭&#xff0c;看了总是不明白、不透彻。常常会想&#xff1a;真的是这样吗&#xff1f; 今天我们就从 HotSpot 源码级别去看 synchronized 的实现原理。全…

下载b站视频音频

文章目录 方案一&#xff1a;jjdown如何使用 方案二&#xff1a;bilibili哔哩哔哩下载助手如何使用进入插件网站插件下载插件安装 使用插件下载视频音频&#xff1a;复制音频下载地址 方案三&#xff1a;bat命令下载单个音频下载单个视频下载单个音视频 方案一&#xff1a;jjdo…

快速在本地运行SpringBoot项目的流程介绍

目录 前言 一、环境配置 1.1Java环境 1.2Maven环境 1.3IntelliJ IDEA安装 1.4MySql安装 二、项目导入与启动的过程 2.1Maven镜像和本地仓库 2.1.2镜像配置 2.1.3配置本地仓库 2.2导入项目与启动 2.2.1加载Maven设置 2.2.2配置jdk与java版本 2.2.3创建数据库 2.2…

分类预测 | Matlab实现CPO-SVM冠豪猪算法优化支持向量机多特征分类预测

分类预测 | Matlab实现CPO-SVM冠豪猪算法优化支持向量机多特征分类预测 目录 分类预测 | Matlab实现CPO-SVM冠豪猪算法优化支持向量机多特征分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现CPO-SVM冠豪猪算法优化支持向量机多特征分类预测&#xff…

not support ClassForName

com.alibaba.fastjson2.JSONException: not support ClassForName : java.lang.String, you can config JSONReader.Feature.SupportClassForName 官方说明中提到默认关闭&#xff0c; 可通过配置开启 JSON.config(JSONReader.Feature.SupportClassForName);

(贪心 跳跃游戏)leetcode 55

题解思路&#xff1a;代码随想录--代码随想录本题题解 本题不考虑每个结点走几步只考虑范围 在nums[0]2&#xff0c;也就是在nums[1]和nums[2]找到最大范围&#xff08;for(int i0;i<cover;i)) nums[1]3,也就是在nums[2]和nums[4]这个区间范围找到最大范围&#xff0c;而因…

Unity中动态切换光照贴图LightProbe的方法

关键代码&#xff1a;LightmapSettings.lightmaps lightmapDatas; LightmapData中操作三张图&#xff1a;lightmapColor,lightmapDir,以及一张ShadowMap 这里只操作前两张&#xff1a; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI;public cl…

leetcode 238. 除自身以外数组的乘积

题目如下 数据范围 使用两个辅助数组分别存从前乘到后面和从后到前后面再计算就行。 &#xff08;f数组没处理好还包含了本不能乘于的数所以要向后移动一位&#xff09;。通过代码 class Solution { public:vector<int> productExceptSelf(vector<int>& n…

以太坊基金会换帅,资本市场砸盘

Vitalik力挺Aya升任EF主席&#xff0c;理想主义冬日发芽&#xff1f; 作者&#xff1a;Wenser&#xff1b;编辑&#xff1a;秦晓峰 出品 | Odaily星球日报&#xff08;ID&#xff1a;o-daily&#xff09; 2 月 27 日&#xff0c;Bybit 15 亿资金被盗事件的最新调查结果将以太坊…