littlebot
Published on 2025-04-15 / 2 Visits
0

【源码】基于Raspberry Pi的SPI LCD显示屏驱动项目

项目简介

本项目开发了一个适用于Raspberry Pi A、B、2、3和Zero的SPI接口LCD显示屏驱动程序。该驱动主要面向使用ILI9341、ILI9486、HX8357D等控制器的显示屏,借助优化SPI通信和显示更新策略,达成了高达60fps的刷新率。

项目的主要特性和功能

  1. 自适应显示流更新:仅上传屏幕实际变化的像素,而非整帧,有效提升SPI总线利用率。
  2. 多种优化技术:直接与BCM2835 ARM外设控制器寄存器通信,混合使用轮询模式SPI和DMA传输,利用未公开的BCM2835特性。
  3. 交错更新:当SPI总线无法处理大量像素更新时,采用交错更新策略,分帧上传偶数和奇数扫描线,提高最大显示更新率。
  4. 多设备支持:已测试并支持Adafruit 2.8" 320x240 TFT、Waveshare 3.5" 320x480 IPS等多种显示屏。
  5. 启动配置:支持启动时自动启动驱动程序,可配置HDMI和TFT显示尺寸。

安装使用步骤

1. 下载并编译项目

假设用户已下载本项目的源码文件,编译和运行步骤如下: bash sudo apt-get install cmake cd fbcp-ili9341 mkdir build cd build cmake -DSPI_BUS_CLOCK_DIVISOR=6 -DADAFRUIT_ILI9341_PITFT=ON .. make -j sudo ./fbcp-ili9341

2. 配置启动选项

在CMake命令行中,可通过以下选项配置构建选项: - 显示控制器选择: - -DADAFRUIT_ILI9341_PITFT=ON:适用于Adafruit 2.8" 320x240 TFT显示屏。 - -DWAVESHARE35B_ILI9486=ON:适用于Waveshare 3.5" 480x320 ILI9486显示屏。其他选项参考项目文档。 - GPIO引脚配置: - -DGPIO_TFT_DATA_CONTROL=number:指定数据/控制(DC)线的GPIO引脚。 - -DGPIO_TFT_RESET_PIN=number:指定复位线的GPIO引脚。 - -DGPIO_TFT_BACKLIGHT=number:指定背光线GPIO引脚。 - SPI总线速度配置: - -DSPI_BUS_CLOCK_DIVISOR=even_number:设置SPI总线时钟分频器,控制SPI通信速度。

3. 启动驱动程序

为在启动时自动启动驱动程序,编辑/etc/rc.local文件,在末尾添加以下行: bash sudo /path/to/fbcp-ili9341/build/fbcp-ili9341 &

4. 配置HDMI和TFT显示尺寸

若HDMI输出与SPI显示尺寸不匹配,可通过以下配置使HDMI输出与SPI显示尺寸一致: bash hdmi_group=2 hdmi_mode=87 hdmi_cvt=320 240 60 1 0 0 0 hdmi_force_hotplug=1 根据实际的SPI显示分辨率调整320 240部分。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】