前言
买了一块2.4寸的spi lcd屏幕(ili9341)想在香橙派zero2上使用,香橙派的系统是debian bookworm linux6.1.31,去用户手册中查找驱动方法,发现只有linux 4.9下驱动屏幕的方案。
正文
首先连接屏幕,按如下方式接线:
VCC 1 号引脚 3.3V
GND 6 号引脚
CS 24 号引脚 SPI1 CS
RESET 7 号引脚 PC9 -- 73
D/C 11 号引脚 PC6 -- 70
SDI(MOSI) 19 号引脚 SPI1 MOSI
SCK 23 号引脚 SPI1 CLK
LED 13 号引脚 PC5 -- 69
经过查找,发现有ili9341的驱动模块,位于:/lib/modules/6.1.31-sun50iw9/kernel/drivers/staging/fbtft/fb_ili9341.ko
于是通过设备树overlay添加ili9341的设备节点,如下:
ili9341.dts
/dts-v1/;
/plugin/;
/ {
compatible = "xunlong,orangepi-zero2", "allwinner,sun50i-h616";
fragment@0 {
target = <&spi1>;
__overlay__ {
status = "okay";
cs-gpios = <&pio 7 9 0>; /* PH9 */
ili9341: ili9341@0 {
compatible = "ilitek,ili9341";
reg = <0>;
spi-max-frequency = <40000000>;
rotate = <90>;
bgr;
fps = <30>;
buswidth = <8>;
reset-gpios = <&pio 2 9 1>; /*RESET=PC9*/
dc-gpios = <&pio 2 6 0>; /*DC_RS=PC6*/
led-gpios = <&pio 2 5 0>; /*LED=PC5*/
debug = <0>;
};
};
};
};
执行:
sudo orangepi-add-overlay ili9341.dts
然后重启,成功点亮。
疑难杂症
1.dmesg出现以下报错:
pin PH9 already requested by 5011000.spi;
将ili9341.dts中的cs-gpio一行注释掉
2.fb0成功挂载,但是屏幕白屏
可以尝试更换cs的引脚,我把cs的引脚从PH9更换至PC7后可以正常点亮。
具体操作:
修改ili9341.dts,将 cs-gpios = <&pio 7 9 0>; 改为 cs-gpios = <&pio 2 7 0>;