ART-PI移植Touchgfx(2022最详细方法)

  • Post author:
  • Post category:其他




ART-PI移植Touchgfx(2022最新方法)




一、移植环境


开发板

:ART-PI


屏幕

:正点原子7寸屏幕(1024✖600)


移植平台

:RttStudio最新版本


移植时间

:2022-2-16


TouchgfxDesigner版本

:4.18.1(最新版)

移植最重要的是

屏幕

,ART-PI和正点原子的屏幕,FPC连接器的引脚是相同的,所以可以直接用FPC连接线连接到正点原子的屏幕上,这点在

ART-PI

的原理图上可以看出

ART-PI原理图

如果你使用的是正点原子的

其他屏幕

,只需要修改程序里面的屏幕参数即可

如果你使用的是

野火

的屏幕,需要

转接板

,我自己制作的抓接板如下:

请添加图片描述


转接板PCB工程文件,AD版本


链接:https://pan.baidu.com/s/1XxEHGmm0mW8ZO8_a6tnHHg

提取码:a9h3




二、移植结果

请添加图片描述




三、移植过程

1、新建项目

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


ctrl+s

保存一下,

RttStudio

会自动加载这些软件包

在这里插入图片描述

在这里插入图片描述

正点原子7寸屏幕 1024*600
/* atk 7 inch screen, 1024 * 600 */
#define LCD_WIDTH           1024
#define LCD_HEIGHT          600
#define LCD_BITS_PER_PIXEL  24
#define LCD_BUF_SIZE        (LCD_WIDTH * LCD_HEIGHT * LCD_BITS_PER_PIXEL / 8)
#define LCD_PIXEL_FORMAT    RTGRAPHIC_PIXEL_FORMAT_RGB888

#define LCD_HSYNC_WIDTH     20
#define LCD_VSYNC_HEIGHT    3
#define LCD_HBP             140
#define LCD_VBP             20
#define LCD_HFP             160
#define LCD_VFP             12
正点原子7寸屏幕 800*480
/* atk 7 inch screen, 800 * 480 */
#define LCD_WIDTH           800
#define LCD_HEIGHT          480
#define LCD_BITS_PER_PIXEL  24
#define LCD_BUF_SIZE        (LCD_WIDTH * LCD_HEIGHT * LCD_BITS_PER_PIXEL / 8)
#define LCD_PIXEL_FORMAT    RTGRAPHIC_PIXEL_FORMAT_RGB888

#define LCD_HSYNC_WIDTH     40
#define LCD_VSYNC_HEIGHT    20
#define LCD_HBP             46
#define LCD_VBP             23
#define LCD_HFP             210
#define LCD_VFP             22

在这里插入图片描述

进入

art-pi-touchgfx\libraries\touchgfx_lib\TouchGFX

文件夹

在这里插入图片描述

在这里插入图片描述

这里修改的是TouchgfxDesigner里面的

画布尺寸

,这个尺寸

不会影响硬件效果

,但会影响你的

UI设计

在这里插入图片描述

如果你没有下载TouchgfxDesigner就先去下载,

网盘如下

,有

4.15 4.17 4.18.0 4.18.1

版本

链接:https://pan.baidu.com/s/1jMuiywgusGXJaxQ4GbR-eQ

提取码:o6t7

也可以去ST官网下载,百度搜索

Touchgfx

即可

这里用

4.15版本

打开也可以,4.15一下的好像不行,不过4.15一下的也挺老了,应该没什么人用,使用最新版本的即可



TouchgfxDesigner4.18.1

打开之后,放置一个BOX控件,修改BOX尺寸和屏幕尺寸一样大,并把BOX放到最底层

在这里插入图片描述


然后编译生成代码,等待几分钟编译完成


在这里插入图片描述


编译完成:


在这里插入图片描述

如果出现

找不到指定文件

,就关闭设计软件,重新打开再编译



然后在RttStudio更新软件包

这步很重要,要不然

直接编译会生成很多错误

,是因为你目前添加的

Touchgfx

软件包

是老版本的


在这里插入图片描述


修改C++的一些配置


在这里插入图片描述


选中如下,应用并关闭


在这里插入图片描述


编译工程


在这里插入图片描述


没有错误和警告,烧录程序


在这里插入图片描述


如果出现


