问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

STM32驱动ST7789TFT 1.69寸屏幕模块详解

创作时间:
作者:
@小白创作中心

STM32驱动ST7789TFT 1.69寸屏幕模块详解

引用
1
来源
1.
https://mthdm.cc/?p=206

本文详细介绍了如何使用STM32 HAL库驱动ST7789芯片的1.69寸TFT屏幕模块。文章从硬件连接、软件配置到代码实现,提供了完整的步骤和示例代码,适合有一定嵌入式开发基础的工程师参考。

1.硬件介绍

本文使用的是基于ST7789驱动芯片的1.69寸TFT屏幕,分辨率为240*280,采用SPI通信方式,并支持背光调节。

本文以自制模块为例,原理图及模块实物图如下,除了额外的两个按键外,其他接口定义与标准模块保持一致。


2.部署使用

硬件环境

  • 开发软件:STM32CubeMX + Keil v5
  • 硬件平台:STM32F103RET6(基于Boring TECH V3.9开发板)
  • LCD模块:自制的ST7789TFT 1.69寸屏幕模块

硬件连接

  • NSS > PB0
  • SCK > PA5
  • MOSI > PA7
  • BLK > PA1
  • RST > PC5
  • DC > PC4

第一部分:CubeMX配置

1.配置SPI

首先开启SPI接口,本文使用SPI1。由于LCD屏幕只需要接收SPI数据,因此将Mode设置为只发送主机模式。其他选项保持默认。

配置GPIO

需要配置的GPIO包括SPI的片选脚、LCD的复位端口和DC控制端口。将这些GPIO设置为推挽输出模式,并自定义用户标签:

  • PB0 > LCD_CS
  • PC4 > LCD_DC
  • PC5 > LCD_RES

配置定时器

使用TIM2 CH2作为PWM输出口来调节屏幕亮度。将TIM2的Channel2设置为PWM模式,PWM频率设置为100Hz。

第二部分:Keil代码配置

1.代码移植

lcd.c等5个文件移动到工程目录下(例如\user\module),并添加到工程中。在魔术棒C/C++中添加头文件路径。确保编译时没有错误。

2.1使用裸机(RTOS直接跳到下面的2.2)

main.c中进行初始化:

LCD_Init();  //LCD初始化
HAL_Delay(100);
HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_2); //启动背光PWM

调用使用:

LCD_Fill(0,0,LCD_W, LCD_H,WHITE);  //填充全屏白色
LCD_ShowPicture(0,100,204,132,gImage_xiaoba); //展示图片
LCD_ShowString(20, 60,(uint8_t *)"[Kazami_Dunmi]", BLUE, WHITE, 24, 0);  //显示文字

2.2使用FreeRTOS

main.c中进行初始化:

/* USER CODE BEGIN 2 */
LCD_Init();  //LCD初始化
HAL_Delay(100);
HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_2); //启动背光PWM
/* USER CODE END 2 */

freertos.c的任务函数中调用:

void LcdTask(void const * argument)
{
  /* USER CODE BEGIN LcdTask */
  LCD_Fill(0,0,LCD_W, LCD_H,WHITE);  //填充全屏白色
  LCD_ShowPicture(0,100,204,132,gImage_xiaoba); //展示图片
  LCD_ShowString(20, 60,(uint8_t *)"[Kazami_Dunmi]", BLUE, WHITE, 24, 0);  //显示文字
  for(;;)
  {
    osDelay(1);
  }
  /* USER CODE END LcdTask */
}

查看效果

编译下载程序后,如果看到小八的图案,说明驱动已经成功。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号