硬汉嵌入式论坛

 找回密码
 立即注册
楼主: eric2013
收起左侧

[LVGL] 基于V5,V6和V7的LVGL模板,驱动支持单缓冲,双缓冲和配合硬件消隐的双缓冲,以及电容和电阻触摸全支持(2023-07-19)

  [复制链接]

1

主题

23

回帖

26

积分

新手上路

积分
26
发表于 2023-12-22 09:56:32 | 显示全部楼层
eric2013 发表于 2023-12-22 08:59
刷跟我楼主位一样的demo也撕裂吗,这个也撕裂的话,不正常。

垂直消隐没处理好。

我试下刷新系统自带的DEMO
回复

使用道具 举报

10

主题

41

回帖

71

积分

初级会员

积分
71
发表于 2023-12-27 18:33:54 | 显示全部楼层
硬汉对比过ThreadX GUIX 与LVGL 在需求资源与运行效果上差别大不?
回复

使用道具 举报

10

主题

41

回帖

71

积分

初级会员

积分
71
发表于 2023-12-27 18:34:49 | 显示全部楼层
楼主对比过ThreadX GUIX与LVGL 在需求资源与运行效果上差别大不?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
 楼主| 发表于 2023-12-28 08:16:03 | 显示全部楼层
wqy1103 发表于 2023-12-27 18:34
楼主对比过ThreadX GUIX与LVGL 在需求资源与运行效果上差别大不?

资源需求还没有专门对比过。

运行效果的话,因人而异了。
回复

使用道具 举报

17

主题

42

回帖

93

积分

初级会员

积分
93
发表于 2024-1-2 10:52:00 | 显示全部楼层
“MDK RTE一键添加FreeRTOS + LwIP + LVGL这种组合玩法模板”,有基于freeRTOS的模板吗?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
 楼主| 发表于 2024-1-2 11:11:50 | 显示全部楼层
厉飞雨 发表于 2024-1-2 10:52
“MDK RTE一键添加FreeRTOS + LwIP + LVGL这种组合玩法模板”,有基于freeRTOS的模板吗?

不做了,大家自己添加就行,LVGL8不支持多任务,在RTOS上使用和裸机一样。
回复

使用道具 举报

1

主题

23

回帖

26

积分

新手上路

积分
26
发表于 2024-1-4 15:01:30 | 显示全部楼层
请问有解析dump的trace32软件吗?官网下载需要License Serial Number,我们没有这个
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
 楼主| 发表于 2024-1-4 15:03:51 | 显示全部楼层
Yue@123 发表于 2024-1-4 15:01
请问有解析dump的trace32软件吗?官网下载需要License Serial Number,我们没有这个

我也没有。
回复

使用道具 举报

12

主题

33

回帖

69

积分

初级会员

积分
69
发表于 2024-4-22 21:53:08 | 显示全部楼层
晚上好,楼主。
目前刚刚接触LVGL,8.3版本移植没问题+内存分配充足+RA8875驱动正常(SPI驱动,显示disp_flush()使用的是RA8875的区域块填充模式)。
目前开发板连个最基础的控件都显示不出来,右下角的FPS及使用率也显示不出来,整个一白屏!!LVGL背景的浅深模式能控制。
请指点一下问题反向!!
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
 楼主| 发表于 2024-4-23 08:19:36 | 显示全部楼层
