当前位置: 首页 > news >正文

【Zynq7100实战】H3-CZ08P-7100 基于QT的LCD触控屏方案开发全流程

教程前言

在Zynq嵌入式工业开发中,LCD触控人机交互界面(HMI)是工业网关、智能终端、工控设备的核心功能。本文基于米联客H3-CZ08P-7100(Zynq7100)开发板,复刻官方QT触控屏完整方案,从零讲解硬件工程解析、设备树配置、系统构建、QT交叉编译、板级触控演示全流程。

教程全程基于官方REV2024版demo文档,无删减、无魔改,适配Zynq7000系列ARMHF架构,新手可直接跟着步骤落地触控显示项目,解决LCD无画面、触控失灵、QT程序无法运行等常见问题。

✅ 开发环境与硬件适配

  • 硬件平台:米联客 H3-CZ08P-7100(Zynq7100)
  • 软件工具版本:Vivado2021.1 + Vitis2021.1
  • 系统环境:Ubuntu18.04 64位
  • 核心开发包:uisrc-lab-xlnx20220601、uisrc-lab-qt-armhf.tar.gz
  • 实现功能:VDMA帧缓存画面输出、GT9157触控IC驱动、I2C触控数据交互、QT触控应用程序运行、屏幕滑动触控

一、方案原理与系统架构

1.1 核心功能简介

本方案实现LCD画面显示+多点触控一体化功能:通过VDMA驱动实现Framebuffer图像输出,依托I2C总线驱动GT9157触控芯片,注册Linux Input子系统,最终基于QT框架开发触控交互程序,实现屏幕滑动、触控响应等人机交互效果。

⚠️ 重点说明:本方案实现的是Linux标准input子系统触控功能,并非系统全局触控界面,仅适配QT应用程序触控交互。

1.2 硬件驱动架构

  • 显示驱动:VDMA驱动,提供Framebuffer显存管理,负责LCD画面渲染输出
  • 触控驱动:I2C总线驱动,适配GT9157触控芯片,采集触控坐标、手势数据
  • 背光驱动:PWM背光控制接口,支持屏幕亮度调节

二、Vivado硬件工程解析(H3-CZ08P-7100专属)

无需自行搭建BD工程,直接使用官方配套demo工程即可,重点掌握硬件资源配置要点:

2.1 关键硬件接口资源

  • lcd_*系列接口:LCD屏幕图像显示专用数据接口
  • lcd_pwm:屏幕背光亮度PWM控制引脚
  • gpio_rtl:触控芯片复位控制引脚
  • lcd_iic:触控I2C数据采集与复位接口

2.2 寄存器地址说明

VDMA、I2C、GPIO相关寄存器地址由Vivado综合后自动生成,Vitis导出设备树时会自动适配填充,新手无需手动修改寄存器参数,保证硬件资源匹配H3-CZ08P-7100板卡引脚定义。

三、设备树配置解析(核心关键)

❌ 新手禁止随意修改设备树,建议直接使用官方demo自带设备树文件,仅需理解核心节点作用。

3.1 LCD显示设备树节点

对应内核驱动路径:/uisrc-lab-xlnx/sources/kernel/drivers/video/fbdev/vdmafb.c

核心配置要点:

  • 配置dmas属性,绑定VDMA控制器地址,匹配硬件axi_vdma_0节点
  • 本工程采用3缓存VDMA架构,必须将park参数设置为1,否则画面闪烁、无显示

3.2 GT9157触控设备树节点

对应内核驱动路径:/uisrc-lab-xlnx/sources/kernel/drivers/input/touchscreen/gt9xx

核心配置要点:

  • 直接挂载在系统根节点下,可与zynqmp默认i2c0节点共存,无冲突
  • 固定reg地址为0x14,匹配H3-CZ08P-7100板卡I2C触控芯片硬件地址
  • 自动注册为Linux Input子系统设备,上电自动识别触控设备

四、系统工程搭建与镜像编译

4.1 前置文件准备

从官方demo包中提取核心工程文件,适配H3-CZ08P-7100:

  • boot启动文件:替换SD卡boot分区,适配任意合法文件系统
  • QT工程文件:包含PC端编译工程与板端运行压缩包
  • 系统工程文件:soc_dts(设备树)、soc_hw(硬件配置)、soc_prj(Vivado工程)、soc_sdk(Vitis工程)

开发包下载地址(官方原版):02_米联客uisrc-lab-Zynq|MPSoc Linux开发环境|镜像下载 - 资料下载 FPGA+AI数字世界 -

4.2 核心文件拷贝部署

进入系统开发包路径/uisrc-lab-xlnx/boards/mz7x/ubuntu/output/files,放置对应文件:

  • 直接放置:fsbl.elfsystem_wrapper.bit
  • 内核设备树:放入kernel-dts文件夹(支持多文件include引用)
  • Uboot设备树:仅支持命名为zynq-mz7x.dts的文件,不支持include

4.3 一键编译系统镜像

进入脚本目录,依次执行编译命令,全程自动化构建:

Plain Text
# 进入脚本目录
cd /uisrc-lab-xlnx/scripts

# 加载环境变量、拷贝并重命名文件
source mz7xcfg.sh
source move_files.sh

# 编译Uboot、内核
source make_uboot.sh
source make_kernel.sh

# 生成完整启动镜像
source create_image.sh

# SD卡分区与烧录(插入SD卡连接虚拟机)
source make_parted.sh
source deploy_image.sh

执行分区时输入设备号sdb,确认y即可完成系统烧录。

五、QT程序交叉编译(ARMHF架构)

H3-CZ08P-7100为Zynq7000架构,必须使用armhf版本QT交叉编译工具

5.1 部署QT编译环境

