目录
前言
线序整理
软件
显示调试
触摸调试
背光调试
前言
由于手头有一块4.3寸的RGB屏幕(触摸IC为GT1151),正好开发板上也有40Pin的RGB接口,就想着给移植一下,前期准备工作主要是整理好线序,然后用转接板与杜邦线连接验证好后期再画转接板也是可以的。SDK使用的tina5.0。
线序整理
由于开发平台只支持RGB666(低位屏蔽),而RGB屏幕支持RGB888,所以特别注意在接R\G\B线序的时候,要从RGB屏幕的R2\B2\B2开始接起,也就说,屏幕的R2要接开发平台的R0,以此类推最后是屏幕的R7接开放平台的R5。其他接口对着接就行了,同时还要注意线序中, LD23-LD0,高位为R通道,低位为G通道,接反可能导致颜色显示有问题。
这里直接给出整理好的线序以及说明,也可以去看官方的说明手册。
RGB屏幕:
序号 | 定义 | 描述 |
1 | 5V | |
2 | 5V | |
3 | R0 | NC |
4 | R1 | NC |
5 | R2 | |
6 | R3 | |
7 | R4 | |
8 | R5 | |
9 | R6 | |
10 | R7 | |
11 | GND | |
12 | G0 | NC |
13 | G1 | NC |
14 | G2 | |
15 | G3 | |
16 | G4 | |
17 | G5 | |
18 | G6 | |
19 | G7 | |
20 | GND | |
21 | B0 | NC |
22 | B1 | NC |
23 | B2 | |
24 | B3 | |
25 | B4 | |
26 | B5 | |
27 | B6 | |
28 | B7 | |
29 | GND | |
30 | CLK | LCD时钟 |
31 | HSYNC | HSYNC |
32 | VSYNC | VSYNC |
33 | DE | 控制信号DE |
34 | BL | 背光 |
35 | CS | 电容触摸屏复位信号 |
36 | SDA | 电容触摸屏 IIC 通讯 SDA 信号 |
37 | NC | NC |
38 | SCL | 电容触摸屏 IIC 通讯 SCL 信号 |
39 | PEN | 电容触摸屏中断信号 |
40 | RESET | NC |
开发平台:
序号 | 定义 | 描述 |
1 | 5V | |
2 | 5V | |
3 | NC | |
4 | NC | |
5 | B0 | |
6 | B1 | |
7 | B2 | |
8 | B3 | |
9 | B4 | |
10 | B5 | |
11 | GND | |
12 | NC | |
13 | NC | |
14 | G0 | |
15 | G1 | |
16 | G2 | |
17 | G3 | |
18 | G4 | |
19 | G5 | |
20 | GND | |
21 | NC | |
22 | NC | |
23 | R0 | |
24 | R1 | |
25 | R2 | |
26 | R3 | |
27 | R4 | |
28 | R5 | |
29 | GND | |
30 | BL-PWD | 背光 |
31 | CTP-SDA | SDA |
32 | CTP-SCK | SCK |
33 | DE | 控制信号DE |
34 | LCD0-VSYNC | VSYNC |
35 | LCD0-HSYNC | HSYNC |
36 | LCD0-CLK | LCD时钟 |
37 | NC | NC |
38 | NC | NC |
39 | CTP-INT | 电容触摸中断 |
40 | CTP-RST | 电容触摸复位 |
软件
显示调试
1、修改内核设备树:<SDK>/kernel/linux-5.4/arch/arm/boot/dts/board.dts,修改lcd0节点各项参数,这里需要去查询所要移植屏幕的参数,但是只需要修改lcd0节点的以下部分即可:
/*part 3*/
lcd_dclk_freq = <31>; // lcd_ht * lcd_vt * fps(60),单位MHz
lcd_ht = <976>; // 对应屏厂Width + HSW + HBP + HFP
lcd_hbp = <88>; //对应屏厂HBP
lcd_hspw = <48>; // 对应屏厂HSW
lcd_vbp = <32>; // 对应屏厂VBP
lcd_vt = <528>; // 对应屏厂Height + VSW + VBP + VFP
lcd_vspw = <3>; // 对应屏厂VSW
通过屏幕官方手册等手册最终修改版如下:
&lcd0 {
lcd_used = <1>;
lcd_driver_name = "default_lcd";
lcd_backlight = <50>;
lcd_if = <0>;
/*part 1*/
lcd_x = <800>;
lcd_y = <480>;
lcd_width = <154>;
lcd_height = <86>;
/*part 2*/
lcd_pwm_used = <0>;
lcd_pwm_ch = <7>;
lcd_pwm_freq = <50000>;
lcd_pwm_pol = <0>;
lcd_pwm_max_limit = <255>;
/*part 3*/
lcd_dclk_freq = <31>; // lcd_ht * lcd_vt * fps(60),单位MHz
lcd_ht = <976>; // 对应屏厂Width + HSW + HBP + HFP
lcd_hbp = <88>; //对应屏厂HBP
lcd_hspw = <48>; // 对应屏厂HSW
lcd_vbp = <32>; // 对应屏厂VBP
lcd_vt = <528>; // 对应屏厂Height + VSW + VBP + VFP
lcd_vspw = <3>; // 对应屏厂VSW
lcd_lvds_if = <0>;
lcd_lvds_colordepth = <1>;
lcd_lvds_mode = <0>;
lcd_frm = <1>;
lcd_io_phase = <0x0000>;
lcd_gamma_en = <0>;
lcd_bright_curve_en = <0>;
lcd_cmap_en = <0>;
deu_mode = <0>;
lcdgamma4iep = <22>;
smart_color = <90>;
pinctrl-0 = <&rgb18_pins_a>;
pinctrl-1 = <&rgb18_pins_b>;
};
2、修改uboot设备树:<SDK>/brandy/brandy-2.0/u-boot-2018/arch/arm/dts/board-uboot.dts
同样找到lcd0节点,将内核设备树修改的节点参数都复制过去。
3、保存编译后烧录镜像,然后进行测试验证屏幕显示是否可行
4、花屏测试
cat /dev/urandom > /dev/fb0
5、颜色测试
cat /dev/zero > /dev/fb0
echo 8 > /sys/class/disp/disp/attr/colorbar
6、移植显示成功。
触摸调试
1、触摸采用I2C接口,通过查看开发板原理图可知屏幕接口的i2c引脚为PE0、PE1,修改内核设备树:
2、修改内核设备树twi1节点:
&twi1 {
clock-frequency = <400000>;
pinctrl-0 = <&twi1_pins_a>;
pinctrl-1 = <&twi1_pins_b>;
pinctrl-names = "default", "sleep";
status = "okay";
ctp@14 {
compatible = "allwinner,goodix";
device_type = "ctp";
reg = <0x14>;
status = "okay";
ctp_name = "gt9xxnew_ts";
ctp_twi_id = <0x2>;
ctp_twi_addr = <0x14>;
ctp_screen_max_x = <0x320>;
ctp_screen_max_y = <0x1e0>;
ctp_revert_x_flag = <0x0>;
ctp_revert_y_flag = <0x0>;
ctp_exchange_x_y_flag = <0x0>;
ctp_int_port = <&pio PE 11 GPIO_ACTIVE_HIGH>;
ctp_wakeup = <&gpio_ext 0 GPIO_ACTIVE_HIGH>;
/*ctp-supply = <®_aldo2>;*/
/*ctp_power_ldo = <®_aldo2>;*/
/*ctp_power_ldo_vol = <3300>;*/
};
};
3、由于官方的触摸驱动goodix已经默认支持GT1151触摸IC,记得开启内核配置:
所以我们不用重新写驱动,如果官方的不行,可以参考以下文章:
参考文章1
参考文章2
4、触摸测试
1)查看触摸节点
cat /proc/bus/input/devices
2) 查看原始触摸数据(可以通过此测试最最简单判断触摸是否可行)
cat /proc/bus/input/devices
3)使用tslib触摸库进行测试,先初始化
fbinit 0 //初始化屏幕
export TSLIB_TSDEVICE=/dev/input/event1 #这⾥的eventX填写⾃⼰实际的
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=/etc/ts.conf
export TSLIB_PLUGINDIR=/usr/lib/ts
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
4)ts_calibrate触摸校准,依次点击四个⻆落进⾏校准:
ts_calibrate
5)ts_test触摸测试
ts_test
点击“Drag”,开始拖拽测试: 在触摸屏上滑动,屏幕上的⼗字光标会跟随移动。
点击“Draw”,开始描绘测试: 在触摸屏上滑动,屏幕上会有对应线条出现。
测试完成点击“Quit”退出测试。
背光调试
1、内核配置开启PWM
> Device Drivers
> Pulse-Width Modulation (PWM) Support
<*> Allwinner PWM support
2、开启背光驱动
> Device Drivers
> Graphics support
> Backlight & LCD device support
<*> Lowlevel Backlight controls
<*> Generic (aka Sharp Corgi) Backlight Driver
<*> Generic PWM based Backlight Driver
3、修改内核设备树:<SDK>/kernel/linux-5.4/arch/arm/boot/dts/sun8iw20p1.dtsi
backlight: backlight {
compatible = "pwm-backlight";
pwms = <&pwm 7 500000 0>;
pwm-names = "backlight";
brightness-levels = <
0 1 2 3 4 5 6 7
8 9 10 11 12 13 14 15
16 17 18 19 20 21 22 23
24 25 26 27 28 29 30 31
32 33 34 35 36 37 38 39
40 41 42 43 44 45 46 47
48 49 50 51 52 53 54 55
56 57 58 59 60 61 62 63
64 65 66 67 68 69 70 71
72 73 74 75 76 77 78 79
80 81 82 83 84 85 86 87
88 89 90 91 92 93 94 95
96 97 98 99 100 101 102 103
104 105 106 107 108 109 110 111
112 113 114 115 116 117 118 119
120 121 122 123 124 125 126 127
128 129 130 131 132 133 134 135
136 137 138 139 140 141 142 143
144 145 146 147 148 149 150 151
152 153 154 155 156 157 158 159
160 161 162 163 164 165 166 167
168 169 170 171 172 173 174 175
176 177 178 179 180 181 182 183
184 185 186 187 188 189 190 191
192 193 194 195 196 197 198 199
200 201 202 203 204 205 206 207
208 209 210 211 212 213 214 215
216 217 218 219 220 221 222 223
224 225 226 227 228 229 230 231
232 233 234 235 236 237 238 239
240 241 242 243 244 245 246 247
248 249 250 251 252 253 254 255
>;
default-brightness-level = <200>;
status = "okay";
};
1)查看背光
cat /sys/class/backlight/backlight/brightness
2)修改背光
echo 20 > /sys/class/backlight/backlight/brightness
3)再次修改
echo 200 > /sys/class/backlight/backlight/brightness
至此,移植成功。