spi触摸屏幕驱动(orangepi3b ili9341 ft6336u)
spi触摸屏幕驱动(orangepi3b ili9341 ft6336u)请结合香橙派官方手册接线,外设开启操作及编译部署内核
显示部分(ili9341)
设备树overlay
编写dtbs文件再编译成dtbo文件,放置在/boot/dtb/overlay文件夹(好像有两个文件夹,一个带了平台的后缀,我两个都添加),注意命名要与已有文件前缀相同,例如rk356x-…(例如rk356x-ili9341.dtbo)
/dts-v1/;
/plugin/;
/ {
compatible = "rockchip,rk3566-orangepi-3b", "rockchip,rk3566";
fragment@0 {
target = <&spi3>;
__overlay__ {
status = "okay";
cs-gpios = <&gpio4 6 0>;
pinctrl-names = "default";
pinctrl-0 = <&spi3m0_pins>;
#address-cells = <1>;
#size-cells = <0>;
ili9341: ili9341@0 {
compatible = "ilitek,ili9341";
reg = <0>;
spi-max-frequency = <32000000>;
spi-cpol;
spi-cpha;
rotate = <270>;
fps = <30>;
buswidth = <8>;
bgr;
dc-gpios = <&gpio4 1 0>;
reset-gpios = <&gpio4 4 1>;
led-gpios = <&gpio3 23 0>;
};
};
};
};
- 注意:
- 更据设备需要修改内核源码,编译内核移植。具体参考官方手册例如,香橙派有相关的工具及步骤。
- 此次屏幕显示出现反色问题,当设备出现问题时首先询问客服最高效,客服说明是21寄存器未写入导致ips视角出现问题,需要修改内核源码。
触摸部分(ft6336u)
参考链接 https://www.saisaiwa.com/archives/tspi-nas-tft
内核中已经有了focaltech touchscreen的驱动可以直接拿来使用可跟据香橙派官方手册编译内核部分查看是否开启focaltech touchscreen 默认似乎是开启的
同时打开i2c2的外设通道(针对本次实验)设备树overlay
/dts-v1/;
/plugin/;
/ {
compatible = "rockchip,rk3566-orangepi-3b", "rockchip,rk3566";
fragment@0 {
target = <&i2c2>;
__overlay__ {
status = "okay";
ft6336: touchscreen@38 {
compatible = "focaltech,fts";
reg = <0x38>;
interrupt-parent = <&gpio3>;
interrupts = <22 0x00000001>; //下降沿触发
focaltech,reset-gpio = <&gpio4 0 1>;
focaltech,irq-gpio = <&gpio3 22 0>;
focaltech,max-touch-number = <1>;
focaltech,display-coords = <0 0 320 240>;
status = "okay";
};
};
};
};
- 注意:
- 1 .默认是竖屏触摸,转换为横屏时需要修改内核源码(源码内容如下)
- 2 .使用evtest测试触摸
不同的屏幕设备树里的配置可能不同,这里只能提供大体步骤参考
接线
蓝色显示,橙色触摸
<&gpio4 0 1> —> GPIO4 A0 低电平
A, B, C, D… —> 0, 1, 2, 3…
A0 = 0 * 8 + 0 =0
B3 = B * 8 + 3 = 1 * 8 + 3 = 11
后期做了lvgl与ros结合的demo,由于小spi屏幕本来想用qt做的但是触摸的实现很棘手,所以直接使用lvgl移植到linux,可以实现通过ros控制lvgl切换gif动画表情用于交互也可以实现lvgl ui界面设置做ros相关的控制
详细教程及即开即用的ros功能包欢迎订阅专栏,保持更新探索ros与lvgl结合在spi小触摸屏幕应用更多玩法