ljd 发表于 2024-4-22 21:53
晚上好,楼主。
目前刚刚接触LVGL,8.3版本移植没问题+内存分配充足+RA8875驱动正常(SPI驱动,显示disp_fl ...

使用最简单的CreateOnebuffer  测试下。
回复

使用道具 举报

12

主题

33

回帖

69

积分

初级会员

积分
69
发表于 2024-4-23 11:10:59 | 显示全部楼层
eric2013 发表于 2024-4-23 08:19
使用最简单的CreateOnebuffer  测试下。

目前使用的就是ONE buffer!!没反应0.0
回复

使用道具 举报

12

主题

33

回帖

69

积分

初级会员

积分
69
发表于 2024-4-23 11:47:08 | 显示全部楼层
ljd 发表于 2024-4-23 11:10
目前使用的就是ONE buffer!!没反应0.0

[img]C:\Users\Administrator\Desktop\img\1.png[img]C:\Users\Administrator\Desktop\img\2.png[img]C:\Users\Administrator\Desktop\img\3.png[img]C:\Users\Administrator\Desktop\img\4.png[img]C:\Users\Administrator\Desktop\img\5.pngC:\Users\Administrator\Desktop\img\6.png[/img][/img][/img][/img][/img]
回复

使用道具 举报

12

主题

33

回帖

69

积分

初级会员

积分
69
发表于 2024-4-23 14:51:34 | 显示全部楼层
eric2013 发表于 2024-4-23 08:19
使用最简单的CreateOnebuffer  测试下。

[C] 纯文本查看 复制代码
	/* 设置起点坐标 */
	drv_ra8875_write_reg(0x91, _usX);
	drv_ra8875_write_reg(0x92, _usX >> 8);
	drv_ra8875_write_reg(0x93, _usY);
	drv_ra8875_write_reg(0x94, _usY >> 8);

	/* 设置终点坐标 */
	drv_ra8875_write_reg(0x95, _usX + _usWidth);
	drv_ra8875_write_reg(0x96, (_usX + _usWidth) >> 8);
	drv_ra8875_write_reg(0x97, _usY + _usHeight);
	drv_ra8875_write_reg(0x98, (_usY + _usHeight) >> 8);

	drv_ra8875_set_face_color(_usColor);	/* 设置颜色 */

	drv_ra8875_write_reg(0x90, (1 << 7) | (1 << 5) | (1 << 4) | (0 << 0));	/* 开始填充矩形  */						
	drv_ra8875_wait();   /* 等待结束 */


填充用的是RA8875的这块内容(SPI)
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
 楼主| 发表于 2024-4-23 15:24:12 | 显示全部楼层
ljd 发表于 2024-4-23 14:51
[mw_shl_code=c,true]        /* 设置起点坐标 */
        drv_ra8875_write_reg(0x91, _usX);
        drv_ra8875_write_reg ...

先不用8875的2D函数,仅仅是打点操作测试正常不。
回复

使用道具 举报

12

主题

33

回帖

69

积分

初级会员

积分
69
发表于 2024-4-23 16:31:16 | 显示全部楼层
eric2013 发表于 2024-4-23 15:24
先不用8875的2D函数,仅仅是打点操作测试正常不。

感谢提醒,切换到打点能正常显示了。
大佬但是疑惑,我内存分配挺充足的为啥显示是拉窗帘似的,一行行慢慢显示出来。FPS-200,CPU-100%了都!!!
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
 楼主| 发表于 2024-4-24 07:35:43 | 显示全部楼层
ljd 发表于 2024-4-23 16:31
感谢提醒,切换到打点能正常显示了。
大佬但是疑惑,我内存分配挺充足的为啥显示是拉窗帘似的,一行行慢 ...

剩下就要部分接口函数开启优化了,充分将RA8875的2D功能利用上。
回复

使用道具 举报

12

主题

33

回帖

69

积分

初级会员

积分
69
发表于 2024-4-24 11:58:34 | 显示全部楼层
eric2013 发表于 2024-4-24 07:35
剩下就要部分接口函数开启优化了,充分将RA8875的2D功能利用上。

大佬,奇了个怪,切换用BTE或者用2D去填充就是不显示!!!
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
 楼主| 发表于 2024-4-24 14:41:52 | 显示全部楼层
ljd 发表于 2024-4-24 11:58
大佬,奇了个怪,切换用BTE或者用2D去填充就是不显示!!!

那估计接口实现姿势不对,这个我之前用emWin上是没问题的,用于LVGL应该也没问题。
回复

使用道具 举报

12

主题

33

回帖

69

积分

初级会员

积分
69
发表于 2024-4-24 15:55:20 | 显示全部楼层
eric2013 发表于 2024-4-24 14:41
那估计接口实现姿势不对,这个我之前用emWin上是没问题的,用于LVGL应该也没问题。

[C] 纯文本查看 复制代码
static void _FillRect(GUI_DEVICE * pDevice, int x0, int y0, int x1, int y1) {
    LCD_PIXELINDEX ColorIndex;
	int x;
	
	if (GUI_pContext->DrawMode & LCD_DRAWMODE_XOR) 
	{
		for (; y0 <= y1; y0++) 
		{
			for (x = x0; x <= x1; x++) 
			{
				_XorPixel(pDevice, x, y0);
			}
		}
	} 
	else
	{
	  /* 选择进行优化 */
	#if emWin_Optimize
		ColorIndex = LCD__GetColorIndex();
		if (g_ChipID == IC_8875)
		{
			RA8875_RTERect( x0,  y0,  x1,  y1,  ColorIndex); 
		}
		else
		{
			ILI9488_FillRect(x0, y0, y1-y0+1, x1-x0+1, ColorIndex);
		}
		
	#else
		for (; y0 <= y1; y0++) 
		{
			_DrawHLine(pDevice, x0, y0, x1);
		}
	#endif 
	}
}

/*
*********************************************************************************************************
*	函 数 名: GUI_FillRect
*	功能说明: 用于emWin的接口函数
*	形    参:  _bright 亮度,0是灭,255是最亮
*	返 回 值: 无
*********************************************************************************************************
*/
void RA8875_RTERect(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint16_t _usColor) 
{
	s_ucRA8875Busy = 1;	
	
	BTE_SetTarBlock(x0, y0, y1-y0+1, x1-x0+1, 0);	/* 设置BTE位置和宽度高度 */
	BTE_SetOperateCode(0x0C);	        			/* 设定BTE 操作码和光栅运算码  REG[51h] Bit[3:0] = 0Ch */
	RA8875_SetFrontColor(_usColor);			        /* 设置BTE前景色 */
	BTE_Start();				        			/* 开启BTE 功能 */
	BTE_Wait();	

	s_ucRA8875Busy = 0;
}


我用的也是emWin里面这个接口!!!
回复

使用道具 举报

2

主题

8

回帖

14

积分

新手上路

积分
14
发表于 2024-5-21 14:50:31 | 显示全部楼层
这段放进disp_wait_flush函数
        while (wTransferState== 0){}
        wTransferState = 0;
再定义一个等待函数
    disp_drv.wait_cb = disp_wait_flush;
再把disp_flush改成垂直消隐
        __HAL_LTDC_LAYER(&hltdc_F, 0)->CFBAR =(uint32_t)color_p;
        __HAL_LTDC_RELOAD_IMMEDIATE_CONFIG(&hltdc_F);   ->这一句改成垂直消隐刷新,我只知道标准库是LTDC_ReloadConfig(LTDC_VBReload);
再把中断换成LTDC_IT_RR

实测这样不会撕裂,而且帧率也有保证
回复

使用道具 举报

1

主题

8

回帖

11

积分

新手上路

积分
11
发表于 2024-5-29 11:49:28 来自手机 | 显示全部楼层
我拿正点原子h743的板子,按照你这种方法对lvgl和ltdc驱动程序进行了修改,修改完之后可以运行,但帧数很低,即使是demo_widgets的静态界面,不进行滑动,帧数也只有30帧左右。这帧数应该不正常吧
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
 楼主| 发表于 2024-5-29 12:25:39 | 显示全部楼层
Doubler 发表于 2024-5-29 11:49
我拿正点原子h743的板子,按照你这种方法对lvgl和ltdc驱动程序进行了修改,修改完之后可以运行,但帧数很低 ...

我们的是32bit SDRAM,  看看是不是这个地方的区别。
回复

使用道具 举报

1

主题

8

回帖

11

积分

新手上路

积分
11
发表于 2024-5-29 18:35:06 | 显示全部楼层
eric2013 发表于 2024-5-29 12:25
我们的是32bit SDRAM,  看看是不是这个地方的区别。

我那个是正点原子的h743,板载的SDRAM是W9825G6KH 32MB,容量是足够大的吧,会不会是SDRAM速度的差别?而且我发现在显示静态界面时,帧数很低,但cpu占用也很低。此外,不管把dma2d开启还是关闭,帧数和cpu占用的情况都没变化
回复

使用道具 举报

1

主题

8

回帖

11

积分

新手上路

积分
11
发表于 2024-5-29 19:10:27 | 显示全部楼层
eric2013 发表于 2024-5-29 12:25
我们的是32bit SDRAM,  看看是不是这个地方的区别。

找到差别了,我那个sdram是16位宽,应该是这个地方影响了帧率
回复

使用道具 举报

692

主题

3576

回帖

5677

积分

论坛元老

积分
5677
发表于 2024-6-18 09:48:31 | 显示全部楼层
你好,有没有关于 lvgl 满足某些条件时 页面跳转的例程呀 ?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
 楼主| 发表于 2024-6-18 14:58:47 | 显示全部楼层
hpdell 发表于 2024-6-18 09:48
你好,有没有关于 lvgl 满足某些条件时 页面跳转的例程呀 ?

还没有看过他的切换方式,估计也是创建显示隐藏,创建显示删除或者滑动移动窗口位置。
回复

使用道具 举报

692

主题

3576

回帖

5677

积分

论坛元老

积分
5677
发表于 2024-6-19 16:33:43 | 显示全部楼层
eric2013 发表于 2024-6-18 14:58
还没有看过他的切换方式,估计也是创建显示隐藏,创建显示删除或者滑动移动窗口位置。

貌似大概看来一下 lvgl 的 lable 文本初步的应用,感觉好复杂,设置一堆的东东
回复

使用道具 举报

8

主题

155

回帖

179

积分

初级会员

积分
179
发表于 2024-6-27 16:44:16 | 显示全部楼层
硬汉是否更新个 V9 的版本出来给大家参考参考。我这边同样的配置,跑 widgets 的 demo,V9.1 的比 V8.3 卡的一逼。且 V9 所需的 stack 比 V8 的高很多。感觉 lvgl 对单片越来越不友好了
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
 楼主| 发表于 2024-6-27 17:48:52 | 显示全部楼层
cjunrong 发表于 2024-6-27 16:44
硬汉是否更新个 V9 的版本出来给大家参考参考。我这边同样的配置,跑 widgets 的 demo,V9.1 的比 V8.3 卡 ...

好的,得后面有时间了弄下。
回复

使用道具 举报

8

主题

155

回帖

179

积分

初级会员

积分
179
发表于 2024-6-27 19:02:54 | 显示全部楼层
eric2013 发表于 2024-6-27 17:48
好的,得后面有时间了弄下。

看了 V9 的 changelog,其内部全部统一用 RGB888 处理,我硬件用的 RGB565,估计单是这部分转换就损失了不少性能
rgb888.jpg
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
 楼主| 发表于 2024-6-28 09:39:36 | 显示全部楼层
cjunrong 发表于 2024-6-27 19:02
看了 V9 的 changelog,其内部全部统一用 RGB888 处理,我硬件用的 RGB565,估计单是这部分转换就损失了 ...

像emWin,他的内部是ARGB8888或者ABGR8888。

然后其他任何颜色格式化都是在这个基础上做转换输出的,这种处理方式优势是GUI可以处理各种颜色格式。劣势是底层得做好各种颜色格式转换处理的DMA2D加速。
回复

使用道具 举报

1

主题

11

回帖

14

积分

新手上路

积分
14
发表于 2024-8-9 21:26:52 | 显示全部楼层
请问一下老师,我用Doublebuffering情况下,这个例程是否没办法旋转?如果在lv_port_disp_init()中加入               
disp_drv.sw_rotate = 1;
disp_drv.rotated = LV_DISP_ROT_90;
直接就显示不正常卡住了。针对这个例程有什么比较好的方式将屏幕旋转90°显示吗?感谢!
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
 楼主| 发表于 2024-8-10 10:24:17 | 显示全部楼层
THD 发表于 2024-8-9 21:26
请问一下老师,我用Doublebuffering情况下,这个例程是否没办法旋转?如果在lv_port_disp_init()中加入                 ...

他这个旋转应该效果一般,可以自己提前配置旋转好。这样效果过。
回复

使用道具 举报

11

主题

130

回帖

168

积分

初级会员

积分
168
发表于 2024-8-10 17:42:27 | 显示全部楼层
Yue@123 发表于 2023-12-5 15:52
如果保持这个MIPI屏原来的刷屏方向,竖向刷新的,也会有这个撕裂感,稍微轻一点,麻烦帮忙看看这个怎么能 ...

两个方向:
1. MIPI使用的是video模式还是cmd模式(大分辨率一般是video模式),是否开启了TE。
2. 驱动ic一般都是支持硬件设定数据刷新方向的,不要通过软件去转换。
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2024-8-20 21:48:26 | 显示全部楼层
硬汉V5的下载看为什么不能触摸
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
 楼主| 发表于 2024-8-21 08:17:37 | 显示全部楼层
AI122122 发表于 2024-8-20 21:48
硬汉V5的下载看为什么不能触摸

电阻屏吗,电阻屏使用V5标准库网盘的出厂程序校准下。
回复

使用道具 举报

0

主题

50

回帖

50

积分

初级会员

积分
50
发表于 2024-10-19 18:02:06 | 显示全部楼层
本帖最后由 bricle 于 2024-10-19 21:34 编辑

V7 lvlg模板里面 axi sram 的mpu配置注释是错的,
Snipaste_2024-10-19_17-59-18.png
注释写着配置AXI SRAM的MPU属性为Write back, Read allocate,Write allocate,实际上这是axi sram的默认策略,实测lvgl显示不正常,而代码中的策略是Write through,read allocate,no write allocate


麻烦硬汉佬看一下
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
 楼主| 发表于 2024-10-20 01:06:40 | 显示全部楼层
bricle 发表于 2024-10-19 18:02
V7 lvlg模板里面 axi sram 的mpu配置注释是错的,

注释写着配置AXI SRAM的MPU属性为Write back, Read al ...

谢谢指出

这个地方偷懒了,改了配置后,没用顺手修改下注释。这个毛病好多年了,应该我写的程序,还有一些地方有这种问题。
回复

使用道具 举报

5

主题

40

回帖

55

积分

初级会员

积分
55
发表于 2024-10-28 18:02:15 | 显示全部楼层
大佬,可以用图层1做吗,留着图层2自己干点别的
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
 楼主| 发表于 2024-10-29 09:48:14 | 显示全部楼层
哲学家 发表于 2024-10-28 18:02
大佬,可以用图层1做吗,留着图层2自己干点别的

我的就是图层1.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-12 03:51 , Processed in 0.069482 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表