内核版本5.4
在使用spi总线接上了一个小网卡,实现了我们开发板对网络的访问之后,我还想接一个小的 spi屏幕 1.44寸款,来画一只小企鹅,顺便显示一些系统的调试信息。但是由于我这个开发板向外暴露出来的spi接口就两个,而且有一个已经因为串口的设置而不能使用。所以我们只能让这个小屏幕和enc28j60共用一个spi外设。
内核配置
直接make menuconfig,进入Device Drivers,打开SPI,打开ST7735R的驱动。保存,再make -j16.
接线与修改设备树
我打算让enc28j60使用spi自己的cs作为片选线,然后另外找一个GPIO作为spi屏幕的片选。
那这样的话又得改设备树。我们这个spi屏幕的驱动器芯片是"st7735s"。但是linux有st7735r,这俩
是兼容的,可以直接用。
/ {
model = "Lichee Pi Nano";
compatible = "licheepi,licheepi-nano", "allwinner,suniv-f1c100s";
aliases {
serial1 = &uart1;
};
chosen {
stdout-path = "serial1:115200n8";
/delete-node/ framebuffer@0;
};
reg_vcc3v3: vcc3v3 {
compatible = "regulator-fixed";
regulator-name = "vcc3v3";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
};
backlight: backlight {
compatible = "gpio-backlight";
gpios = <&pio 4 4 GPIO_ACTIVE_HIGH>;
default-on;
};
};
&spi1{
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&spi1_pins>;
cs-gpios = <0>,<&pio 4 5 GPIO_ACTIVE_LOW>;
enc28j60: ethernet@0 {
compatible = "microchip,enc28j60";
pinctrl-names = "default";
pinctrl-0 = <&enc28j60_pins>;
reg = <0x0>;
interrupt-parent = <&pio>;
interrupts = <4 11 IRQ_TYPE_EDGE_FALLING>;
spi-max-frequency = <12000000>;
};
display@1{
compatible = "okaya,rh128128t", "sitronix,st7735r";
reg = <0x1>;
status = "okay";
spi-max-frequency = <48000000>;
spi-cpol;
spi

本文讲述了作者如何在Linux内核5.4环境下配置SPI接口以连接小屏幕,并在设备树中修改引脚正负逻辑,解决背光驱动问题的过程,包括使用GPIO和调整内核配置以确保设备正常工作。
最低0.47元/天 解锁文章
3291





