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

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

3天内不再提示

使用恩智浦FRDM-MCXN947开发板LVGL移植触摸屏

安富利 来源:与非网 2025-07-17 14:23 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

前言

恩智浦“FRDM-MCXN947”评测活动由安富利和与非网协同举办。本篇内容由与非网用户发布,已获转载许可。原文可在与非网(eefocus)工程师社区查看。

背景

上一期【用户测评(七):移植LVGL跑benchmark】已经实现了触摸屏的触摸效果,但是没有接入到LVGL,现在开干。

LVGL移植触摸屏详解

01对应的输入设备文件

LVGL接入输入设备,可以参考其自带的示例,即examples/porting/lv_port_indev_template.c文件和对应的头文件。咱们先把这两个文件拷贝出来,放到bsp/lvgl_port/目录下,并重命名为lv_port_indev.c和lv_port_indev.h。

02修改lv_port_indev.c/.h

这两个文件都使用#if 0括了起来,需要改成#if 1使能,然后包含正确的头文件,如下图所示,仅包含lv_port_indev.h和touch.h文件即可。

93922650-615b-11f0-baa5-92fbcf53809c.png

03关键函数lv_port_indev_init()

文件lv_port_indev.c文件中的lv_port_indev_init()函数非常关键,从它注册输入设备到LVGL。它支持的输入设备有多种类型:

最常见的是触摸屏LV_INDEV_TYPE_POINTER

鼠标,对应LV_INDEV_TYPE_MOUSE

键盘,对应LV_INDEV_TYPE_KEYPAD

编码器,对应LV_INDEV_TYPE_ENCODER

按键,对应LV_INDEV_TYPE_BUTTON

这里只需要关注触摸屏,其他的全部用#if 0括起来。

最终lv_port_indev_init()函数简化如下:

voidlv_port_indev_init(void)
{
 staticlv_indev_drv_t indev_drv;


 /*------------------
  * Touchpad
  * -----------------*/


 /*Initialize your touchpad if you have*/
 touchpad_init();


 /*Register a touchpad input device*/
 lv_indev_drv_init(&indev_drv);
  indev_drv.type=LV_INDEV_TYPE_POINTER;
  indev_drv.read_cb= touchpad_read;
  indev_touchpad =lv_indev_drv_register(&indev_drv);
}

从这个代码片段看出,我们只需要实现touchpad_init()和touchpad_read()函数即可。

04touchpad_init()

这个函数的实现非常简单,调用我们之间写好的触摸屏初始化函数TP_Init()即可。

staticvoidtouchpad_init(void)
{
 /*Your code comes here*/
 //NOTE:触摸屏已经在别的地方初始化了
 TP_Init();
}

05touchpad_read()

这个函数是LVGL提供的模版函数,我们不用做什么改动,只需要实现其中的touchpad_is_pressed()和touchpad_get_xy()即可。

从下面代码可以看出,touchpad_is_pressed()只需要调用TP_Scan(),如果有触摸则发回非0值即可,如果没有触摸则返回0,最终touchpad_is_pressed()返回逻辑值。

而touchpad_get_xy()更简单,直接调用TP_Get_XY()返回最近一次触摸的坐标即可。

/*Will be called by the library to read the touchpad*/
staticvoidtouchpad_read(lv_indev_drv_t* indev_drv,lv_indev_data_t* data)
{
staticlv_coord_tlast_x =0;
 staticlv_coord_tlast_y =0;


 /*Save the pressed coordinates and the state*/
 if(touchpad_is_pressed()) {
   touchpad_get_xy(&last_x, &last_y);
    data->state =LV_INDEV_STATE_PR;
  }
 else{
    data->state =LV_INDEV_STATE_REL;
  }


 /*Set the last pressed coordinates*/
  data->point.x = last_x;
  data->point.y = last_y;
}


