屏幕的8080接口和RGB接口 (icode9.com)
基于STM32F429的RGB屏使用_hducollins的博客-CSDN博客
STM32CubeMx开发之路—LTDC驱动STM32F429I-Discover上的显示屏_iot小胡的博客-CSDN博客
板子:stm32F429I-Discovery
在想这个屏幕具体怎么初始化的。
主要是函数void ili9341_Init(void)的底层硬件引脚初始化。
屏幕连接原理图:
硬件引脚:
1.串行数据,单片机SPI5 (时钟DCX_SCL, 输入SDA) //SDA接单片机SPI_MOSI
2.几个控制引脚 (片选CSX, 写控制WRX, 读控制RDX)
3.RGB引脚
4.背光引脚
5.电源地
屏幕初始化的流程 :
1.写寄存器,初始化代码
//函数嵌套太多就畏惧,写成树一看就心中有数了
void ili9341_Init(void)
{
/* Initialize ILI9341 low level bus layer ----------------------------------*/
LCD_IO_Init();
|
|---- 1. 初始化几个控制引脚GPIO
|
|---- 2. 初始化SPI, MOSI和SCK
//Configure LCD
ili9341_WriteReg(0xCA);
|
|----- 1.LCD_WRX_LOW();
| |
| |------ HAL_GPIO_WritePin(LCD_WRX_GPIO_PORT, LCD_WRX_PIN, GPIO_PIN_RESET)
|
|----- 2.LCD_CS_LOW();
|
|----- 3.SPIx_Write(Reg);
| |
| |-------- HAL_SPI_Transmit(&SpiHandle, (uint8_t*) &Value, 1, SpixTimeout);
|
|----- 4.LCD_CS_HIGH();
//忽略大段厂商初始化代码
//忽略大段厂商初始化代码
//忽略大段厂商初始化代码
ili9341_WriteData(0x0F);
ili9341_WriteReg(LCD_SLEEP_OUT); //0x11
LCD_Delay(200);
ili9341_WriteReg(LCD_DISPLAY_ON); //0x29
/* GRAM start writing */
ili9341_WriteReg(LCD_GRAM);
}
2.显示图片
RGB的引脚在HAL_LTDC_MspInit中初始化。
图片的显示通过初始化LTDC_HandleTypeDef LtdcHandle以及LTDC_LayerCfgTypeDef pLayerCfg的成员。
1.HAL_LTDC_Init(&LtdcHandle) //配置LTDC
2.HAL_LTDC_ConfigLayer(&LtdcHandle, &pLayerCfg, 0) //配置背景Layer
3.HAL_LTDC_ConfigLayer(&LtdcHandle, &pLayerCfg1, 1) //配置前景Layer