This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
library:rk3568:lcddrv [2022/10/31 22:11] lhaosen [2. Linux驱动设计] |
library:rk3568:lcddrv [2022/11/02 23:55] (current) lhaosen [2. Linux驱动设计(A)] |
||
---|---|---|---|
Line 7: | Line 7: | ||
=== 模块参数 === | === 模块参数 === | ||
- | 分辨率:128x168 | + | 分辨率:128x160 |
驱动芯片:ST7735S \\ | 驱动芯片:ST7735S \\ | ||
接口类型:SPI \\ | 接口类型:SPI \\ | ||
Line 34: | Line 34: | ||
==== - 控制接口 ==== | ==== - 控制接口 ==== | ||
- | ^ No ^ 信号 | + | ^ No ^ 信号 |
- | ^ 1 | + | ^ 1 | / |
- | ^ 2 | + | ^ 2 | /CS |
- | ^ 3 | + | ^ 3 | SCK |
- | ^ 4 | + | ^ 4 | SDA |
- | ^ 5 | + | ^ 5 | CD | 173 | GPIO0_C1 |
- | ^ 6 | + | ^ 6 | BL | 171 | GPIO0_C3 |
- | ===== - Linux驱动设计 ===== | + | ===== - Linux驱动设计(A) |
+ | 采用gpio-leds + spidev方式连接LCD模块,模块端口信号采用两种驱动: | ||
+ | * io: / | ||
+ | * spi: / | ||
- | ==== - 内核配置 | + | ==== - 控制IO ==== |
+ | === - dts === | ||
+ | < | ||
+ | lcd_reset: | ||
+ | label = " | ||
+ | linux, | ||
+ | default-state = " | ||
+ | gpios = <& | ||
+ | }; | ||
+ | |||
+ | lcd_backlight: | ||
+ | label = " | ||
+ | linux, | ||
+ | default-state = " | ||
+ | gpios = <& | ||
+ | }; | ||
+ | |||
+ | lcd_data: data { | ||
+ | label = " | ||
+ | linux, | ||
+ | default-state = " | ||
+ | gpios = <& | ||
+ | }; | ||
+ | </ | ||
+ | 添加以上3个pin的gpio-leds节点,驱动成功后的访问入口为: | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | |||
+ | 可以用命令测试这几个pin的状态: | ||
+ | # backlight = 1 | ||
+ | echo 1 > / | ||
+ | # backlight = 0 | ||
+ | echo 1 > / | ||
+ | ==== - spidev配置 ==== | ||
+ | 修改DTS及添加驱动到内核 | ||
+ | |||
+ | === - 内核配置spidev | ||
Device Drivers ‐‐‐> | Device Drivers ‐‐‐> | ||
Line 50: | Line 90: | ||
< | < | ||
[*] User mode SPI device driver support | [*] User mode SPI device driver support | ||
+ | |||
+ | === - dts配置 === | ||
+ | |||
+ | * rk3568-firefly-mplayer.dtsi | ||
+ | |||
+ | 添加节点spi0 | ||
+ | < | ||
+ | &spi0 { | ||
+ | status = " | ||
+ | max-freq = < | ||
+ | pinctrl-0 = <& | ||
+ | pinctrl-1 = <& | ||
+ | spidev@0 { | ||
+ | compatible = " | ||
+ | reg = <0>; // CS0 | ||
+ | spi-max-frequency = < | ||
+ | }; | ||
+ | }; | ||
+ | </ | ||
+ | * pinctrl-0/1 重写覆盖了原定义,cs脚使用 spi0m0_cs1 代替 spi0m0_cs0 | ||
+ | * 停用冲突的管脚: | ||
+ | |||
+ | |||
+ | | ||
+ | ==== - Demo script ==== | ||