硬件连接
上图解释了STM32F407控制LCD方式
LCD_BL是LCD的背光控制引脚,用于控制液晶显示屏的背光亮度。
硬件电路使用的是野火霸天虎STM32F407
引脚定义
上图显示了STM32引脚与NT35510引脚的对应关系;这些信号线即 8080 通讯接口,带 X 的表示低电平有效,STM32 通过该接口与 NT35510 芯片进行通讯,实现对液晶屏的控制。通讯的内容主要包括命令和显存数据,显存数据即各个像素点的 RGB565 内容;命令是指对 NT35510 的控制指令,MCU 可通过 8080 接口发送命令编码控制NT35510 的工作方式,例如复位指令、设置光标指令、睡眠模式指令等等
时序图
因为是STM32控制LCD显示,所以STM32一直执行的是对NT35510 的写命令。
8080 接口写命令时序;由图可知,写命令时序由片选信号 CSX 拉低开始,对数据/命令选择信号线 D/CX 也置低电平表示写入的是命令地址 (可理解为命令编码,如软件复位命令:0x01),以写信号 WRX 为低,读信号 RDX 为高表示数据传输方向为写入,同时,在数据线 D[23:0](或 D[15:0]) 输出命令地址,在第二个传输阶段传送的是命令的参数,所以 D/CX 要置高电平,表示写入的是命令数据,命令数据是某些指令带有的参数,如复位指令编码为 0x01,它后面可以带一个参数,该参数表示多少秒后复位 (实际的复位命令不含参数,此处只是为了讲解指令编码与参数的区别)。
当需要把像素数据写入 GRAM 时,过程很类似,把片选信号 CSX 拉低后,再把数据/命令选择信号线 D/CX 置为高电平,这时由 D[23:0] 传输的数据则会被 NT35510 保存至它的 GRAM 中。
CubeMX配置
STM32F407CubeMX配置可以参考这篇博客: TFT_LCD液晶显示
- printf 重定向
#include <stdio.h>
int fputc(int ch, FILE *f)
{
HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xffff);
return ch;
}
int fgetc(FILE *f)
{
uint8_t ch = 0;
HAL_UART_Receive(&huart1, &ch, 1, 0xffff);
return ch;
}
STM32F103CubeMX配置可以参考这篇博客: TFT-LCD屏触摸