我一直在为我的 Acqua “System On Module” 实现一个定制的 10.1 英寸 LCD 屏幕(运行SAMA5D36不幸的是,我使用 Microchip MPU 进行实验,但没有得到任何好的结果。
我面临的问题是,我的 Modetest 输出没有给出预期的输出。我期望的输出如下:
但我得到的却是:
与电路板配套提供的 LCD 屏幕是 5 英寸 LCD 屏幕,当我连接此 LCD 屏幕时,一切似乎都运行良好,模式测试看起来符合预期。但当我连接具有不同分辨率的 10.1 英寸 LCD 屏幕时,它不再工作。
我已做出改变以从 5 英寸过渡到 10.1 英寸 LCD(不同分辨率)
- 检查连接是否兼容
- 更改设备树中的时钟频率和显示时间以匹配新的显示。
我们通过构建适合 5 英寸显示屏的内核,然后编辑所有时序参数以适合 10.1 英寸显示屏,从而更改了频率和显示时序。我们编辑这些参数的部分如下:
panel-simple.c
static const struct drm_display_mode acme_50inch_mode = {
.clock = 33300,
.hdisplay = 800,
.hsync_start = 800 + 1,
.hsync_end = 800 + 1 + 64,
.htotal = 800 + 1 + 64 + 64,
.vdisplay = 480,
.vsync_start = 480 + 1,
.vsync_end = 480 + 1 + 23,
.vtotal = 480 + 1 + 23 + 22,
.vrefresh = 60,
.flags = DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC,
};
我感觉我的内核缺少了一些东西,或者我忽略了某个仍需要更改的参数。
有谁知道我缺少什么信息来驱动定制 LCD?
答案1
您的显示管道正在根据您在面板驱动程序中配置的高度宽度、左右和上/下边距生成数据。如果这些参数中的任何一个有误,您将永远无法在显示屏上获得正确的输出。您应该参考 10.1 英寸面板数据表并更新这些变量,即使有时您也需要调整这些变量以适应屏幕图像。