硬汉嵌入式论坛

 找回密码
 立即注册
查看: 820|回复: 12
收起左侧

[GUI] touchgfx+8位FSMC

[复制链接]

2

主题

7

回帖

13

积分

新手上路

积分
13
发表于 2023-4-19 19:20:44 | 显示全部楼层 |阅读模式

[url=]附件[/url]

[url=]TOUCHGFX资源文件太大,此文档不完全,这是8位FSMC的效果,ili9488驱动.对于STM芯片,感觉touchgfx比lvgl方便,而且美观,就是国内用的还不多.[/url]

7b0_touchgfx1.rar

8.63 MB, 下载次数: 13

评分

参与人数 1金币 +100 收起 理由
eric2013 + 100 很给力!

查看全部评分

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106739
QQ
发表于 2023-4-20 01:03:55 | 显示全部楼层
谢谢楼主分享,看代码还整了个DMA2D加速,真不错
回复

使用道具 举报

2

主题

7

回帖

13

积分

新手上路

积分
13
 楼主| 发表于 2023-4-20 07:47:58 | 显示全部楼层
eric2013 发表于 2023-4-20 01:03
谢谢楼主分享,看代码还整了个DMA2D加速,真不错

DMA2D 加速没搞成,刷屏时颜色不对,实际还是FSMC刷的,大佬帮我看看DMA2D什么地方搞错了
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106739
QQ
发表于 2023-4-21 00:45:50 | 显示全部楼层
skys2000 发表于 2023-4-20 07:47
DMA2D 加速没搞成,刷屏时颜色不对,实际还是FSMC刷的,大佬帮我看看DMA2D什么地方搞错了

好的,这两天有时间了我看看
回复

使用道具 举报

10

主题

40

回帖

70

积分

初级会员

