====== 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 ====