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:15] lhaosen [2.1 内核配置] |
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 51: | Line 91: | ||
[*] User mode SPI device driver support | [*] User mode SPI device driver support | ||
- | ==== - dts配置 ==== | + | === - 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 | ||
- | spi0: spi@fe610000 { | ||
- | compatible = " | ||
- | reg = <0x0 0xfe610000 0x0 0x1000>; | ||
- | interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>; | ||
- | clocks = <& | ||
- | clock-names = " | ||
- | dmas = <& | ||
- | dma-names = " | ||
- | pinctrl-names = " | ||
- | pinctrl-0 = <& | ||
- | # | ||
- | # | ||
- | status = " | ||
- | }; |