0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

惊艳就在眼前!来感受先楫MCU八图层高清显示

先楫半导体HPMicro 2022-07-02 11:52 次阅读

简 介

HPM6700/6400系列 MCU来自上海先楫半导体科技有限公司的高性能实时RISC-V微控制器,为工业自动化及边缘计算应用提供了极大的算力、高效的控制能力及丰富的多媒体功能。HPM6700/6400自带的显示控制系统,包括LCD控制器及2D图形加速单元,性能也非常强悍,可以轻松驱动1366x768高分辨率的LCD屏,且可达到60fps的高刷新帧率。

本文主要介绍了HPM6700/6400的显示控制系统,包括LCD控制器和2D图形加速单元,并使用LVGL图形库开发的应用示例,方便开发者快速开发。

LCD 控制器 (LCDC)

HPM6700/6400系列的图形显示接口 LCDC 支持连接多种不同种类,不同分辨率的 LCD(TFT) 显示屏。LCDC 支持 24 位并行数据线,支持时钟信号 PCLK,支持 HSYNC 和 VSYNC 同步信号。LCDC 可以作为总线主设备读取片上和片外的存储器的图像数据,并发送到外部显示屏上。LCDC 的特性如下:

支持多达 24 位 RGB 显示接口;

内置 DMA,作为总线主设备读取显存数据;

支持可配置的分辨率显示屏,刷新率可达 1366x768, 60 fps;

支持多种数据格式输入 ARGB8888,RGB565,YUV422/YCbCr422,Y8,1bpp,2bpp,4bpp 和 8bpp;

支持多达8 个图层 Alpha Blending(混合叠加),其中 2 个主图层支持逐行 YUV422/YCbCr422;

支持最大 pixclk 为 85MHz 。

5e2f22da-f965-11ec-a2f4-dac502259ad0.png

LCDC 功能框图


2D 图形加速单元 (PDMA)

产品支持 1 个 2D 图形加速单元 PDMA。PDMA 支持处理逐行图像数据,支持按像素处理多种尺寸,多种颜色格式的图形;

支持同时取2个图层的数据,每个图层独立启用控制;

支持图像格式转换,包括ARGB8888,RGB565,YUV422H1P 图像转换;

支持图像0°/90°/180°/270°旋转;

支持水平、垂直的翻转;

支持图像缩放,X/Y拉伸、压缩;

支持图像截图。

5e4578dc-f965-11ec-a2f4-dac502259ad0.pngPDMA功能框图

LVGL 应用开发

1. LVGL 介绍

LVGL(轻巧而多功能的图形库)是一个免费的开放源代码图形库,它提供创建具有易于使用的图形元素,精美的视觉效果和低内存占用的嵌入式GUI所需的一切。

主要特性:

功能强大的构建块,例如按钮,图表,列表,滑块,图像等;

带有动画,抗锯齿,不透明,平滑滚动的高级图形各种输入设备,例如触摸板,鼠标,键盘,编码器等;

支持UTF-8编码的多语言;

多显示器支持,如TFT,单色显示器;

完全可定制的图形元素;

独立于任何微控制器或显示器使用的硬件

可扩展以使用很少的内存(64 KB闪存,16 KB RAM)进行操作;

操作系统,支持外部存储器和GPU,但不是必需的;

单帧缓冲区操作,即使具有高级图形效果;

C语言编写,以实现最大的兼容性(与C ++兼容);

模拟器可在没有嵌入式硬件的PC上进行嵌入式GUI设计。

可移植到MicroPython

可快速上手的教程、示例、主题;

丰富的文档教程;

在MIT许可下免费和开源。

2. LVGL移植适配

官方已经移植和适配好了LVGL,代码结构如下:

./lvgl库本身

./lv_drivers显示和输入设备驱动程序

./lv_examples示例和演示

