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

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

3天内不再提示

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

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

扫码添加小助手

加入工程师交流群

前言

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

触摸屏介绍

触摸屏介绍参见:【用户测评(六):NXP FRDM-MCXN947 FLEXIO_SPI驱动TFT LCD】

它的主要几个参数如下:

b7022818-775b-11f0-a18e-92fbcf53809c.png

01与MCXN947连接关系

触摸屏信号包含通信信号和复位信号。这里4个管脚全部配置为GPIO,用GPIO模拟IIC。

b7130d9a-775b-11f0-a18e-92fbcf53809c.png

移植触摸接口

这里选择GPIO模拟IIC的通信方式,简单,易于移植。

参考:【用户测评(六):NXP FRDM-MCXN947 FLEXIO_SPI驱动TFT LCD】

01管脚配置

使用MCUXpresso Config Tools大大方便管脚配置工作。

b71fe0f6-775b-11f0-a18e-92fbcf53809c.png

b74034a0-775b-11f0-a18e-92fbcf53809c.png

保存配置生成代码,最终生成两个函数TFT_Touch_Init(),TFT_Touch_Deinit()其中TFT_Touch_Init()函数定义如下,会被BOARD_InitBootPins()调用,无需我们手动调用。

voidTFT_Touch_Init(void)
{
 /* Enables the clock for GPIO0: Enables clock */
 CLOCK_EnableClock(kCLOCK_Gpio0);
 /* Enables the clock for GPIO4: Enables clock */
 CLOCK_EnableClock(kCLOCK_Gpio4);
 /* Enables the clock for PORT0 controller: Enables clock */
 CLOCK_EnableClock(kCLOCK_Port0);
 /* Enables the clock for PORT4: Enables clock */
 CLOCK_EnableClock(kCLOCK_Port4);
  gpio_pin_config_tCTP_SCL_config= {
    .pinDirection = kGPIO_DigitalOutput,
    .outputLogic =0U
  };
 /* Initialize GPIO functionality on pin PIO0_14 (pin E11) */
  GPIO_PinInit(TFT_TOUCH_INIT_CTP_SCL_GPIO, TFT_TOUCH_INIT_CTP_SCL_PIN, &CTP_SCL_config);
  gpio_pin_config_tCTP_SDA_config= {
    .pinDirection = kGPIO_DigitalOutput,
    .outputLogic =0U
  };
 /* Initialize GPIO functionality on pin PIO0_15 (pin G13) */
  GPIO_PinInit(TFT_TOUCH_INIT_CTP_SDA_GPIO, TFT_TOUCH_INIT_CTP_SDA_PIN, &CTP_SDA_config);
  gpio_pin_config_tCTP_RST_config= {
    .pinDirection = kGPIO_DigitalOutput,
    .outputLogic =0U
  };
 /* Initialize GPIO functionality on pin PIO0_22 (pin B8) */
  GPIO_PinInit(TFT_TOUCH_INIT_CTP_RST_GPIO, TFT_TOUCH_INIT_CTP_RST_PIN, &CTP_RST_config);
  gpio_pin_config_tCTP_INT_config= {
    .pinDirection = kGPIO_DigitalInput,
    .outputLogic =0U
  };
 /* Initialize GPIO functionality on pin PIO4_16 (pin R8) */
  GPIO_PinInit(TFT_TOUCH_INIT_CTP_INT_GPIO, TFT_TOUCH_INIT_CTP_INT_PIN, &CTP_INT_config);
 /* PORT0_14 (pin E11) is configured as PIO0_14 */
  PORT_SetPinMux(TFT_TOUCH_INIT_CTP_SCL_PORT, TFT_TOUCH_INIT_CTP_SCL_PIN, kPORT_MuxAlt0);
  PORT0->PCR[14] = ((PORT0->PCR[14] &
           /* Mask bits to zero which are setting */
           (~(PORT_PCR_IBE_MASK)))
          /* Input Buffer Enable: Enables. */
           |PORT_PCR_IBE(PCR_IBE_ibe1));
 /* PORT0_15 (pin G13) is configured as PIO0_15 */
  PORT_SetPinMux(TFT_TOUCH_INIT_CTP_SDA_PORT, TFT_TOUCH_INIT_CTP_SDA_PIN, kPORT_MuxAlt0);
  PORT0->PCR[15] = ((PORT0->PCR[15] &
           /* Mask bits to zero which are setting */
           (~(PORT_PCR_IBE_MASK)))
          /* Input Buffer Enable: Enables. */
           |PORT_PCR_IBE(PCR_IBE_ibe1));
 /* PORT0_22 (pin B8) is configured as PIO0_22 */
  PORT_SetPinMux(TFT_TOUCH_INIT_CTP_RST_PORT, TFT_TOUCH_INIT_CTP_RST_PIN, kPORT_MuxAlt0);
  PORT0->PCR[22] = ((PORT0->PCR[22] &
           /* Mask bits to zero which are setting */
           (~(PORT_PCR_IBE_MASK)))
          /* Input Buffer Enable: Enables. */
           |PORT_PCR_IBE(PCR_IBE_ibe1));
 /* PORT4_16 (pin R8) is configured as PIO4_16 */
  PORT_SetPinMux(TFT_TOUCH_INIT_CTP_INT_PORT, TFT_TOUCH_INIT_CTP_INT_PIN, kPORT_MuxAlt0);
  PORT4->PCR[16] = ((PORT4->PCR[16] &
           /* Mask bits to zero which are setting */
           (~(PORT_PCR_IBE_MASK)))
          /* Input Buffer Enable: Enables. */
           |PORT_PCR_IBE(PCR_IBE_ibe1));
}