积分
70
发表于 2023-4-23 20:42:04 | 显示全部楼层
之前买了几片u575vgt6,不知道硬汉哥了不了解这种有dma2d但没ltdc的,怎么用dma2d给fmc驱动的并口屏加速
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106739
QQ
发表于 2023-4-24 00:07:51 | 显示全部楼层
kmxm 发表于 2023-4-23 20:42
之前买了几片u575vgt6,不知道硬汉哥了不了解这种有dma2d但没ltdc的,怎么用dma2d给fmc驱动的并口屏加速{:1 ...

DMA2D加速性能更强,之前用通用DMA做的加速。

【原创开源应用第4期】给ili9488,RA8875等类显示屏的emWin底层增加DMA加速,提供RTX,uCOS和FreeRTOS版本
https://www.armbbs.cn/forum.php? ... 7501&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

10

主题

40

回帖

70

积分

初级会员

积分
70
发表于 2023-4-24 10:12:38 | 显示全部楼层
eric2013 发表于 2023-4-24 00:07
DMA2D加速性能更强,之前用通用DMA做的加速。

【原创开源应用第4期】给ili9488,RA8875等类显示屏的em ...

多谢硬汉哥
回复

使用道具 举报

5

主题

165

回帖

180

积分

初级会员

积分
180
发表于 2023-4-24 17:42:20 | 显示全部楼层
dma2d加速并口屏需要注意fsmc的地址线,具体可以看这个官方应用笔记
在STM32L496微控制器上使用Chorm-ARTAccelerator来刷新LCD-TFT显示器.pdf (659.5 KB, 下载次数: 12)
回复

使用道具 举报

2

主题

7

回帖

13

积分

新手上路

积分
13
 楼主| 发表于 2023-4-25 20:23:53 | 显示全部楼层
DX3906 发表于 2023-4-24 17:42
dma2d加速并口屏需要注意fsmc的地址线,具体可以看这个官方应用笔记

看了下资料,很有用,估计不是地址线的问题,而是层的问题,我DMA2D刷纯色没问题,刷图片的时候,应该是没有考虑层的问题.FSMC没有层的问题,到了DMA2D因为兼容LTDC的原因,就存在层的问题了.
回复

使用道具 举报

2

主题

7

回帖

13

积分

新手上路

积分
13
 楼主| 发表于 2023-4-25 22:33:16 | 显示全部楼层
skys2000 发表于 2023-4-25 20:23
看了下资料,很有用,估计不是地址线的问题,而是层的问题,我DMA2D刷纯色没问题,刷图片的时候,应该是没有考 ...

[url=]附件[/url]
左侧是FSMC正常的刷屏,右侧是DMA2D的刷屏,数组是16位指针数组

        uint16_t *pColor;
        pColor=&image_main_bg_image;
  BSP_LCD_DrawBitmap(0, 0, 240, 320, pColor);
        BSP_DrawBitmapD2D(240, 0, 240, 320,(uint32_t *) pColor);



[url=]好像还是不行,这是我的DMA2D的配置:[/url]
[url=]void MX_DMA2D_Init(void)
{

  /* USER CODE BEGIN DMA2D_Init 0 */

  /* USER CODE END DMA2D_Init 0 */

  /* USER CODE BEGIN DMA2D_Init 1 */

  /* USER CODE END DMA2D_Init 1 */
  hdma2d.Instance = DMA2D;
  hdma2d.Init.Mode = DMA2D_M2M;
  hdma2d.Init.ColorMode = DMA2D_OUTPUT_RGB565;
  hdma2d.Init.OutputOffset = 0;
        hdma2d.Init.RedBlueSwap = DMA2D_RB_SWAP;
        hdma2d.Init.AlphaInverted = DMA2D_REGULAR_ALPHA;

  hdma2d.LayerCfg[1].InputOffset = 0;
  hdma2d.LayerCfg[1].InputColorMode = DMA2D_INPUT_RGB565;
  hdma2d.LayerCfg[1].AlphaMode = DMA2D_NO_MODIF_ALPHA;
  hdma2d.LayerCfg[1].InputAlpha = 0xFF; /* 完全不透明 */
  hdma2d.LayerCfg[1].AlphaInverted = DMA2D_REGULAR_ALPHA;
  hdma2d.LayerCfg[1].RedBlueSwap = DMA2D_RB_SWAP;// DMA2D_RB_REGULAR;//DMA2D_RB_SWAP;
  //hdma2d.LayerCfg[1].ChromaSubSampling = DMA2D_NO_CSS;
       
       
  if (HAL_DMA2D_Init(&hdma2d) != HAL_OK)
  {
    Error_Handler();
  }
  if (HAL_DMA2D_ConfigLayer(&hdma2d, 1) != HAL_OK)
  {
    Error_Handler();
  }
  /* USER CODE BEGIN DMA2D_Init 2 */

  /* USER CODE END DMA2D_Init 2 */

}

这是刷屏函数:

void BSP_DrawBitmapD2D(uint16_t x, uint16_t y, uint16_t width, uint16_t height,uint32_t *color)
{
        DMA2D_HandleTypeDef hdma2d;
       
        BSP_LCD_SetAddressWindow(x,y, x+width- 1, y+height - 1);
        DMA2D->CR          &=        ~(DMA2D_CR_START);                                //        停止DMA2D
        DMA2D->CR                =        DMA2D_M2M;                                                        //        存储器到存储器
        DMA2D->FGMAR   = color;        ;         // 源地址
        DMA2D->OMAR    = LCD_MemoryAdd;                                // 目标地址; 由于是MCU屏,所以就是基址,因为前面已经有开窗了 //
        DMA2D->FGOR    = 0;//OffLineSrc;             // 源数据偏移(像素)
        DMA2D->OOR     = 0;//OffLineDst;             // 目标地址偏移(像素)
        DMA2D->OPFCCR        =        DMA2D_OUTPUT_RGB565;                                                //        设置颜色格式
        DMA2D->FGPFCCR        =        DMA2D_INPUT_RGB565;                //        设置颜色格式

        DMA2D->NLR                        =        (uint32_t)(width<<16)|(height);                        //        设定长度和宽度               
       
        DMA2D->CR          |=        DMA2D_CR_START;                                        //        启动DMA2D
               
        while (DMA2D->CR & DMA2D_CR_START) ;                        //        等待传输完成

}

[/url]

2.jpg
回复

使用道具 举报

5

主题

165

回帖

180

积分

初级会员

积分
180
发表于 2023-4-26 08:57:57 | 显示全部楼层
skys2000 发表于 2023-4-25 20:23
看了下资料,很有用,估计不是地址线的问题,而是层的问题,我DMA2D刷纯色没问题,刷图片的时候,应该是没有考 ...

没记错的话好像DMA2D的层和LTDC的层是相互独立的,DMA2D的输入输出可以是任意地址,他的背景层只在图片叠加、颜色混合或者特殊效果的时候能用的上,单纯只是加速刷屏的话只用前景层就好
不过也不知道touchgfx底层是不是把DMA2D和LTDC绑定了
回复

使用道具 举报

5

主题

165

回帖

180

积分

初级会员

积分
180
发表于 2023-4-26 08:58:24 | 显示全部楼层
看图上的样子有点像DMA2D输出的红色和蓝色反了
回复

使用道具 举报

5

主题

100

回帖

115

积分

初级会员

积分
115
发表于 2023-4-26 08:58:30 | 显示全部楼层
总感觉touchGFX流畅度不如embedded wizard,莫名其妙的卡顿,在同一块开发板上对比。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-3 13:57 , Processed in 0.204812 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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