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/11/01 23:45] lhaosen [1.1 LCD接口] |
library:rk3568:lcddrv [2022/11/02 23:55] (current) lhaosen [2. Linux驱动设计(A)] |
||
---|---|---|---|
Line 34: | Line 34: | ||
==== - 控制接口 ==== | ==== - 控制接口 ==== | ||
- | ^ No ^ 信号 | + | ^ No ^ 信号 |
- | ^ 1 ^ / | + | ^ 1 | / |
- | ^ 2 ^ /CS | 185 | SPI0_CS0_M0 | + | ^ 2 | /CS | 185 | SPI0_CS0_M0 |
- | ^ 3 ^ SCK | 175 | SPI0_CLK_M0 | + | ^ 3 | SCK | 175 | SPI0_CLK_M0 |
- | ^ 4 ^ SDA | 159 | SPI0_MOSI_M0 | + | ^ 4 | SDA | 159 | SPI0_MOSI_M0 |
- | ^ 5 ^ CD | 173 | GPIO0_C1 | + | ^ 5 | CD | 173 | GPIO0_C1 |
- | ^ 6 ^ BL | 171 | GPIO0_C3 | + | ^ 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 | + | * rk3568-firefly-mplayer.dtsi |
- | == 使能spi0 == | + | 添加节点spi0 |
- | &spi0 { | + | < |
+ | &spi0 { | ||
status = " | status = " | ||
max-freq = < | max-freq = < | ||
- | | + | |
+ | pinctrl-1 = <& | ||
+ | spidev@0 { | ||
compatible = " | compatible = " | ||
- | reg = <0>; /* CS0 */ | + | reg = <0>; // CS0 |
spi-max-frequency = < | spi-max-frequency = < | ||
}; | }; | ||
- | | + | }; |
+ | </ | ||
+ | * pinctrl-0/1 重写覆盖了原定义,cs脚使用 spi0m0_cs1 代替 spi0m0_cs0 | ||
+ | * 停用冲突的管脚: | ||
+ | | ||
+ | ==== - Demo script ==== | ||
- | == disable uart8 == | ||
- | uart8于spi0管脚冲突,使uart8无效 | ||
- | &uart8 { | ||
- | status = " | ||
- | }; |