一、lcd驱动
1.1 ili9341介绍
- ILI9341是用于a-TFT液晶显示器的262144色单片SOC驱动器,分辨率为240RGBx320点,包括720通道源极驱动器、320通道栅极驱动器、172800字节图形GRAM、240RGBx320点的显示数据和电源电路。
- ILI9341支持并行8-/9-/16-/18位数据总线MCU接口、6-/16-/18位数据总线RGB接口和
- 3/4线串行外围接口(SPI)。可通过窗口在内部GRAM中指定运动图像区域
- 地址函数。可以有选择地更新指定的窗口区域,以便可以
- 独立于静止图像区域同时显示。
- ILI9341可在1.65V~3.3V I/O接口电压和内置电压跟随器电路下工作
- 产生用于驱动LCD的电压电平。ILI9341支持全彩色、8色显示模式和睡眠模式
- 通过软件实现的精确功率控制和这些特性使ILI9341成为中小型LCD驱动器的理想选择
- 尺寸便携式产品,如数字蜂窝电话、智能手机、MP3和PMP,电池寿命长
1.2 n32g457 spi驱动lcd
spi驱动lcd需要完成的工作如下:
- 初始化n32g的spi外设,包括时钟、gpio
- 配置spi为主模式,时钟使用36MHz。
- 使用n32g的固件库适配lcd驱动的spi接口,主要需要完成的适配是指令和数据发送的接口
void LCD_WR_REG(u8 data)
{
LCD_CS_CLR;
LCD_RS_CLR;
LCD_SendByte(data);
LCD_CS_SET;
}
uint8_t LCD_WR_DATA(u8 data)
{
uint8_t res = 0;
LCD_CS_CLR;
LCD_RS_SET;
res = LCD_SendByte(data);
LCD_CS_SET;
return res;
}
二、lvgl移植
2.1 lvgl介绍
LVGL是最流行的免费开源嵌入式图形库,可为任何MCU、MPU和显示器类型创建漂亮的UI。它得到了Arm、STM32、NXP、Espressif、Nuvoton、Arduino、RT Thread、Zephyr、NuttX、Adafruit等行业领先供应商和项目的支持。
它具有创建现代漂亮GUI的所有功能:30多个内置小部件、强大的样式系统、基于web的布局管理器和支持多种语言的排版系统。要将LVGL集成到您的平台中,您需要的是至少32kB RAM和128kB Flash、C编译器、帧缓冲区和至少1/10屏幕大小的渲染缓冲区。
SquareLine Studio是一款专业但价格合理的LVGL拖放UI编辑器。它也可以在Windows、Linux和MacOS上运行,您甚至可以在不注册网站的情况下试用它。
我们的团队随时准备为您提供图形设计、UI实现和咨询服务。如果您在开发下一个GUI项目期间需要一些支持,请联系我们。
2.2 lvgl移植
lvgl移植的主要工作如下:
- 下载lvgl源码
- 添加lvgl源码到keil工程,添加源码路径、头文件路径
- 适配lvgl刷新需要的disp_flush接口
static void disp_flush(lv_disp_drv_t * disp_drv, const lv_area_t * area, lv_color_t * color_p)
{
if(disp_flush_enabled) {
int32_t x;
int32_t y;
for(y = area->y1; y <= area->y2; y++) {
for(x = area->x1; x <= area->x2; x++) {
void LCD_DrawPoint_Color(uint16_t x,uint16_t y,uint16_t color);
LCD_DrawPoint_Color(x,y,color_p->full);
color_p++;
}
}
}
lv_disp_flush_ready(disp_drv);
}
三、测试