No rule to make target ‘…/libraries/touchgfx_lib/TouchGFX/generated/images/src/__designer/image_Blue_Backgrounds_Main_bg_480x272px.cpp’, needed by ‘libraries/touchgfx_lib/TouchGFX/


不用管,再次编译即可消除

在这里插入图片描述


烧录结果


请添加图片描述


这个时候只是在屏幕上面显示,点击是没有反应的,还需要添加触摸控制程序


需要知道自己的屏幕控制芯片是什么,我的正点原子的7寸屏幕是FT5426,在软件包中心搜索对应的驱动程序即可,常用的屏幕触摸芯片,软件包中心都有,如果没有就自己找到屏幕驱动程序,自己手动添加到程序中去

在这里插入图片描述

添加完成之后,

保存

(ctrl+s),RttStudio会

自动更新

软件包

在程序里面可以看到,

ft5426的驱动

,如下图

在这里插入图片描述

在这里插入图片描述

#ifdef PKG_USING_FT5426
#include "ft5426.h"
int rt_hw_ft5426_port(void)
{
    struct rt_touch_config config;
    config.dev_name = "i2c1";
    rt_hw_ft5426_init("ft5426", &config);
    return 0;
}
INIT_ENV_EXPORT(rt_hw_ft5426_port);
#endif

在这里插入图片描述

#ifdef PKG_USING_FT5426

#ifdef __cplusplus
extern "C"{
#endif

#include "ft5426.h"
#include "touch.h"

#ifdef __cplusplus
}
#endif

static rt_device_t  dev = RT_NULL;
static struct       rt_touch_data *read_data = NULL;
static struct       rt_touch_info info;


int ft5426_init(void)
{
    void *id;

//    //same init include sample_touchgfx.c
//    struct rt_touch_config cfg;
//    cfg.dev_name = "i2c1";
//    rt_hw_ft5426_init("ft5426", &cfg);

    dev = rt_device_find("ft5426");
    if (dev == RT_NULL)
    {
        rt_kprintf("can't find device ft5426\n");
        return -1;
    }

    if (rt_device_open(dev, RT_DEVICE_FLAG_RDONLY) != RT_EOK)
    {
        rt_kprintf("open device failed!");
        return -1;
    }
    read_data = (struct rt_touch_data *)rt_malloc(sizeof(struct rt_touch_data) * info.point_num);
    id = rt_malloc(sizeof(rt_uint8_t) * 8);
    rt_device_control(dev, RT_TOUCH_CTRL_GET_ID, id);
    rt_uint8_t * read_id = (rt_uint8_t *)id;
    rt_kprintf("id = %c %c %c %c \n", read_id[0], read_id[1], read_id[2], read_id[3]);

    rt_device_control(dev, RT_TOUCH_CTRL_GET_INFO, &info);
    rt_kprintf("range_x = %d \n", info.range_x);
    rt_kprintf("range_y = %d \n", info.range_y);
    rt_kprintf("point_num = %d \n", info.point_num);

    rt_free(id);

    return 0;
}

#endif


继续添加


在这里插入图片描述

#ifdef PKG_USING_FT5426
    ft5426_init();
#endif


最后添加:


在这里插入图片描述

#ifdef PKG_USING_FT5426
    rt_device_read(dev, 0, read_data, info.point_num);
    if (read_data[0].event == RT_TOUCH_EVENT_DOWN || read_data[0].event == RT_TOUCH_EVENT_MOVE)
    {
        y = read_data[0].x_coordinate;
        x = read_data[0].y_coordinate;
        rt_kprintf("down x: %03d y: %03d\n", x, y);
        return true;
    }
    else
#endif



FT5426触摸程序添加完成

,再次编译、烧录


开发板上触摸正常,这里不再展示


最终工程文件

,分享给大家

链接:https://pan.baidu.com/s/1wvbiWPxqwKixeUSsPVDBZg

提取码:0uz0




四、结语

本教程详细的展示了ART-PI开发板移植Touchgfx的

全过程

,并给出了常见问题的

解决方案

,此移植方案是基于

ART-PI的官方SDK

,所以移植过程

很简单

,主要是屏幕驱动、触摸驱动官方

已经写好

,还有一种移植方案是用

软件包中心



Touchgfx软件包

,这时候需要

自己修改

相应的屏幕驱动,网上已经有详细的教程,这里不再细说,最后希望此教程对大家有所帮助!!!



版权声明:本文为a_chengpp原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。