工具包下载地址:05_Linux资料常用软件&环境下载备用链接(2024版) - 资料下载 FPGA+AI数字世界 -

Plain Text
# 拷贝至用户目录并解压
tar zxvf uisrc-lab-qt-armhf.tar.gz -C /home/uisrc

# 加载QT编译环境变量
cd /uisrc-lab-qt/scripts
source qt_cfg.sh

5.2 编译官方触控Demo

Plain Text
# 进入QT应用工程目录
cd /uisrc-lab-qt/applications/deform/

# 执行ARM架构编译
./build_arm_app.sh

5.3 部署QT程序到开发板

  1. 将编译生成的可执行文件替换qt_play文件夹内程序;
  1. 修改run_arm_app.sh脚本,替换为新程序文件名;
  1. 将整个qt_play文件夹拷贝至SD卡根文件系统/home/uisrc目录;
  1. 安全弹出SD卡,准备板级测试。

六、H3-CZ08P-7100板级实操演示

6.1 硬件接线

  • 开发板插入烧录好系统的SD卡,拨码切换为SD卡启动模式;
  • 连接LCD触控屏幕、串口USB、5V电源;
  • 串口波特率设置115200,打开PuTTY等待开机。

6.2 系统登录与程序运行

开机完成后使用官方默认账号密码登录:

  • 账号:uisrc
  • 密码:root

此时LCD屏幕自动加载系统命令行界面,执行QT触控程序:

Plain Text
# 进入程序目录
cd qt_play/

# 运行触控Demo
sudo ./run_arm_app.sh
# 输入密码:root

6.3 功能验证

程序启动后,LCD屏幕显示可滑动气泡界面,支持手指触控、滑动拖拽,触控响应灵敏,无卡顿、无失灵,代表整套QT触控方案部署成功。

七、常见问题排查(H3-CZ08P-7100专属)

问题1:屏幕无画面、黑屏

  • 未使用配套VDMA设备树,park参数未设置为1;
  • 镜像未重新编译,Framebuffer驱动未加载;
  • LCD背光PWM引脚未正常初始化。

问题2:有画面但触控无响应

  • GT9157设备树reg地址与硬件不匹配;
  • I2C驱动未加载,Input子系统未识别触控设备;
  • 触控复位引脚硬件接线异常。

问题3:QT程序编译报错、无法运行

  • 误用aarch64版本QT工具,Zynq7100需使用armhf版本;
  • QT环境变量未正确加载,编译架构不匹配。

八、项目拓展总结

本文实现的基于QT的LCD触控方案,是Zynq工业人机界面开发的基础模板。基于本工程可快速拓展:工业参数触控配置、动态数据显示、按键交互、界面动画、多页面切换等功能,完全适配H3-CZ08P-7100工业板卡的工控、智能终端、物联网网关项目场景。

http://www.cnnetsun.cn/news/3788309.html

相关文章:

  • We0.ai:重新定义AI原生网站生成的下一代开发范式
  • AI 公司批量抢购 2022 年前的旧书:互联网被 AI 污染后,干净语料成了最后的矿脉
  • Puppet模块管理神器librarian-puppet:支持Forge、Git与本地路径的完整方案
  • 2026年横评:16款降AI率软件实测,这款让导师都夸“原创性强”!
  • 公司信息高效采集终极方案:gh_mirrors/co/company-crawler爬虫框架全解析
  • Kimi K3 架构篇:一文详解 2.8 万亿参数的巨型怪兽
  • 基于PlatformIO开发XIAO ePaper墨水屏:从环境搭建到网络天气站实战
  • 商谈类播客怎么存进Obsidian知识库?从播客转文字到知识库的实操方案
  • 从0到99分NPS:AI应用体验优化全流程,含3套已落地的A/B测试模板
  • 通俗易懂:以开车场景来理解训练网络框架
  • 打通“销-采-存-产-质-设”全链路,重塑制造企业运营中枢
  • 2026离散制造生产管理系统选型指南:定制方案如何破解生产痛点?
  • 2026手持SLAM设备怎么选?后处理软件与数据兼容性评测
  • MiniMax M3 震撼开源:百万上下文+原生多模态,AI 编码与智能体的新标杆
  • 【Kimi图表可信度红皮书】:基于137份真实业务报告的交叉验证,揭示4类“看似合理实则危险”的视觉欺骗模式
  • 2026六盘水黄金回收白银回收铂金回收市民首选无隐形扣费正规备案回收门店联系方式推荐
  • Ubuntu安装GDAL
  • HEXOSKIN科研采购指南
  • AI数据看板搭建到底难在哪?3大认知误区正在拖垮你的数字化转型进度
  • 计算机单片机毕设实战-基于 STC89C52RC 的环境阈值声光报警硬件系统设计 基于 LCD1602 的室内甲醛温湿度监测控制系统开发(017801)
  • 3分钟拯救杂乱桌面!NoFences开源桌面分区神器深度体验
  • Better Streaming Assets API详解:FileExists到LoadAssetBundle的完整调用示例
  • 魔兽争霸3终极帧率优化指南:5步让你的游戏体验丝滑如新
  • SDC命令详解:使用set_wire_load_model命令进行约束
  • 终极指南:3分钟解决Windows系统iPhone USB网络共享驱动安装难题
  • 企业审计数字化落地:解决多源数据、标准不统一、结果不稳定等审计痛点
  • 基于 OpenLayers 实现态势地图手动标绘航线、作战区域及点位悬浮弹窗
  • 告别枯燥数字!humanize让你的Python应用秒变用户友好
  • 5分钟上手LaspVfx:Unity音频驱动VFX的快速入门教程
  • 终极指南:3分钟让TVBoxOSC电视盒子变身专业Wi-Fi热点