一、硬件
LC-PI-200S板载的NS2009的中断引脚有接到F1C200S的PE12。lichee nano板载的NS2009的中断引脚未接,驱动需要轮询处理,太麻烦了。
所以这里使用LC-PI-200S测试。
二、驱动
2.1 设备树
suniv-f1c100s.dtsi
pio: pinctrl@1c20800 {
......
i2c0_pd_pins: i2c0-pd-pins {
pins = "PD0", "PD12";
function = "i2c0";
};
};
i2c0: i2c@1c27000 {
compatible = "allwinner,sun6i-a31-i2c";
reg = <0x01c27000 0x400>;
interrupts = <7>;
clocks = <&ccu CLK_BUS_I2C0>;
resets = <&ccu RST_BUS_I2C0>;
pinctrl-names = "default";
pinctrl-0 = <&i2c0_pd_pins>;
status = "disabled";
#address-cells = <1>;
#size-cells = <0>;
};
suniv-f1c100s-licheepi-nano.dts
&i2c0 {
pinctrl-names = "default";
pinctrl-0 = <&i2c0_pd_pins>;
status = "okay";
rtp@48 {
compatible = "ti,tsc2007";
reg = <0x48>;
interrupt-parent = <&pio>;
interrupts = <4 12 IRQ_TYPE_EDGE_FALLING>;
gpios = <&pio 4 12 GPIO_ACTIVE_LOW>;
pendown-gpio = <&pio 4 12 GPIO_ACTIVE_LOW>;
ti,x-plate-ohms = <660>;
wakeup-source;
status = "okay";
};
};
重新编译设备树后替换
make dtbs
cp arch/arm/boot/dts/suniv-f1c100s-licheepi-nano.dtb /media/wang/BOOT
2.2 配置驱动
linux内核中make menuconfig
Device Drivers --->
Input device support --->
[*] Touchscreens --->
<*> TSC2007 based touchscreens
重新编译内核后替换
make
cp arch/arm/boot/zImage /media/wang/BOOT
2.3 配置tslib
buildroot目录下make menuconfig
Target packages --->
Libraries --->
Hardware handling --->
[*] tslib
重新编译文件系统后替换
make
sudo rm /media/wang/rootfs -rf
sudo tar -xvf /output/images/rootfs.tar /media/wang/rootfs -C
三、修改LCD屏幕驱动
重新上电后未达到预期,屏幕无内容显示了。检查触摸设备树是否产生冲突。最后在设备树文件中发现,引脚冲突。需要将LCD驱动改为RGB565格式,省出触摸使用的引脚。
3.1 修改设备树
3.2 修改内核屏幕信息
在内核目录/drivers/gpu/drm/panel/panel-simple.c中,填写屏幕时序信息如下
static const struct panel_desc lg_lb070wv8 = {
.modes = &lg_lb070wv8_mode,
.num_modes = 1,
.bpc = 16,
.size = {
.width = 151,
.height = 91,
},
// .bus_format = MEDIA_BUS_FMT_RGB888_1X7X4_SPWG,
.bus_format = MEDIA_BUS_FMT_RGB565_1X16,
};
3.3 编译
make
cp arch/arm/boot/dts/suniv-f1c100s-licheepi-nano.dtb /media/wang/BOOT
cp arch/arm/boot/zImage /media/wang/BOOT
四、配置tslib
重新启动设备,修改配置文件。sudo vi /etc/profile
export TSLIB_TSDEVICE=/dev/input/event0
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
source /etc/profile
五、测试
查看I2C0挂载的设备
i2cdetect -y 0
校准触摸屏
ts_calibrate
测试触摸屏
ts_print
ts_test
参考
https://wiki.sipeed.com/soft/Lichee/zh/Nano-Doc-Backup/build_sys/devicetree.html
https://blog.csdn.net/GJF712/article/details/126720236
https://blog.csdn.net/GJF712/article/details/126446054