蜂鸟板官方适配的屏幕是正点原子的屏幕,我看了下价格,《【1024*600:RGB屏】正点原子7寸LCD模块电容触摸液晶彩色 IPS》
价格是280元,
我嫌贵(正点原子又名“挣点元子”),于是我在淘宝上找了个一样规模的兼容屏,是慧勤智远的WKS70WSV083-WCT
,价格才160元。
但是,虽说是兼容屏,其实只是线序兼容,用的芯片不太一样,并不能啥代码都不用改就直接用。
一开始我对Linux嵌入式的东西也不太熟悉,就搁置了,吃灰了一段时间。
最近几天又闲得无聊,摸索着调整设备树,终于将屏幕显示和触屏都调整了,也学到了不少东西。
心路历程
我本来是看了点视频学过设备树的,朦朦胧胧的,但并没有坚持下去,现在让AI当我的老师,自己摸索,理解了很多。
本来按蜂鸟板官方适配的设备树ls2k300_mini_dp.dts
,在dvo-connector@0
节点里使用4.3' LCD
这个分支,也是能显示的,不过只能显示到800x480
区域,缩屏了,
反而换成7' LCD
这个分支那啥都不显示。
我猜测,会不会他就是兼容的4.3' LCD
,只不是屏幕尺寸增大成7' LCD
(其实我更应该求助于文档)?抱着试一试的态度,
我将4.3' LCD
分支的hactive
和vactive
分别改成了1024
和600
,神奇般地居然生效了。
然后是触屏,使用的是i2c协议,引脚是i2c1,我昨天使用i2cdetect -y 1
测试,一直报错write error (-16)
,询问之下得知要更新内核,更新内核后这个问题解决了,
i2cdetect -y 1
检测出触屏芯片的ID是38
,也印证了我的想法,我昨天看文档就知道触屏芯片应该用的是focaltech的ft5x26,而不是正点原子屏用的goodix,但是我调整了很久的设备树,始终不见/dev/input/eventX
这样的设备出现,dmesg日志也看不到驱动相关信息,咨询Claude 3.7
,它说有可能少配置了内核选项CONFIG_TOUCHSCREEN_EDT_FT5X06
,配置上重新编译,触屏功能就完整了。
最终配置
CONFIG_TOUCHSCREEN_EDT_FT5X06=y
/ {
panel: dvo-connector@0 {
#address-cells = <1>;
#size-cells = <0>;
compatible = "panel-lvds", "auo,b101ean01";
backlight = <&lcd_backlight>;
width-mm = <223>;
height-mm = <125>;
label = "WKS70WSV083-1024x600";
data-mapping = "jeida-24";
panel-timing {
clock-frequency = <27000000>;
hactive = <1024>;
vactive = <600>;
hsync-len = <40>;
hfront-porch = <48>;
hback-porch = <40>;
vfront-porch = <13>;
vback-porch = <32>;
vsync-len = <1>;
de-active = <1>;
hsync-active = <0>;
vsync-active = <0>;
pixelclk-active = <0>;
};
port@0 {
reg = <0>;
#address-cells = <1>;
#size-cells = <0>;
dvo_connector_in: endpoint@0 {
reg = <0>;
remote-endpoint = <&dc_out_rgb0>;
};
};
};
&i2c1 {
status = "ok";
touchpad: touchscreen@38 {
compatible = "edt,edt-ft5406";
reg = <0x38>;
interrupt-parent = <&gpio>;
interrupts = <210 IRQ_TYPE_EDGE_FALLING>;
irq-gpios = <&gpio 82 GPIO_ACTIVE_LOW>;
touchscreen-size-x = <600>;
touchscreen-size-y = <1024>;
touchscreen-swapped-x-y;
status = "okay";
};
}
说些什么吧!