02触摸接口文件说明

此屏幕厂商给的触摸屏相关的文件如下:

touch.h是触摸屏对外的接口文件,声明TP_Init()函数和一个全局变量extern _m_tp_dev tp_dev表示触摸状态信息;

touch.c是触摸屏接口实现文件,实现TP_init()函数并初始化全局变量tp_dev;

ctpiic.h是IIC接口的声明,这里以GPIO模拟IIC,所以需要提供IIC各种基础信号的声明,如发出起始信号、停止信号、发送一个字节、读取一个字节、发送ACK、接收ACK等基础信号的声明;

ctpiic.c是IIC接口的实现,以GPIO模拟IIC的实现;

ft6336.h是这颗FT6336触摸IC的驱动文件,包含寄存器定义和寄存器读写函数、获取触摸状态信息的函数的声明;

ft6336.c是这颗FT6336触摸IC驱动的实现文件,包含寄存器读写函数的实现、扫描触摸屏获取状态的函数的实现;

03触摸接口移植适配

主要适配工作是GPIO模拟IIC功能的实现,即修改ctpiic.c和ctpiic.h文件。

在头文件中需要提供几个宏定义,如下所示,因为是GPIO模拟IIC,所以需要实现如下的API:

CTP_IIC_Init()初始化IIC两个管脚,初始配置为输出模式,高电平;

CTP_IIC_Start()IIC作为Master发起起始信号;

CTP_IIC_Stop()IIC作为Master发起结束信号;

CTP_IIC_Send_Byte()IIC以GPIO模拟的方式,移位以MSB的方式发送一个字节;

CTP_IIC_Read_Byte()IIC切换SDA为输入方向,读取一个字节;

CTP_IIC_Wait_Ack()IIC作为Master等待ACK信号;

CTP_IIC_Ack()IIC发送一个ACK信号;

CTP_IIC_Nack()IIC发送一个NAK信号;

虽说有这么多的接口需要实现,但实际上我只需要实现CTP_IIC_Init()初始化SCL/SDA对应的两个管脚,然后实现下面的几个宏定义即可,如下代码所示:

CTP_SDA_IN()切换SDA管脚为输入方向,每种MCU的驱动调用不同,这里调用NXP的API也同时以寄存器的访问方式相结合,实现SDA管脚切换为输入方式;

CTP_SDA_OUT()切换为SDA管脚为输出方向,原理同上;

CTP_IIC_SCL(n)实现SCL管脚输出高低电平;

CTP_IIC_SDA(n)实现SDA管脚输出高低电平;

CTP_READ_SDA实现读取SDA管脚输入电平,这几个宏定义直接调用NXP的库函数即可;

#ifndef__CTPIIC_H
#define__CTPIIC_H


#include
#include"pin_mux.h"
#include"fsl_gpio.h"


