rk3588 mipi屏幕初始化参数下发失败

项目:

 2023年11月。客户有个板子更换mipi屏幕,之前已经调试好了,可以正常显示。后面发现屏幕有点暗,需要改动初始化参数。为啥之前不用写也可以做正常显示:因为出厂时候屏幕厂商已经写好一次。但是有一个问题,只能写一次,后面不能再写。所以现在需要初始化屏幕时候,写入屏幕初始化参数。


问题描述

 屏幕初始化参数
在这里插入图片描述
  验证时候 屏幕是可以正常显示的。但是没有看到想要的变化,这组参数在别的板子(非rk)上是正常的。怀疑是没有正常写入。

原因分析:

  出现了问题 我先看看代码。我分析这个函数static int panel_simple_prepare(struct drm_panel *panel) 因为这个函数是下发屏幕初始化参数开始。

查看代码

ssize_t mipi_dsi_dcs_write_buffer(struct mipi_dsi_device *dsi,
				  const void *data, size_t len)
{
	struct mipi_dsi_msg msg = {
		.channel = dsi->channel,
		.tx_buf = data,
		.tx_len = len
	};

	switch (len) {
	case 0:
		return -EINVAL;

	case 1:
		msg.type = MIPI_DSI_DCS_SHORT_WRITE;
		break;

	case 2:
		msg.type = MIPI_DSI_DCS_SHORT_WRITE_PARAM;
		break;

	default:
		msg.type = MIPI_DSI_DCS_LONG_WRITE;
		break;
	}

	return mipi_dsi_device_transfer(dsi, &msg);
}

加入debug打印 mipi_dsi_device_transfer函数是有执行写入。但是就是不能看到变化。

上电时序分析

启动时序问题 供电脚、enable脚、reset脚 电位是否正常,是否满足datasheet上的时序要求?

	gpiod_direction_output(p->reset_gpio, 0);

	if (p->desc->delay.reset)
		msleep(p->desc->delay.reset);

	gpiod_direction_output(p->reset_gpio, 1);

用万用表量reset引脚也可以看到正常变化,供电也有。

继续看到代码 发现一处地方我是没有进行msleep(p->desc->delay.init)

if (p->desc->delay.init)
		msleep(p->desc->delay.init);

复位完成后,马上写入参数,可能会造成写入不成功。

解决方案:

在dts文件里面加入init-delay-ms = <50>;
添加后的样子

dsi0_panel: panel@0 {
		status = "okay";
		compatible = "simple-panel-dsi";
		reg = <0>;
		backlight = <&backlight_mipi>;
		power-supply = <&vcc3v3_mipi_lcd>;
		reset-gpios =  <&gpio2 RK_PA1 GPIO_ACTIVE_HIGH>; 
		enable-gpios = <&gpio2 RK_PB0 GPIO_ACTIVE_HIGH>;
		reset-delay-ms = <100>;
		enable-delay-ms = <10>;
		init-delay-ms = <50>;
		prepare-delay-ms = <50>;
		unprepare-delay-ms = <10>;
		disable-delay-ms = <60>;
		dsi,flags = <(MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST |
			MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_EOT_PACKET)>;
		dsi,format = <MIPI_DSI_FMT_RGB888>;
		dsi,lanes  = <4>;
		panel-init-sequence = 
		..............

也不知道是什么时候少了init-delay-ms 配置。添加后烧录,发现屏幕有明显变化了。说明写入成功。

### 关于RK3588芯片与MIPI屏幕连接时的调试波形分析工具方法 对于RK3588芯片与MIPI屏幕之间的连接,在进行调试尤其是针对信号质量方面的工作时,通常会涉及到对传输线路上物理层特性的检测。为了确保数据能够稳定无误地从处理器发送到显示,工程师们依赖特定类型的设备来捕获并解析这些高速串行接口上的电信号模式。 #### 使用逻辑分析仪捕捉MIPI D-PHY信号 一种常见的做法是利用逻辑分析仪配合探针适配器来获取MIPI DSI (Display Serial Interface) 或CSI (Camera Serial Interface) 的D-PHY差分线路中的活动情况[^4]。这类仪器可以记录下低电压摆幅下的快速变化脉冲序列,并通过软件界面直观展示出来供进一步研究。值得注意的是,由于MIPI协议采用了低压差分信令(LVDS),因此选择支持LVDS标准且具有足够采样率支持多通道同步采集功能的专业级产品尤为重要。 #### 应用专用测试夹具简化操作流程 除了上述提到的一般性测量手段外,市场上也存在专门为嵌入式视觉应用设计的解决方案——即所谓的“测试夹具”。它们往往集成了必要的硬件组件以及图形化的控制面板,使得即使是没有太多经验的技术人员也能轻松完成复杂的设置任务。例如,某些型号可能已经预设好了适用于不同品牌或规格显示器的最佳实践方案,从而大大缩短了前期准备时间并提高了工作效率[^1]。 #### 利用开源项目辅助开发过程 另外值得一提的是,在Linux社区内存在着多个致力于改善Rockchip SoC平台用户体验的努力成果。其中一些包含了用于监控调整显示子系统的实用程序,比如可以通过命令行查询当前状态或者强制刷新配置文件等功能。虽然这并非直接关联于实际电气特性层面的数据收集工作,但对于整体诊断思路的确立仍然有着积极意义[^5]。 ```bash cat /sys/kernel/debug/dri/0/summary ``` 此命令可以帮助确认系统是否正确识别到了外部连接的监视器及其基本属性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值