【驱动】ILI9488_stm32F4_LVGL移植

一、屏幕驱动

1、工程配置(STM32CubeIDE)

2、添加驱动程序(lcd.c  lcd.h)

初始化代码

void LCD_Init(void)
{
	//ILI9488
	HAL_GPIO_WritePin(LCD_BL_GPIO_Port, LCD_BL_Pin, GPIO_PIN_SET);
	HAL_Delay(120);
	HAL_GPIO_WritePin(LCD_RES_GPIO_Port, LCD_RES_Pin, GPIO_PIN_SET);
	HAL_Delay(20);
	HAL_GPIO_WritePin(LCD_RES_GPIO_Port, LCD_RES_Pin, GPIO_PIN_RESET);
	HAL_Delay(20);
	HAL_GPIO_WritePin(LCD_RES_GPIO_Port, LCD_RES_Pin, GPIO_PIN_SET);
	HAL_Delay(120);

   HAL_Delay(50); // delay 50 ms
   LCD_WR_REG(0XFF);
   LCD_WR_REG(0XF7);
   LCD_WR_DATA(0xA9);
   LCD_WR_DATA(0x51);
   LCD_WR_DATA(0x2C);
   LCD_WR_DATA(0x82);

   LCD_WR_REG(0xC0);
   LCD_WR_DATA(0x11);
   LCD_WR_DATA(0x09);

   LCD_WR_REG(0xC1);
   LCD_WR_DATA(0x41);

   LCD_WR_REG(0XC5);
   LCD_WR_DATA(0x00);
   LCD_WR_DATA(0x0A);
   LCD_WR_DATA(0x80);

   LCD_WR_REG(0xB1);
   LCD_WR_DATA(0xB0);
   LCD_WR_DATA(0x11);

   LCD_WR_REG(0xB4);
   LCD_WR_DATA(0x02);

   LCD_WR_REG(0xB6);
   LCD_WR_DATA(0x02);
   LCD_WR_DATA(0x22);

   LCD_WR_REG(0xB7);
   LCD_WR_DATA(0xc6);

   LCD_WR_REG(0xBE);
   LCD_WR_DATA(0x00);
   LCD_WR_DATA(0x04);

   LCD_WR_REG(0xE9);
   LCD_WR_DATA(0x00);

   LCD_WR_REG(0x36);//36寄存器
   LCD_WR_DATA(0x60);
   //LCD_WR_DATA(0x08);

   LCD_WR_REG(0x3A);
   LCD_WR_DATA(0x55);

   LCD_WR_REG(0xE0);
   LCD_WR_DATA(0x00);
   LCD_WR_DATA(0x07);
   LCD_WR_DATA(0x10);
   LCD_WR_DATA(0x09);
   LCD_WR_DATA(0x17);
   LCD_WR_DATA(0x0B);
   LCD_WR_DATA(0x41);
   LCD_WR_DATA(0x89);
   LCD_WR_DATA(0x4B);
   LCD_WR_DATA(0x0A);
   LCD_WR_DATA(0x0C);
   LCD_WR_DATA(0x0E);
   LCD_WR_DATA(0x18);
   LCD_WR_DATA(0x1B);
   LCD_WR_DATA(0x0F);

   LCD_WR_REG(0XE1);
   LCD_WR_DATA(0x00);
   LCD_WR_DATA(0x17);
   LCD_WR_DATA(0x1A);
   LCD_WR_DATA(0x04);
   LCD_WR_DATA(0x0E);
   LCD_WR_DATA(0x06);
   LCD_WR_DATA(0x2F);
   LCD_WR_DATA(0x45);
   LCD_WR_DATA(0x43);
   LCD_WR_DATA(0x02);
   LCD_WR_DATA(0x0A);
   LCD_WR_DATA(0x09);
   LCD_WR_DATA(0x32);
   LCD_WR_DATA(0x36);
   LCD_WR_DATA(0x0F);

   LCD_WR_REG(0x11);
   HAL_Delay(120);
   LCD_WR_REG(0x29);
}

 若屏幕显示不完全可以查看是否为刷屏方向的问题。

lcd.h文件

注意寄存器地址

#define Lcd_Cmd_Reg *((__IO uint16_t *)((uint32_t)0x60000000)) 

#define Lcd_Data_Reg *((__IO uint16_t *)((uint32_t)0x60020000)) 

#ifndef __LCD_H
#define __LCD_H
#include "sys.h"
#include "stdlib.h"

//#define LV_HOR_RES_MAX	480
//#define LV_VER_RES_MAX  320
#define Lcd_Cmd_Reg  *((__IO uint16_t *)((uint32_t)0x60000000)) 
#define Lcd_Data_Reg *((__IO uint16_t *)((uint32_t)0x60020000)) 
void LCD_Init(void);
void LCD_FillRect(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint16_t *color);
void LCD_SetWindows(u16 xStar, u16 yStar, u16 xEnd, u16 yEnd);
#endif

若刷新速度慢注意要修改时钟频率(跟板子上的晶振相匹配)

 

3、在主函数中添加头文件和文件路径

若编译时出现找不到头文件的错误,可能是工程没有配置源文件路径(具体操作如下)

二、LVGL移植

1、在lvgl的工程路径下复制   

                                              lvgl_src

                                              lvgl->examples->porting

                                              custom

                                              generated

2、到IDE创建的工程目录下,添加路径

3、去掉lvgl->examples->porting中的文件名后半部分

(eg:lv_port_disp_template.c------------------->>>>>>>>>>>>>>>>>>lv_port_disp.c)

并将其文件夹下所有文件开头部分的if 0 改为if 1

4、在lv_conf.h中配置显示屏的参数

5、在显示的.c文件(lv_port_disp.c)中添加lcd的头文件;并在main.c文件中添加初始化

6、while循环中调用lv_task_handler();                     

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值