//IIC IO方向设置
#defineCTP_SDA_IN() 
do { 
 GPIO_PortInputEnable(TFT_TOUCH_INIT_CTP_SDA_GPIO, TFT_TOUCH_INIT_CTP_SDA_GPIO_PIN_MASK);
 TFT_TOUCH_INIT_CTP_SDA_GPIO->PDDR&=GPIO_FIT_REG(~(1UL <PDDR|=GPIO_FIT_REG(1UL <

后面的几个API都依赖于上面的宏定义,我们无需过多关心。下面给出其中一个函数的实现,可以看出都依赖于上面的宏定义。

voidCTP_IIC_Send_Byte(uint8_t txd)
{
 uint8_t t;
CTP_SDA_OUT();
CTP_IIC_SCL(0);//拉低时钟开始数据传输
for(t =0;t <8;t++)
? {
CTP_IIC_SDA((txd &0x80) >>7);
  txd <<=1;
CTP_IIC_SCL(1);
CTP_Delay();
CTP_IIC_SCL(0);
CTP_Delay();
? }
}

运行效果

先运行厂商提供的触摸屏测试程序,发现很卡,屏幕刷新很卡,触摸屏也不灵敏。这个是由原因的,模组厂商的刷屏函数是一个一个打点,没有发挥 FLEXIO_SPI_EDMA的优势,所以刷屏很卡,继而影响触摸效果。

关于安富利

安富利是全球领先的技术分销商和解决方案提供商,在过去一个多世纪里一直秉持初心,致力于满足客户不断变化的需求。通过遍布全球的专业化和区域化业务覆盖,安富利可在产品生命周期的每个阶段为客户和供应商提供支持。安富利能够帮助各种类型的公司适应不断变化的市场环境,在产品开发过程中加快设计和供应速度。安富利在整个技术价值链中处于中心位置,这种独特的地位和视角让其成为了值得信赖的合作伙伴,能够帮助客户解决复杂的设计和供应链难题,从而更快地实现营收。

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

    关注

    14

    文章

    5996

    浏览量

    119717
  • 触摸屏
    +关注

    关注

    42

    文章

    2404

    浏览量

    118944
  • 移植
    +关注

    关注

    1

    文章

    402

    浏览量

    28788
  • GPIO
    +关注

    关注

    16

    文章

    1289

    浏览量

    54415

原文标题:用户测评(九):NXP FRDM-MCXN947 移植触摸屏

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    TFT适配LVGL实践分享

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

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

    ,想必大家早已有所耳闻,NXP为以前的Kinetis系列以及最新的MCX系列都推出了FRDM板子,比如MCX系列的FRDM-MCXN947, FRDM-MCXA153,今天为大家介绍
    的头像 发表于 11-14 09:43 ?1797次阅读
    <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 ?2916次阅读
    在<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开发板LVGL移植触摸屏

    LVGL接入输入设备,可以参考其自带的示例,即examples/porting/lv_port_indev_template.c文件和对应的头文件。咱们先把这两个文件拷贝出来,放到bsp/lvgl_port/目录下,并重命名为lv_port_indev.c和lv_port_indev.h。
    的头像 发表于 07-17 14:23 ?719次阅读
    使用<b class='flag-5'>恩</b>智<b class='flag-5'>浦</b><b class='flag-5'>FRDM-MCXN947</b><b class='flag-5'>开发板</b>LVGL<b class='flag-5'>移植</b><b class='flag-5'>触摸屏</b>

    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 ?1760次阅读

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

    RT-Thread率先支持NXPFRDM-MCXN947,并联合半导体推出了NXPFRDM-MCXN947开发板评测活动。测评活动顺利
    的头像 发表于 05-13 18:19 ?2175次阅读
    《<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 ?1373次阅读
    使用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 ?1756次阅读
    <b class='flag-5'>恩</b>智<b class='flag-5'>浦</b>新品MCX N系列线下培训来啦!LVGL、AI等超多精彩Demo演示,快来报名吧!

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

    前言 ? ? FRDM-MCXN947 ”评测活动由安富利和与非网协同举办。本篇内容由与非网用户发布,已授权转载许可。原文可在与非网(eefocus)工程师社区查看。 PART 0 1
    的头像 发表于 01-13 09:18 ?778次阅读
    基于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 ?959次阅读
    使用NXP MCX-N板卡搭建环境及点灯

    推出FRDM i.MX 93开发板

    备受嵌入式开发者青睐的FRDM开发平台,迎来了一位新成员——FRDM i.MX 93
    的头像 发表于 02-21 14:22 ?1807次阅读

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

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