====== LCD @ Core-3568J ======
===== - 硬件信息 =====
==== - LCD接口 ====
=== 模块参数 ===
分辨率:128x160 \\
驱动芯片:ST7735S \\
接口类型:SPI \\
背光电流:30mA \\
电压:3.3V \\
=== 模块接口 ===
^ pin ^ Name ^ Feature ^
^ 1 | NC | |
^ 2 | GND | |
^ 3 | LED- | |
^ 4 | LED+ | |
^ 5 | GND | |
^ 6 | /RESET | 复位,低有效 |
^ 7 | A0 | 指令/数据, L:指令,H:数据 |
^ 8 | SDA | |
^ 9 | SCK | |
^ 10 | VCC | 电源2.8~3.3v |
^ 11 | IOVCC | IO电压2.8~3.3v |
^ 12 | /CS | 片选,低有效 |
^ 13 | GND | |
^ 14 | NC | |
==== - 控制接口 ====
^ No ^ 信号 ^ pin@Core-3568J ^ pin@rk3568 ^ GPIO ^
^ 1 | /RESET | 169 | GPIO0_A6 | |
^ 2 | /CS | 185 | SPI0_CS0_M0 | GPIO0_C6 |
^ 3 | SCK | 175 | SPI0_CLK_M0 | GPIO0_B5 |
^ 4 | SDA | 159 | SPI0_MOSI_M0 | GPIO0_B6 |
^ 5 | CD | 173 | GPIO0_C1 | |
^ 6 | BL | 171 | GPIO0_C3 | |
===== - Linux驱动设计(A) =====
采用gpio-leds + spidev方式连接LCD模块,模块端口信号采用两种驱动:
* io: /Reset,BL,CD信号,使用gpio-leds驱动
* spi: /CS,SCK,SDA使用spidev驱动
==== - 控制IO ====
=== - dts ===
lcd_reset: reset {
label = "lcd:reset";
linux,default-trigger = "none";
default-state = "on";
gpios = <&gpio0 RK_PA6 GPIO_ACTIVE_HIGH>;
};
lcd_backlight: backlight {
label = "lcd:backlight";
linux,default-trigger = "none";
default-state = "on";
gpios = <&gpio0 RK_PC3 GPIO_ACTIVE_HIGH>;
};
lcd_data: data {
label = "lcd:data";
linux,default-trigger = "none";
default-state = "on";
gpios = <&gpio0 RK_PC1 GPIO_ACTIVE_HIGH>;
};
添加以上3个pin的gpio-leds节点,驱动成功后的访问入口为:
/sys/class/leds/lcd:reset
/sys/class/leds/lcd:backlight
/sys/class/leds/lcd:data
可以用命令测试这几个pin的状态:
# backlight = 1
echo 1 > /sys/class/leds/lcd:backlight
# backlight = 0
echo 1 > /sys/class/leds/lcd:backlight
==== - spidev配置 ====
修改DTS及添加驱动到内核
=== - 内核配置spidev ===
Device Drivers ‐‐‐>
[*] SPI support ‐‐‐>
<*> Rockchip SPI controller driver
[*] User mode SPI device driver support
=== - dts配置 ===
* rk3568-firefly-mplayer.dtsi
添加节点spi0
&spi0 {
status = "okay";
max-freq = <50000000>;
pinctrl-0 = <&spi0m0_cs0 &spi0m0_cs0 &spi0m0_pins>;
pinctrl-1 = <&spi0m0_cs0 &spi0m0_cs0 &spi0m0_pins_hs>;
spidev@0 {
compatible = "rockchip,spidev";
reg = <0>; // CS0
spi-max-frequency = <5000000>;
};
};
* pinctrl-0/1 重写覆盖了原定义,cs脚使用 spi0m0_cs1 代替 spi0m0_cs0
* 停用冲突的管脚: uart8,pwm7等
==== - Demo script ====