12.4 GT-HMI-Engine代码移植
GT-HMI-Engine代码移植很重要,在hmi上位机设计的界面需要依赖这些文件才能使用,下面介绍移植步骤(下面介绍的步骤是以雅特力的AT32F437VGT7为例,在keil5环境下完成的,其他芯片移植过程基本一致)。
第一步:首先用git的下载GT-HMI-Engine源代码。
"git clone git@gitee.com:genitop/GT-HMI-Engine.git -b develop"命令拉取代码。
第二步:将GT-HMI-Engine源码添加到功能目录里面去,并添加到keil5的工程里面去,
图11.10
第三步:打开gnu配置进行编译,图11.11为参考的配置,不同的keil5版本配置gnu界面都不一样。这里gnu配置必须打开,不然会报很多错误。
图11.11
图7.4为Target配置,Use MicroLIB也需要打开,不然也会报错。
图11.12
第四步:编译通过之后添加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的心跳。
图11.13
做完上面操作可显示一个按键控件看是否能正常显示,如显示不正常请检查_flush_cb刷屏函数是否正确。
控件能正常使用并能正常触摸,表明GT-HMI-Engine已移植成功
12.5 接口函数代码
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;
uint8_t cnt = 0;
uint32_t x, j = 0;
ReadAddr = *(data_write + 1) << 16; //高八位地址
ReadAddr += *(data_write + 2) << 8; //中八位地址
ReadAddr += *(data_write + 3); //低八位地址
cnt = ReadAddr % 4;
if (cnt == 0) {
addr = ReadAddr;
}
else {
addr = ReadAddr - cnt;
}
len = len_read + cnt;
if (len % 4 != 0) {
len = len + 4 - (len % 4);
}
memcpy((volatile unsigned int *)0x80368000, (volatile unsigned int *)(0x70000000 + addr), len);
memcpy(data_read, (volatile unsigned int *)(0x80368000 + cnt), len_read);
return 1;
}
void _flush_cb(struct _gt_disp_drv_s * drv, gt_area_st * area, gt_color_t * color) {
uint32_t x = 0, y, j = 0;
uint32_t indx = 0;
uint16_t _color;
uint16_t * p = &_LCD_Buffer[(area->y) * LCD_WIDTH + (area->x)];
uint16_t step = LCD_WIDTH - area->w;
if (area->w == LCD_WIDTH)
memcpy(p, color, area->w * area->h * 2);
else
for (y = 0; y < area->h; y++) {
memcpy(p, color, area->w * 2);
p += (step + area->w);
color += (area->w);
}
}
void read_cb(struct _gt_indev_drv_s * indev_drv, gt_indev_data_st * data) {
if (!GT911_Scan(0)) {
data->state = GT_INDEV_STATE_RELEASED;
return;
}
;
data->point.x = TP_Dev.x[0];
data->point.y = TP_Dev.y[0];
data->state = GT_INDEV_STATE_PRESSED;
}
注:read_cb_btn接口函数,如有需求可联系我司技术人员提供。
12.6 HMI示例移植
GT-HMI-Engine移植成功后,就可以实现将HMI自行设计的界面移植到板子上,移植过程查看GT-HMI Designer上位机代码移植章节或参考“GT-HMI Engine用户手册”,下面讲解一下HMI示例移植,以GT-HMI Designer软件示例界面中的7寸示例来说明移植过程。首先打开7寸示例工程。
可以看到该示例中使用并展示了多种控件的使用和交互方法,我们在点击仿真运行前,需要先另存为到其它路径
不勾选下次询问时,点击仿真会弹出编译环境设置,我们设置好开发板卡设置与字库配置。
可以看到仿真完成后,软件控制台打印出仿真编译产物的路径信息,路径为另存为时设置的工程路径。
我们打开工程目录,可以看到有多个子文件夹,其中board文件夹是提供给GT-HMI模块使用的,out文件夹则是提供给非GT-HMI模块使用的,两者都是资源文件,包括生成的素材bin文件,图片排布顺序以及字库调用库等。Keil5文件夹中是编译自动生成的对应GT-HMI模块keil工程(与编译环境设置中开发板设置对应,即7寸模块工程),screen文件夹则是工程各页面的调用代码,sources文件夹中是个图片素材及图片的数组调用代码。
我们按照12.3章的内容将非GT-HMI模块使用的out文件夹中的gt_port_vf.c,gt_gui_driver.lib和gt_gui_driver.h替换掉我们自身移植好Engine工程的GT-HMI-Engine\driver下的同名文件,点击keil5工程的编译按钮开始编译程序文件,编译完成后使用J-LINK与模块板子相连,点击右边的下载按钮,将程序代码下载到板子中。
打开out文件夹中的resource.bin资源文件,使用烧录器将其烧录到板子上的flash中。烧录完成后,即可在板子上运行。
12.7 HMI TF/SD 卡升级方法(推荐使用)
升级步骤:
1: 准备1 张Mirco sd 卡。
2:在SD 卡根目录中新建gt_loader 文件夹.
3:将工程所在目录\board\resource.bin 和KEIL 工程所生成的.bin 一起拷贝到gt_loader 文件夹下,resource.bin 文件
是图片资源文件,升级到板载字库芯片当中,KEIL 生成的.bin 文件是升级到板载MCU 当中。也可以根据需要单独升
级其中一个文件。
4:将keil 工程所生成的.bin 文件:hmi_mod_mcu.bin 一同拷贝到SD 卡gt_loader 文件夹
5:将SD 卡,插入板子TF 卡槽中,按板子上面的复位按键(reset 键)或重新上电,即可进入升级状态。
6:板子上面的灯开始闪烁代表正在升级。灯闪烁停止表示升级已完成,结束后拔出Mirco sd 卡。
13. 安全注意事项
因本产品属于高精密电子产品 (半成品) ,为避免人为造成的不良,请按指导规则进行相应操作。
1.请勿拆卸液晶显示模块。
2.不要在印制电路板上钻额外的孔 ,修改形状或更改印制线路板上元件的位置。
3.除焊接接口外 ,不要用烙铁做任何更改;焊接温度保证在 320°C-350°C ,焊接时间控制在10S以内 ,焊接时注意不要在同一处停留时间太久以免烫伤 FPC。
4.其他事项在不清楚使用之前 ,请联系我司人员指导进行。
-
- 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寸液晶模组数据手册
- GUI-LCD开发板使用手册
- GT5GL128B标准GUI芯片规格书
- GT5GL64芯片产品规格书
高通字库交流群
GT-HMI交流群