嵌入式Linux SPI屏驱动移植实战:从零点亮ST7735/GC9306
1. 项目背景与硬件准备
在嵌入式开发中,LCD显示屏作为人机交互的重要组件,其驱动移植是开发者常遇到的挑战。Luckfox Pico作为一款性价比较高的嵌入式开发板,原生SDK可能未包含特定LCD型号的驱动支持,这就需要开发者手动完成驱动移植工作。
本次实战将针对ST7735和GC9306这两款常见的SPI接口LCD屏,详细介绍从硬件连接到软件配置的全过程。这两种屏幕虽然控制芯片不同,但驱动框架相似,都采用fbtft作为基础驱动框架。
硬件准备清单:
- Luckfox Pico开发板
- ST7735或GC9306 SPI LCD屏幕
- 杜邦线若干
- 逻辑分析仪(可选,用于调试)
引脚连接参考:
| 屏幕引脚 | Luckfox Pico引脚 | 功能说明 |
|---|---|---|
| VCC | 3.3V | 电源正极 |
| GND | GND | 电源地 |
| SCL | SPI0_CLK (GPIO1_C1) | 时钟线 |
| SDA | SPI0_MOSI (GPIO1_C2) | 数据线 |
| RES | GPIO1_D1 | 复位信号 |
| DC | GPIO1_D0 | 数据/命令选择 |
| CS | GPIO1_C3 | 片选信号 |
| BLK | GPIO0_A4 | 背光控制 |
2. 设备树(DTS)配置详解
设备树是Linux内核识别硬件的重要配置方式,对于SPI设备尤其关键。我们需要在Luckfox Pico的设备树文件中添加LCD屏幕的相关配置。
2.1 引脚复用配置
首先需要确认SPI0接口的引脚没有被其他功能占用。在 rv1103g-luckfox-pico.dts 文件中,找到 &pinctrl 节点,添加或修改以下内容:
&pinctrl {
/* LCD控制引脚配置 */
gpio1-pc3 { /* CS */
gpio1_pc3: gpio1-pc3 {
rockchip,pins = <1 RK_PC3 RK_FUNC_GPIO &pcfg_pull_none>;
};
};
gpio0-pa4 { /* 背光控制 */
gpio0_pa4: gpio0-pa4 {
rockchip,pins = <0 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>;
};
};
gpio1-pd0 { /* DC */
gpio1_pd0: gpio1-pd0 {
rockchip,pins = <1 RK_PD0 RK_FUNC_GPIO &pcfg_pull_none>;
};
};
gpio1-pd1 { /* 复位 */
gpio1_pd1: gpio1-pd1 {
rockchip,pins = <1 RK_PD1 RK_FUNC_GPIO &pcfg_pull_none>;
};
};
/* SPI0引脚配置 */
spi0 {
spi0m0_p

&spm=1001.2101.3001.5002&articleId=102347838&d=1&t=3&u=f6b213f5902e4a8792119a3419f1d38d)
7319

被折叠的 条评论
为什么被折叠?



