This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] SN65DSI83-Q1:屏幕异常

Guru**** 2539060 points
Other Parts Discussed in Thread: SN65DSI83

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1253781/sn65dsi83-q1-screen-is-abnormal

器件型号:SN65DSI83-Q1
主题中讨论的其他器件:SN65DSI83

您好!
我们目前正在致力于将我们的系统与连接到 IMX8MM 芯片的 TI SN65DSI83 LVDS 芯片和 Orient Display LVDS 屏幕进行集成。 我们之所以能够保持警惕、是因为我们面临许多不稳定问题、导致屏幕上出现图形干扰。

我的系统的图形链可总结如下:

IMX8MM (mipi-DSI)<-->(mipi-DSI) TI-SN65DSI83 (LVDS)<-->(LVDS)东方显示 AFY1280800A1

在软件方面、我们使用自定义 Yocto 发行版、它使用 Linux 内核版本5.10.35和主线 SN65DSI83 Linux 驱动程序、我们在第一个初始提交发行版中从5.15内核向后移植。 我们还使用了 Orient Display 提供的面板定时:



主要问题是、当我们使用典型的面板计时值测试系统时、屏幕异常并发出很多干扰。 毛刺脉冲出现在由 Linux 生成的图像中、并随机出现在 LVDS 测试图案上:


目前、我们有一种权变措施、即使用定制面板时序值(典型值和最大值的组合)来提供稳定的屏幕、而根本没有干扰。 这些值是:

时钟频率= 78MHz
HSYNC 脉冲= 40
后沿= 48
前沿= 102
vsync-len = 20
垂直后沿= 3
垂直前沿= 10

但是、如前所述、这是一种权变措施、我们想使用 Orient Display 中的典型面板时序值。

以下是到目前为止我们所做的全部调查:

在 IMX8MM 上:

   已检查 MIPI-DSI 信号
   -->信号正常;频率正常,与 SN65DSI83寄存器配置的相同。

在 Linux 上:

   已检查 DTS
   -->反编译 DTB 表明我们正在使用我们在 DTSI 中设置的面板计时值,这些值是正确的值。
   -->驱动程序未报告错误,但显示以下警告:
   "不支持的 LVDS 总线格式0x100a、请检查输出桥接驱动器。 回到 SPWG24。"

无论我们处于工作状态还是不稳定状态、都会始终打印此警告。

   递增的驱动程序版本
   -->在最新版本上进行测试,在典型值下不影响稳定性

在 Orient Display (东方显示)屏幕上:

   已测试其他硬件上的面板时序
   --> Orient Display 已在测试台上对面板计时进行了重新测试,未出现任何问题。

在 SN65DSI83上:

   已检查初始化序列
   -->通过示波器,我们已确认 SN65DSI83驱动程序符合数据表中描述的初始化序列。

   已检查 IRQ 寄存器
   -->错误寄存器中没有报告错误(0xE5)

   将 I2C 寄存器配置与使用 DSI-TOOLS 软件生成的寄存器配置进行了比较
   --> I2C 寄存器按预期配置。

最后、LVDS 面板和 SN65DSI83在我们的 DTS 中定义如下:

	panel{
		status = "okay";
		compatible = "panel-lvds";
		width-mm = <217>;
		height-mm = <136>;
		data-mapping = "vesa-24";

		panel-timing {
			clock-frequency = <72400000>;
			hactive = <1280>;
			vactive = <800>;
			hsync-len = <40>;
			hback-porch = <48>;
			hfront-porch = <72>;
			vsync-len = <20>;
			vback-porch = <3>;
			vfront-porch = <15>;
		};
		port {
			panel_in: endpoint {
				remote-endpoint = <&sn65dsi83_out>;
			};
		};
	};
	
pinctrl_lvds: lvdsgrp {
	fsl,pins = <
		MX8MM_IOMUXC_SAI2_MCLK_GPIO4_IO26  0x15
	>;
};

&i2c3 {
	status = "okay";
	mipi_bridge: bridge@2c {
		compatible = "ti,sn65dsi83";
		reg = <0x2c>;
		status = "okay";
		enable-gpios = <&gpio4 26 GPIO_ACTIVE_HIGH>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_lvds>;
		ti,dsi-lanes = <4>;
		ti,lvds-format = <2>;
		ti,lvds-bpp = <24>;
		ti,width-mm = <217>;
		ti,height-mm = <136>;
		ports {
			port@0 {
				reg = <0>;

				sn65dsi83_in: endpoint {
					remote-endpoint = <&mipi_dsi_out>;
					data-lanes = <1 2 3 4>;
				};
			};

			port@2 {
				reg = <2>;

				sn65dsi83_out: endpoint {
					remote-endpoint = <&panel_in>;
				};
			};
		};
	};
};

我们乐于接受任何解决我们问题的建议。 我们的目标是使用典型的面板时序值而不会造成不稳定。

提前感谢您的回答。
祝您
P·L·G·德克尔尼松