/*Return true is the touchpad is pressed*/
staticbooltouchpad_is_pressed(void)
{
/*Your code comes here*/
//TODO:从这里开始一次扫描,获取触摸屏状态
if(TP_Scan()) {
  returntrue;
 }


 returnfalse;
}


/*Get the x and y coordinates if the touchpad is pressed*/
staticvoidtouchpad_get_xy(lv_coord_t* x,lv_coord_t* y)
{
 /*Your code comes here*/
TP_Get_XY((uint16_t*)x, (uint16_t*)y);
}

演示

运行LVGL几个示例程序,比之前的屏幕模组厂商的示例程序丝滑多了。主要是LVGL刷屏采用了DMA,比逐个打点方式快多了。

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

    关注

    14

    文章

    6051

    浏览量

    134324
  • 触摸屏
    +关注

    关注

    42

    文章

    2439

    浏览量

    120929
  • 移植
    +关注

    关注

    1

    文章

    407

    浏览量

    29211
  • 函数
    +关注

    关注

    3

    文章

    4406

    浏览量

    66831
  • LVGL
    +关注

    关注

    2

    文章

    115

    浏览量

    4268

原文标题:用户测评(八):LVGL移植触摸屏

文章出处:【微信号:AvnetAsia,微信公众号:安富利】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    使用FRDM-MCXN947开发板移植LVGL跑benchmark

    在弹出的组件选择框中查找或者输入lvgl并勾选,导入LVGL组件,如下图所示。
    的头像 发表于 06-20 10:34 1654次阅读
    使用<b class='flag-5'>恩</b>智<b class='flag-5'>浦</b><b class='flag-5'>FRDM-MCXN947</b><b class='flag-5'>开发板</b><b class='flag-5'>移植</b><b class='flag-5'>LVGL</b>跑benchmark

    使用FRDM-MCXN947开发板移植触摸屏

    触摸屏信号包含通信信号和复位信号。这里4个管脚全部配置为GPIO,用GPIO模拟IIC。
    的头像 发表于 08-13 17:02 4938次阅读
    使用<b class='flag-5'>恩</b>智<b class='flag-5'>浦</b><b class='flag-5'>FRDM-MCXN947</b><b class='flag-5'>开发板</b><b class='flag-5'>移植</b><b class='flag-5'>触摸屏</b>

    TFT适配LVGL实践分享

    1前言说明本章通过FRDM-MCXN947开发板与正点原子的TFTLCD进行实践1.2模块介绍硬件:FRDM-MCXN947开发板:该开发板
    的头像 发表于 09-04 08:06 2712次阅读
    TFT适配<b class='flag-5'>LVGL</b>实践分享

    MCX N23的官方评估FRDM-MCXN236详解

    ,想必大家早已有所耳闻,NXP为以前的Kinetis系列以及最新的MCX系列都推出了FRDM板子,比如MCX系列的FRDM-MCXN947, FRDM-MCXA153,今天为大家介绍
    的头像 发表于 11-14 09:43 2347次阅读
    <b class='flag-5'>恩</b>智<b class='flag-5'>浦</b>MCX N23的官方评估<b class='flag-5'>板</b><b class='flag-5'>FRDM-MCXN</b>236详解

    FRDM-MCXN947开发板部署DeepSeek大语言模型

    还在羡慕那些动辄几十GB显存的AI大佬?今天,我们用一块小小的FRDM-MCXN947开发板,就能让你体验到与大语言模型畅聊的快感!谁说嵌入式设备只能闪烁LED?今天我们就要让它"口吐莲花"!
    的头像 发表于 04-10 17:23 3266次阅读
    在<b class='flag-5'>恩</b>智<b class='flag-5'>浦</b><b class='flag-5'>FRDM-MCXN947</b><b class='flag-5'>开发板</b>部署DeepSeek大语言模型

    FRDM-MCXN947的纯Linux命令行环境搭建

    10000-commandfile /mnt/MyNAS/walker/work/rt-thread/bsp/nxp/mcx/mcxn/frdm-mcxn947/flash.jlink\' 编写flash.jlink烧录文件
    发表于 07-28 22:55

    关于将Flash写入FRDM-MCXN947的问题求解

    这次我想问一个关于使用 MCXN947 将 Flash 写入另一个的问题。 我尝试使用 FRDM-MCXN947 的写入方法作为参考写入此,但发生了错误。 下面是当时控制台的内容。
    发表于 03-17 06:29

    FRDM-MCXN947在初始化lpI2C时, I2C无法正常工作怎么解决?

    我正在使用 FRDM-MCXN947 开发板,发现在初始化 lpI2C 时, I2C 无法正常工作。我的配置如图所示。 我使用的配置基于演示。您能帮我检查一下问题可能是什么吗?谢谢。
    发表于 03-25 06:32

    富昌电子推荐两款的MCX A和MCX N系列微控制器

    富昌电子为您推荐的 MCX A 和 MCX N 系列微控制器开发板 FRDM-MCXA153 和 FRDM-MCXN947,帮助您快速
    的头像 发表于 05-09 16:44 2039次阅读

    FRDM-MCXN947开发实践指南》上线啦

    RT-Thread率先支持NXPFRDM-MCXN947,并联合半导体推出了NXPFRDM-MCXN947开发板评测活动。测评活动顺利
    的头像 发表于 05-13 18:19 3449次阅读
    《<b class='flag-5'>恩</b>智<b class='flag-5'>浦</b><b class='flag-5'>FRDM-MCXN947</b><b class='flag-5'>开发</b>实践指南》上线啦

    使用VSCode调试FRDM MCXN947开发板

    想必关注MCXN947系列MCU的朋友们已经知道板载MCXN947FRDM开发板已经正式和大家见面了。
    的头像 发表于 05-16 11:16 1758次阅读
    使用VSCode调试<b class='flag-5'>FRDM</b> <b class='flag-5'>MCXN947</b><b class='flag-5'>开发板</b>

    新品MCX N系列线下培训来啦!LVGL、AI等超多精彩Demo演示,快来报名吧!

    基于FRDM-MCXN947和RT-Thread的动手实践,率先完成的同学有福利哦~同时,我们还特别设置了现场交流环节,RT-Thread和的资深技术工程师将
    的头像 发表于 05-19 08:36 1951次阅读
    <b class='flag-5'>恩</b>智<b class='flag-5'>浦</b>新品MCX N系列线下培训来啦!<b class='flag-5'>LVGL</b>、AI等超多精彩Demo演示,快来报名吧!

    基于Label CIFAR10 image on FRDM-MCXN947例程实现鞋和帽子的识别

    前言     FRDM-MCXN947 ”评测活动由安富利和与非网协同举办。本篇内容由与非网用户发布,已授权转载许可。原文可在与非网(eefocus)工程师社区查看。 PART 0 1
    的头像 发表于 01-13 09:18 1145次阅读
    基于Label CIFAR10 image on <b class='flag-5'>FRDM-MCXN947</b>例程实现鞋和帽子的识别

    使用NXP MCX-N板卡搭建环境及点灯

    FRDM-MCXN947开发板是一个基于MCXN947器件的低成本设计的评估MCXN947器件将两个Arm Cortex-M33微控制
    的头像 发表于 02-12 09:07 1673次阅读
    使用NXP MCX-N板卡搭建环境及点灯

    FRDM-MCXA156开发实践指南》上线啦

    ,完成了电子书《FRDM-MCXA156开发实践指南》,希望能够给大家提供一些支持。《
    的头像 发表于 04-06 10:51 2640次阅读
    《<b class='flag-5'>恩</b>智<b class='flag-5'>浦</b><b class='flag-5'>FRDM</b>-MCXA156<b class='flag-5'>开发</b>实践指南》上线啦