【stm32】stm32 hal中的屏幕初始化

​​​屏幕的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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值