GT-HMI 是高通专为 GUI 用户开发的界面设计和编辑工具,包含 GT-HMI Designer 和 GT-HMI Engine 两款软件,上位机 GT-HMI Designer 自带图形库并包含多种控件供开发者使用,可以帮助用户快速创作出富有创意的 UI 图形交互效果。下位机 GT-HMI Engine 是一款高效的嵌入式 UI 引擎,可以帮助用户更快的构建、集成和优化 UI 应用程序;GT-HMI 工具为开发者提供了创新、高效的解决方案,让用户轻松实现自己的图形界面想法,有助于用户节省大量开发时间,提升开发效率,降低开发成本,从而增强产品的竞争力和用户体验,是开发者在使用 GUI 时的第一选择。
2.2 GT5GL64芯片与HMI工具使用
GT5GL64芯片可配合我司GT-HMI Designer上位机使用,用户使用GT-HMI Designer开发好GUI界面交互后,点击编译可生成resource.bin图片和字库资源包,将resource.bin资源包用烧录器烧录到GT5GL64芯片。使用GT5G系列芯片可以使用GUI-LCD(GUI-LCD上面自带一颗GT5G芯片)直接在我们移植好的示例工程上配合GUI-LCD开发板进行开发,提高开发效率。也可以使用客户的自己的单片机进行开发,后面介绍 HMI 界面移植。
获取 GUI-HMI 工具的方式及视频教程:
- 软件下载链接:高通字库官方网站高通字库-首页 (https://www.hmi.gaotongfont.cn)
- 说明书下载: 高通字库-GT-HMI Designer 用户手册 (https://www.hmi.gaotongfont.cn/kfgj)
- 软件视频教程:Https://space.bilibili.com/3493293474188211/channel/collectiondetail?sid=3159444
2.3 GT-HMI Designer 上位机代码移植
下位机配合 GT-HMI Designer 上位机设计界面非常快,本小节讲解下位机与上位机配合使用。第一步:首先在 GT-HMI Designer 上新建工程设计界面,设计界面教程可参考“GT-HMI Designer用户手册”。
第二步:GT-HMI Designer 工程目录下的 screen 目录是每个界面的程序源码,需要把这部分源码添加到 keil5 工程上,在 main 函数里面初始化 gt_ui_init()函数接口。这里还没完,还需要将 board 目录的 gt_port_vf.c,gt_gui_driver.lib 和 gt_gui_driver.h 替换工程 GT-HMI-Engine\driver 下的同名文件。
第三步:将 board 目录下的 resource.bin 烧录到存储芯片里面去。
图 screen 目录下的文件
烧录 bin 文件步骤如下:
第一步:备好如下烧录器,在烧录接的是最下面四行, 右边表格表示烧录器接存储芯片的引脚号。
第二步:使用对应烧录座将烧录器和存储芯片引脚连接起来, 右边表格表示座子对应芯片的引脚号。芯片表面的圆点应和右边表格第1脚对应。
存储芯片与烧录器连接图
第三步:打开 FlyPRO 烧录软件,选择 FlyPRO 上方的芯片-选择W25Q64FV。
第四步:点击 FlyPRO 软件界面上方的加载,将所需要烧入的 bin 文件加载进去。
第五步:点击烧录软件的自动编程,选择单次烧录。等待程序将 bin 文件烧录进 flash。下图为成功烧录的界面(烧录时如提示“ID校验不通过”,是否继续选择“是”,即可正常烧录)。
2.4 GT-HMI-Engine 代码移植
GT-HMI-Engine 代码移植很重要,在 hmi 上位机设计的界面需要依赖这些文件才能使用,下面介绍移植步骤(下面介绍的步骤是在 keil5 环境下完成的)。
第一步:首先用 git 的下载 GT-HMI-Engine 源代码。在 git bash 上使用
"git clone git@gitee.com:genitop/GT-HMI-Engine.git -b develop"命令拉取代码。
第二步:将 GT-HMI-Engine 源码添加到功能目录里面去,并添加到 keil5 的工程里面去,
第三步:打开 gnu 配置进行编译,下图为参考的配置,不同的 keil5 版本配置 gnu 界面都不一样。这里 gnu 配置必须打开,不然会报很多错误。
下图为 Target 配置,Use MicroLIB 也需要打开,不然也会报错。
第四步:编译通过之后添加 spi_wr、_flush_cb、read_cb、read_cb_btn 四个函数,spi_wr 是读取素材图片的,支持 flash、SD 卡读取,_flush_cb 是刷屏函数接口,read_cb 是触摸上报接口,read_cb_btn是按键上报接口。read_cb_btn 接口根据客户的要求添加,如果用不到,可定义空函数,就是这函数里面什么也没有,防止编译报错。
第五步:初始化 gt_init 函数,while(1)循环添加如下图操作,gt_tick_inc 为 GUI 系统提供 1ms 的心跳。
做完上面操作可显示一个按键控件看是否能正常显示,如显示不正常请检查_flush_cb 刷屏函数是否正确。控件能正常使用并能正常触摸,表明 GT-HMI-Engine 已移植成功。
2.5接口函数代码示例
// 定义触摸状态变量
uint8_t touch_status;
// SPI写入函数,用于向SPI设备写入数据并可选地读取数据
// 参数:data_write - 指向写入数据的指针
// len_write - 写入数据的长度
// data_read - 指向读取数据的指针
// len_read - 读取数据的长度
uint32_t spi_wr(uint8_t * data_write, uint32_t len_write, uint8_t * data_read, uint32_t len_read)
{
// 读取地址的临时变量
unsigned long ReadAddr;
unsigned long addr, len;
// 计算读取地址
ReadAddr = *(data_write + 1) << 16; // 高八位地址
ReadAddr += *(data_write + 2) << 8; // 中八位地址
ReadAddr += *(data_write + 3); // 低八位地址
// 从SPI闪存读取数据
spiflash_read(data_read, ReadAddr, len_read);
// 返回成功标志
return 1;
}
// 刷新回调函数,用于更新显示区域
// 参数:drv - 显示驱动结构体
// area - 显示区域信息
// color - 颜色信息
void _flush_cb(struct _gt_disp_drv_s * drv, gt_area_st * area, gt_color_t * color)
{
gt_size_t x = area->x, y = area->y;
uint16_t w = area->w, h = area->h;
int i = 0;
// 设置LCD块
lcd_setblock(x, y, x + w - 1, y + h - 1);
for (i = 0; i < w * h; i++)
{
// 写入颜色数据
lcd_wr_data(color->full >> 8);
lcd_wr_data(color->full & 0xff);
color++;
}
}
// 输入设备读取回调函数,用于处理触摸状态
// 参数:indev_drv - 输入设备驱动结构体
// data - 输入设备数据结构体
void read_cb(struct _gt_indev_drv_s * indev_drv, gt_indev_data_st * data)
{
if (!touch_status)
{
// 如果触摸状态未激活,设置为释放状态
data->state = GT_INDEV_STATE_RELEASED;
return;
}
// 更新触摸状态
touch_status = 0;
data->point.x = tp_dev.point.x;
data->point.y = tp_dev.point.y;
data->state = GT_INDEV_STATE_PRESSED;
}
注:read_cb_btn 接口函数,如有需求可联系我司技术人员提供。
2.6 HMI函数代码移植
GT-HMI-Engine 移植成功后,就可以实现 HMI 设计的界面移植到板子上,下面讲解一下 HMI 界面移植。
第一步:HMI 的工程目录如下图,board 和 out 目录是工程编译生成的字库库文件,图片素材寻址 C文件,还有素材 bin 文件,我们需要做的是将 gt_gui_driver.lib、gt_gui_driver.h 和 gt_port_vf.c 文件替换 keil 工程 GT-HMI-Engine/driver 原来的文件,向 flash 烧录 bin 文件。screen 目录是存放 HMI 设计的界面 C 文件,将这些界面文件添加到 keil5 工程里面去。
第二步:在 main 函数调用 gt_ui_init 界面初始化接口函数,gt_ui_init 是第一步添加到 keil5 工程界面文件中的函数。
在 GT-HMI-Engine 移植成功的基础上,按上面介绍的步骤操作完,即可实现 HMI 的界面移植,如移植不成功,请检查 bin 文件是否烧写正确。
-
- 高通字库芯片开发资料
- GT-HMI Designer用户手册
- GT-HMI Engine用户手册
- GTDB-X7ESP 高通智匠AI开发板规格书
- GTC-480480TFT40XP模块使用手册
- GTC-480272TFT43XP模块使用手册
- GTC-800480TFT50G模块使用手册
- GTC-800480TFT70GP模块使用手册
- GTC-1024600TFT101GP模块使用手册
- GT-GUI LCD 0.96寸液晶模组数据手册
- GT-GUI LCD 1.9寸液晶模组数据手册
- GT-GUI LCD 2.8寸液晶模组数据手册
- GT-GUI LCD 3.5寸液晶模组数据手册
- GT-GUI LCD 7.0寸液晶模组数据手册
- GUI-LCD开发板使用手册▼
- GT5GL128B标准GUI芯片规格书
高通字库交流群
GT-HMI交流群