Lvgl官方网站(https://docs.lvgl.io)

Lvgl官方博客站点(https://blog.lvgl.io)

Sim在线模拟器网站(https://sim.lvgl.io)

lv_sim_... 适用于各种IDE和平台的模拟器项目

lv_port_... 移植到其他开发板

lv_binding_... 绑定到其他语言

lv _… 移植到其他平台

其中,lvgl,lv_examples和lv_drivers是最受维护、关注的核心存储库。

5e6604d0-f965-11ec-a2f4-dac502259ad0.png

lv_drivers显示接口:

要设置显示,必须初始化 lv_disp_draw_buf_t 和 lv_disp_drv_t 变量。

lv_disp_draw_buf_t 保存显示缓冲区信息的结构体

lv_disp_drv_t HAL要注册的显示驱动程序、与显示交互并处理与图形相关的结构体、回调函数。

显示缓冲器:

关于缓冲区大小,有 3 种情况:

(1)一个缓冲区:LVGL将屏幕的内保存到缓冲区中并将其发送到显示器。缓冲区可以小于屏幕。在这种情况下,较大的区域将被重画成多个部分。如果只有很小的区域发生变化(例如按下按钮),则只会刷新该部分的区域。

(2)两个非屏幕大小的缓冲区:具有两个缓冲区的 LVGL 可以将其中一个作为显示缓冲区,而另一缓冲区的内容发送到后台显示。应该使用 DMA 或其他硬件将数据传输到显示器,以让CPU同时绘图。这样,渲染和刷新并行处理。与一个缓冲区的情况类似,如果缓冲区小于要刷新的区域,LVGL将按块绘制显示内容

(3)两个屏幕大小的缓冲区:与两个非屏幕大小的缓冲区相反,LVGL将始终提供整个屏幕的内容,而不仅仅是块。这样,驱动程序可以简单地将帧缓冲区的地址更改为从 LVGL 接收的缓冲区。因此,当MCU具有 LCD/TFT 接口且帧缓冲区只是 RAM 中的一个位置时,这种方法的效果很好。

显示驱动器:

一旦缓冲区初始化准备就绪,就需要初始化显示驱动程序。

lv_disp_drv_t的初始化,需要使用 lv_disp_drv_init(&disp_drv) 进行初始化。最后,要为 LVGL 注册显示设备,需要调用lv_disp_drv_register(&disp_drv)。

在最简单的情况下,仅需要设置 lv_disp_drv_t 的以下两个字段:

draw_buf 指向已初始化的 lv_disp_buf_t 变量的指针。

flush_cb 回调函数,用于将缓冲区的内容复制到显示的特定区域。刷新准备就绪后,需要调用lv_disp_flush_ready()。LVGL可能会以多个块呈现屏幕,因此多次调用flush_cb。使用 lv_disp_flush_is_last() 可以查看哪块是最后渲染的。

其中,有一些可选的数据字段:

hor_res 显示器的水平分辨率。(默认为 lv_conf.h 中的 LV_HOR_RES_MAX )

ver_res 显示器的垂直分辨率。(默认为 lv_conf.h 中的 LV_VER_RES_MAX )

color_chroma_key 色彩键控支持透明色。(默认为 lv_conf.h 中的 LV_COLOR_TRANSP )

user_data 驱动程序的自定义用户数据。可以在 lv_conf.h 中修改其类型。

anti-aliasing 使用抗锯齿(anti-aliasing)(边缘平滑)。缺省情况下默认为 lv_conf.h 中的 LV_ANTIALIAS 。

rotated 如果 1 交换 hor_res 和 ver_res 。两种情况下 LVGL 的绘制方向相同(从上到下的线条),因此还需要重新配置驱动程序以更改显示器的填充方向。

screen_transp 如果为 1 ,则屏幕可以具有透明或不透明的样式。需要在 lv_conf.h 中启用 LV_COLOR_SCREEN_TRANSP 。

要使用GPU,可以使用以下回调:

gpu_fill_cb 用颜色填充内存中的区域。

gpu_blend_cb 使用不透明度混合两个内存缓冲区。

gpu_wait_cb 如果在 GPU 仍在运行 LVGL 的情况下返回了任何 GPU 函数,则在需要确保GPU渲染就绪时将使用此函数。

其他一些可选的回调,使单色、灰度或其他非标准RGB显示一起使用时更轻松、优化:

rounder_cb 四舍五入要重绘的区域的坐标。例如。2x2像素可以转换为2x8。如果显示控制器只能刷新特定高度或宽度的区域(对于单色显示器,通常为8 px高),则可以使用它。

set_px_cb 编写显示缓冲区的自定义函数。如果显示器具有特殊的颜色格式,则可用于更紧凑地存储像素。(例如1位单色,2位灰度等)。这样,lv_disp_buf_t中使用的缓冲区可以较小,以仅保留给定区域大小所需的位数。set_px_cb不能与两个屏幕大小的缓冲区一起显示缓冲区配置。

monitor_cb 回调函数告诉在多少时间内刷新了多少像素。

clean_dcache_cb清除与显示相关的所有缓存的回调

lv_drivers显示接口:

要设置输入设备,必须初始化 lv_indev_drv_t 变量,类型(indev_drv.type)可以是:

LV_INDEV_TYPE_POINTER触摸板或鼠标

LV_INDEV_TYPE_KEYPAD键盘或小键盘

LV_INDEV_TYPE_ENCODER带有左,右,推动选项的编码器

LV_INDEV_TYPE_BUTTON外部按钮按下屏幕

3. 应用开发

LVGL图形库功能控件有很多,这里不在详细介绍,详细API介绍查阅LVGL官网。

LVGL主要控件功能有:

5e7c99ac-f965-11ec-a2f4-dac502259ad0.png

使用 lvgl 图形库之前,我们还必须初始化 lvgl 以及相关其他组件。初始化的顺序为:


调用 lv_init() 初始化 lvgl 库;

初始化驱动程序;

在 LVGL 中注册显示和输入设备驱动程序;

在中断中每隔 x毫秒调用 lv_tick_inc(x)用以告知 lvgl 经过的时间;

每隔 x毫秒定期调用 lv_task_handler()用以处理与 lvgl 相关的任务。

SquareLine_Studio设计器:

(1)创建项目

5e892f50-f965-11ec-a2f4-dac502259ad0.png

(2)控件布局设计

5ea08560-f965-11ec-a2f4-dac502259ad0.png

(3)代码生成

5eb0e72a-f965-11ec-a2f4-dac502259ad0.png5ece55bc-f965-11ec-a2f4-dac502259ad0.png

(4)代码适配工程

5ee02a44-f965-11ec-a2f4-dac502259ad0.png5eec8974-f965-11ec-a2f4-dac502259ad0.png

(5)添加事件响应代码

运行效果:

5ef66426-f965-11ec-a2f4-dac502259ad0.gif

性能测试:

fps帧率:每秒钟LCD图形刷新的帧数;

LVGL会通过内部的tick,定时去刷屏幕;

10即1000ms/10ms=100FPS;

这个宏定义限定了LVGL刷屏帧率的上限,设定满帧100帧;

使用全尺寸双buffer。

实测结果:

5f5fef04-f965-11ec-a2f4-dac502259ad0.gif5fe88710-f965-11ec-a2f4-dac502259ad0.png

总 结

本文介绍了 HPM6700/6400 LCD 控制器和2D图形加速单元模块,同时介绍了 LVGL 图形界面库功能及移植适配要点,并基于 LVGL 图形界面库开发驱动点亮LCD屏的应用示例。根据实测结果,LCD 帧率可达到60fps。官方 HPM-SDK 已将LVGL图形库移植适配完成,也提供了基于 LVGL 的demo示例,用户可以非常便捷的使用HPM6700/6400 SDK 来完成LCD相关的应用开发。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16254

    浏览量

    345649
收藏 人收藏

    评论

    相关推荐

    有动静!出了颗适用机器人的MCU

    近期,半导体(HPMicro)推出的新款MCU——HPM6E00,引发了外界的广泛关注。这家成立仅四年的公司,凭借“国内首款内嵌ESC的高性能MCU”,再次证明了其在
    的头像 发表于 07-02 08:17 141次阅读
    有动静!<b class='flag-5'>先</b><b class='flag-5'>楫</b>出了颗适用机器人的<b class='flag-5'>MCU</b>!

    工业芯标杆,邀您来围观——HPM6E00新品上市在即

    ,EtherCATSlaveController)的高性能MCU产品——HPM6E00系列新品全面上市!一直关注的小伙伴们应该还记得,我们去年12月12日举办了一场“Ether
    的头像 发表于 06-13 08:17 559次阅读
    工业芯标杆,邀您来围观——<b class='flag-5'>先</b><b class='flag-5'>楫</b>HPM6E00新品上市在即

    高性能MCU HPM6800系列产品生态绽放,共链未来

    2024年3月28日,上海 - 国产高性能微控制器厂商上海半导体科技有限公司(半导体,HPMicro)携手生态合作伙伴芯原、立功科技、顺微电子和科宇盛达,于上海浦东成功举办《
    的头像 发表于 03-29 18:21 804次阅读

    毫厘中的绚烂绽放,携手立功科技发布HPM6800数字仪表方案

    上海半导体科技有限公司(半导体,HPMicro)推出了国产高性能微控制器HPM6800系列,致力于提供单主控的数字仪表及HMI解决方案,携手生态合作伙伴构建全新的数字仪表
    的头像 发表于 03-14 08:16 332次阅读
    毫厘中的绚烂绽放,<b class='flag-5'>先</b><b class='flag-5'>楫</b>携手立功科技发布HPM6800数字仪表方案

    基于HPM5300 RISC-V内核MCU的HPM5361EVK开发板测评效果(二)

    HPM5361EVK是基于HPM5300系列高性能RISC-V内核MCU的一款开发板。
    的头像 发表于 03-12 10:30 1634次阅读
    基于<b class='flag-5'>先</b><b class='flag-5'>楫</b>HPM5300 RISC-V内核<b class='flag-5'>MCU</b>的HPM5361EVK开发板测评效果(二)

    芯原2.5D GPU IP赋能半导体HPM6800系列RISC-V MCU

    芯原股份(股票代码:688521.SH)与半导体(简称“”)的合作,为高性能图形处理领域带来了新的突破。
    的头像 发表于 03-05 09:21 516次阅读

    HPM5361EVK开发板试用体验】HPM5361EVK开发板初体验

    收到HPM5361EVK开发板,被HPM5361EVK开发板的做工和电路板设计惊艳到了,首先是黑色的板子布线设计合理,元件布局整齐,
    发表于 12-24 22:58

    HPM5361EVK开发板试用体验】认识和了解HPM5361EVK开发板

    近日,收到了HPM5361EVK开发板开发板,带大家了解和认识一下HPM5361EVK开发板。 已下是开发板官网介绍; HPM5300系列M
    发表于 12-24 22:39

    半导体亮相EtherCAT技术应用峰会

    的发展及应用。半导体在峰会上推出中国首款拥有德国倍福公司(Beckhoff)正式授权EtherCAT从站控制器(ESC, EtherCAT Slave Controller) 的高性能MCU产品 HPM6E00系列。同时,近
    的头像 发表于 12-14 09:12 525次阅读

    2分钱/MHz!轻松入手高性能MCU——HPM5301打破芯纪录

    2023年11月24日,上海 - 国产高性能微控制器厂商上海半导体科技有限公司(半导体,HPMicro)今日宣布推出高性能HPM5300系列
    的头像 发表于 11-24 11:14 638次阅读
    2分钱/MHz!轻松入手<b class='flag-5'>先</b><b class='flag-5'>楫</b>高性能<b class='flag-5'>MCU</b>——HPM5301打破芯纪录

    半导体亮相深圳慕尼黑 高性能MCU引领市场发展

    导语10月30日至11月1日,为期三天的深圳慕尼黑华南电子展在深圳国际会展中心(宝安新馆)成功举办。半导体携4款高性能MCU产品亮相慕尼黑华南电子展。10月30日至11月1日,为期三天的深圳
    的头像 发表于 11-17 08:17 320次阅读
    <b class='flag-5'>先</b><b class='flag-5'>楫</b>半导体亮相深圳慕尼黑 高性能<b class='flag-5'>MCU</b>引领市场发展

    半导体携最新MCU产品及解决方案亮相深圳慕尼黑

    10月30日至11月1日,为期三天的深圳慕尼黑华南电子展在深圳国际会展中心(宝安新馆)成功举办。半导体携4款高性能MCU产品亮相慕尼黑华南电子展。 10月30日至11月1日,为期三天的深圳慕尼黑
    的头像 发表于 11-16 14:07 418次阅读

    降维打击!对标主流ARM内核MCURISC-V高性能HPM5300凭何争性价比之王?

    半导体以定位国内高性能RISC-V内核MCU为业界所熟知,已经陆续推出了HPM6700/6400、HPM6300和HPM6200三款高性能MCU,在算力和控制力等方面充分满足高端市
    的头像 发表于 08-19 08:19 645次阅读
    降维打击!对标主流ARM内核<b class='flag-5'>MCU</b>,<b class='flag-5'>先</b><b class='flag-5'>楫</b>RISC-V高性能HPM5300凭何争性价比之王?

    降维打击!对标主流ARM内核MCURISC-V高性能HPM5300凭何争性价比之王?

    电子发烧友网报道(文/黄晶晶)半导体以定位国内高性能RISC-V内核MCU为业界所熟知,已经陆续推出了HPM6700/6400、HPM6300和HPM6200三款高性能MCU,在算
    的头像 发表于 08-16 09:48 2312次阅读
    降维打击!对标主流ARM内核<b class='flag-5'>MCU</b>,<b class='flag-5'>先</b><b class='flag-5'>楫</b>RISC-V高性能HPM5300凭何争性价比之王?

    IAR 与半导体达成战略合作,全面支持半导体高性能RISC-V MCU开发

    (中国|上海)2023年6月14日,在embeddedworldChina首届展会举办期间,嵌入式开发软件和服务的全球领导者IAR与国产领先高性能MCU厂商半导体(HPMicro)共同宣布
    的头像 发表于 07-31 17:57 509次阅读
    IAR 与<b class='flag-5'>先</b><b class='flag-5'>楫</b>半导体达成战略合作,全面支持<b class='flag-5'>先</b><b class='flag-5'>楫</b>半导体高性能RISC-V <b class='flag-5'>MCU</b>开发