极速点亮 ST7789驱动开发:STM32硬件SPI显示方案指南

极速点亮 ST7789驱动开发:STM32硬件SPI显示方案指南

【免费下载链接】ST7789-STM32 using STM32's Hardware SPI to drive a ST7789 based IPS displayer 【免费下载链接】ST7789-STM32 项目地址: https://gitcode.com/gh_mirrors/st/ST7789-STM32

1. 核心优势解析

这款ST7789驱动库专为STM32平台设计,通过硬件SPI接口实现高效显示控制,为嵌入式开发者提供了开箱即用的显示解决方案。相比传统软件模拟SPI实现,本项目具有三大核心优势:

1.1 硬件加速的SPI通信

采用STM32硬件SPI外设(默认hspi1),数据传输速率比软件模拟提升5-10倍,特别适合高分辨率图像显示需求。通过DMA模式(默认启用)可进一步释放CPU资源,实现无阻塞数据传输。

1.2 多分辨率自适应

支持市面上主流的ST7789显示屏规格,包括:

  • 240×240像素(1.3英寸)
  • 135×240像素(0.96英寸)
  • 170×320像素(1.9英寸) 配合4种旋转模式(0°-270°),可灵活适配不同安装方向的显示需求。

1.3 丰富的图形绘制功能

内置完整的2D图形引擎,支持像素级操作到复杂图形绘制:

  • 基础图元:点、线、矩形、圆
  • 文本渲染:多种字体支持(通过fonts.h定义)
  • 图像显示:RGB565格式位图绘制
  • 高级形状:填充矩形、三角形、圆形

2. 快速上手指南

2.1 准备工作

在开始使用前,请确保您的开发环境满足以下条件:

  • STM32CubeMX或类似配置工具
  • HAL库支持(需包含SPI和GPIO驱动)
  • 已焊接好的ST7789显示屏模块(带SPI接口)

2.2 硬件连接说明

根据st7789.h中的默认配置,标准连接方式如下:

显示屏引脚STM32引脚功能说明
SCLSPI_SCK引脚时钟信号
SDASPI_MOSI引脚数据发送
DCST7789_DC_PIN数据/命令选择
RSTST7789_RST_PIN复位信号
CSST7789_CS_PIN片选信号(可选)
VCC3.3V电源输入
GNDGND接地

⚠️ 注意:具体引脚定义需根据您的PCB设计修改st7789.h中的端口宏定义。

2.3 初始化流程

完成硬件连接后,只需三步即可点亮显示屏:

  1. 添加文件到工程 将ST7789目录下的st7789.c和st7789.h添加到STM32工程中,并确保fonts.h也在包含路径内。

  2. 配置SPI外设 通过STM32CubeMX启用SPI外设(默认hspi1),配置为:

    • 全双工模式
    • 8位数据长度
    • 时钟极性(CPOL)= 0
    • 时钟相位(CPHA)= 0
    • 波特率分频根据显示屏规格调整(建议不超过18MHz)
  3. 调用初始化函数 在main.c中添加初始化代码:

    #include "st7789.h"
    
    int main(void) {
      HAL_Init();
      SystemClock_Config();
      MX_GPIO_Init();
      MX_SPI1_Init();
    
      ST7789_Init();          // 初始化显示屏
      ST7789_Fill_Color(WHITE); // 清屏为白色
    
      while (1) {
        // 应用代码
      }
    }
    

2.4 功能验证

初始化完成后,可调用内置测试函数验证显示功能:

ST7789_Test();  // 运行内置测试,显示基本图形和文本

成功运行后,屏幕将依次显示彩色填充区域、几何图形和测试文本,验证各绘图功能是否正常工作。

3. 深度定制技巧

3.1 分辨率与旋转配置

根据您使用的显示屏型号,在st7789.h中修改以下宏定义:

// 选择显示屏分辨率
#define USING_240X240    // 240×240像素
// #define USING_135X240  // 135×240像素
// #define USING_170X320  // 170×320像素

// 设置显示旋转角度
#define ST7789_ROTATION 2  // 2表示180°旋转(240×240默认值)

不同分辨率对应的偏移参数(X_SHIFT/Y_SHIFT)已在头文件中预设,用户无需手动计算。

3.2 性能优化选项

通过以下配置可平衡显示效果与系统资源占用:

DMA传输控制

默认启用DMA加速数据传输,如需禁用可注释此行:

// #define USE_DMA  // 注释此行禁用DMA模式
颜色模式选择

支持16位(RGB565)和18位(RGB666)两种颜色模式,默认使用16位模式:

#define ST7789_COLOR_MODE_16bit 0x55  // 默认16位色
// #define ST7789_COLOR_MODE_18bit 0x66 // 18位色模式

3.3 高级绘图示例

以下是几个常用绘图功能的使用示例:

绘制彩色文本
// 在(20,30)位置绘制红色文本,蓝色背景
ST7789_WriteString(20, 30, "Hello ST7789", Font_11x18, RED, BLUE);
绘制填充图形
// 绘制蓝色填充矩形
ST7789_DrawFilledRectangle(50, 50, 100, 80, BLUE);
// 绘制黄色填充圆形
ST7789_DrawFilledCircle(120, 120, 30, YELLOW);

DMA填充效果对比 图1: DMA模式下的快速区域填充效果(左为普通填充,右为DMA填充)

4. 常见问题解决

4.1 显示屏无响应

  • 检查SPI引脚连接是否正确,特别是SCK和MOSI信号线
  • 确认RST引脚复位时序是否正常(初始化时应有低电平脉冲)
  • 验证SPI时钟频率是否在显示屏支持范围内(通常最高20MHz)

4.2 显示错位或花屏

  • 检查分辨率配置是否与实际屏幕匹配
  • 调整ST7789_ROTATION参数,尝试不同旋转模式
  • 确认X_SHIFT和Y_SHIFT偏移值是否正确(不同分辨率有不同预设值)

4.3 文本显示乱码

  • 确保fonts.h文件已正确包含到工程中
  • 检查使用的字体是否在fonts.c中有定义实现
  • 尝试使用不同字号的字体(如Font_7x10、Font_16x26等)

4.4 DMA模式下数据错误

  • 确认DMA通道配置是否正确,是否与SPI外设匹配
  • 检查DMA缓冲区大小是否足够(特别是大图像传输时)
  • 尝试降低SPI时钟频率或禁用DMA模式排查问题

5. 功能扩展建议

5.1 自定义字体添加

如需使用项目外的字体,可按以下步骤扩展:

  1. 在fonts.h中定义新的FontDef结构体
  2. 在fonts.c中添加字体点阵数据
  3. 调用ST7789_WriteString时指定新字体

5.2 图像显示优化

对于较大的位图显示,建议:

  • 使用图像转换工具将图片转为RGB565格式数组
  • 通过DMA模式传输图像数据(启用USE_DMA宏)
  • 实现图像分块传输,避免占用过多RAM

直线绘制算法效果 图2: 内置直线绘制算法的不同线宽效果展示

通过本指南,您已掌握ST7789驱动库的核心使用方法和优化技巧。无论是开发智能手表、小型仪器面板还是便携式测试设备,这款驱动库都能为您提供高效可靠的显示解决方案。如需进一步扩展功能,可参考st7789.c中的函数实现,或在社区寻求支持。

【免费下载链接】ST7789-STM32 using STM32's Hardware SPI to drive a ST7789 based IPS displayer 【免费下载链接】ST7789-STM32 项目地址: https://gitcode.com/gh_mirrors/st/ST7789-STM32

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值