1. 项目背景与硬件选型解析
在嵌入式开发领域,LCD显示模块的人机交互设计一直是核心难点之一。这次我选用STM32XX系列MCU驱动N096-1608TBBIG11-H13液晶屏(ST7735S驱动芯片),主要基于三个实际考量:首先,160x80分辨率在小型设备上足够显示关键参数;其次,ST7735S作为成熟驱动芯片,其SPI接口能有效节省IO资源;最后,STM32XX的硬件SPI控制器可以充分发挥显示性能。
这块1.69英寸的IPS屏有几个关键参数需要注意:
- 工作电压:3.3V(与STM32XX电平完美匹配)
- 通信接口:4线SPI(支持最高62.5MHz时钟)
- 显存格式:RGB565(16位色深)
- 功耗特性:典型值6mA(低功耗模式仅0.5μA)
硬件连接时特别注意:ST7735S的DC引脚(数据/命令选择)必须正确配置,这是新手最容易忽略的关键点。我曾因漏接这个引脚导致整屏乱码,调试了整整两天。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 驱动程序设计框架
2.1 底层硬件接口实现
SPI初始化是驱动的基础,以下是CubeMX配置要点:
c复制hspi1.Instance = SPI1;
hspi1.Init.Mode = SPI_MODE_MASTER;
hspi1.Init.Direction = SPI_DIRECTION_2LINES;
hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
hspi1.Init.CLKPolarity = SPI_POLARITY_LOW; // ST7735S特性
hspi1.Init.CLKPhase = SPI_PHASE_1EDGE;
hspi1.Init.NSS = SPI_NSS_SOFT;
hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_4; // 20MHz @80MHz主频
hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
GPIO配置需要特别注意复位时序:
c复制#define LCD_RST_PIN GPIO_PIN_0
#define LCD_DC_PIN GPIO_PIN_1
#define LCD_CS_PIN GPIO_PIN_2
