迪文屏DMT12800K070_A2WTC踩坑实录(一)
项目开发需求用迪文屏设计人机交互界面,接触了几天,体验如何,不做评价。有此一文,以预防将来还有用到这东西做开发,但是自己把之前学的基本忘光而被迫回去分析官方资料的情况(如果可以真不想再看第二次,最多最多去查个表)。
目录
- 一、准备工作
- 1. 资料获取
- 1.1 迪文官网
- 1.2 迪文开发者论坛
- 2. 上电与串口通信
- 2.1 连接方式与驱动检查
- 2.2 UART2串口通信协议
- 2.3 串口通信测试
- 3. 新建工程
- 3.1 开发软件版本选择
- 3.2 设置分辨率
- 二、起步阶段
- 1. 等待初始化页面
- 1.1 添加背景图片
- 1.2 制作ICO图标库文件
- 1.3 添加动画图标
- 1.4 添加0号字库
- 1.5 SD卡接口下载工程
- 1.6 串口通信:页面切换指令
- 2. 初步规划主页面
- 2.1 更换背景图片
- 2.2 放置RTC显示控件
- 2.3 放置文本显示控件
- 2.4 添加基础触控
- 2.5 串口通信:RTC读取与修改
一、准备工作
1. 资料获取
1.1 迪文官网
拿到迪文屏第一步,看一下对应型号的数据手册,获取相关的显示规格及电气参数。数据手册可以在 迪文官网 查找:
1.2 迪文开发者论坛
到迪文开发者论坛的 帖子1 下载详细一些的应用开发指南,记得先看产品型号和软件平台对应表,根据这个选择要下载的文档(在之前下载的数据手册里应该也会有指明该产品使用的 UI 版本):
除了刚才的应用开发指南,还有一个DWIN OS程序开发指南文档在 帖子2 下载(这个实际上是适用于汇编二次开发需求的文档,可以酌情取舍):
这里选择的自然是《T5UID3 DGUSII 应用开发指南20210127.pdf》以及《基于T5 CPU的DWIN OS程序开发指南V21.pdf》。
注意:帖子1 里提供的手册都是 T5 系列的而非 T5L 系列的,这两者存在区别,并不能通用。
最后还可以在 帖子3 的大概位置下载对应迪文屏型号的 DEMO,这算是相当有力的参考资料了。
2. 上电与串口通信
2.1 连接方式与驱动检查
8pin 接口与 HDL65011 连接线为本文实际调试所用连接方式:
当显示屏通过串口连接到 PC 端时,确保系统能正常识别出来并分配好 COM 口,顺便改一下配置参数:
2.2 UART2串口通信协议
在描述协议数据帧结构前,需要明确几点:
- 每个串口数据的传送采用 10 个位,包括 1 个起始位,8 个数据位,1 个停止位;
- 串口的所有指令或数据都是 16 进制(HEX) 格式;
- 对于字型(2字节)数据,规定采用 MSB(高字节优先传送) 方式;
- 最好不要在一个 DGUS 周期(40 ms)内发送超过 4KB 的数据给 DGUS 屏。
数据帧结构如下:
PS:实际上指令一共有 4 个:80/81 是寄存器级别的写和读,82/83 则是变量级别的写和读。一般用户使用 82/83 就能基本满足需求了。
2.3 串口通信测试
给显示屏上电,打开串口助手,配置好串口参数:
现在来发一条指令测试。根据之前贴出的串口通讯协议以及应用开发指南中给出的系统变量接口一览表,测试一下能否从显示屏读取版本号。
测试结果正常:
3. 新建工程
3.1 开发软件版本选择
迪文屏的软件有很多不同的版本,其中一些版本只适用于特定系列的迪文屏。比如博主这里的两个版本,V7385 并没有对迪文屏型号有规定,而 V7592 则在软件内部的版本说明里指出 “该版本仅适用于 T5L”,因此博主选择使用的开发软件版本为 V7385。
3.2 设置分辨率
直接点新建工程就会弹出属性设置对话框。这里按实际使用的迪文屏显示分辨率填(可以手动修改):
如果后面需要修改分辨率可以在这里重新设置:
这样就建好了空白的工程。进到工程目录可以看到里面新增加的文件。当然也是可以夹带私货的,比如下图里的图和文档资料就是博主自己在里面创建的,目的是开发的时候方便提取图片素材与翻阅手册:
二、起步阶段
1. 等待初始化页面
先把第一页做出来。开机动画和开机音乐就免了,咱不搞这些花里胡哨的,就让显示屏上电显示等待初始化页面,然后在 PC 端模拟板载系统,初始化完成了就用串口发信号给迪文屏,迪文屏就显示跳转到主页面。
1.1 添加背景图片
直接在下图的位置添加:
T5UID3 的 256MB Flash 中,可以用来存放图片的空间有 192MB;
要添加的背景图片能正常显示必须满足四个条件:BMP格式、位深度24、分辨率与工程所设相同、命名为 序号ID +(可选的)补充文件名。
1.2 制作ICO图标库文件
首先找好 GIF 素材(不用太大),然后用小工具将其逐帧分解为位深度24 的 BMP 图片,并用序号ID重命名(咱比较懒就用脚本代劳了)
然后打开下图底部的配置工具栏中的 DWIN ICO 生成工具,按步骤添加检索文件夹并生成 ICO 文件即可。注意如果图片无法从文件夹里读入这个工具就说明图片格式有问题:
然后把生成的 ICO 文件复制一份扔到 DWIN_SET 文件夹里:
ICO 文件中图片的分辨率最大不超过 1024*1024 像素,超过了会被强制压缩;
编号40并不是唯一选择,23~127都可以用:
FLASH 存储空间中,单个字库空间为 256KB 大小。当单个图标库文件超过 256KB 时,需要严格计算该图标库所占空间,否则可能会造成图标区间位置冲突而导致显示异常。比如刚才生成的 ICO 文件大小为 1.24MB,则占用空间值 1.24 * 1024 / 256 = 4.96,即占用 40、41、42、43、44 这5个字库空间,因此下一个图标库命名要从 45 开始。
1.3 添加动画图标
回到 000.bmp 的设计页面下,将动画图标显示控件放置到背景图片上(不用刻意调整控件大小,选择好显示图标后会自适应调节):
在右侧高亮处选择要显示的图标文件,且右上角可设定 X 和 Y 来精确设定控件在背景图片下的位置:
设置开始图标和结束图标,过滤背景色:
设置变量地址、停止值、开始值和初始值等属性(可以看到控件已经完成自适应调节尺寸了):
描述指针直接保持用 0xFFFF 即可,表示由配置文件加载;
变量地址的可选范围为 0x1000~0xFFFF,且变量地址的选择与字库空间类似,一个变量地址内最多可以容纳 2字节的内容,比如下面那张示例图片中,下一个可用变量的地址只能设置为 0x1006 往后了(最好保持为偶数,使用奇数地址可能会出现不明的问题):
同时对于动画图标显示控件,变量地址占用两个字的位置:
开始值和停止值为动画图标控件进行动画显示的设定阈值,配合初始值和触碰控件的按键值返回使用可以起到控制作用,这里的设置方式实际上就是让动画图片控件直接开始动画显示(动画显示模式和背景显示模式应该就没必要说明了吧,有兴趣就自己试);
单个图标显示时间是以 DGUS 周期为单位的计数器。T5UID3 中规定一个 DGUS 周期为 40ms,这也就意味着要想动画图标显示的刷新上限就是 40ms一帧,即帧率最高只有 25fps(欲言又止.jpg)。
可以在这里预览一下目前的工程下载到迪文屏里的显示效果:
1.4 添加0号字库
如果在预览的时候弹出了这个提示,就说明软件没有在 DWIN_SET 文件夹下检测到 0号字库文件:
生成方法还是在老地方(底部的配置工具栏),这里直接使用默认配置生成:
完成制作后就可以在开发软件目录下找到 0号字库(高亮)了:
把 0号字库复制一份扔到 DWIN_SET 文件夹下,再去预览就不会弹出提示了:
最后保存工程并生成配置文件:
在工程文件夹的 DWIN_SET 目录下可以看到又多了以 13、14、22 为序号ID 的 bin 文件:
1.5 SD卡接口下载工程
SD卡也有要求(真麻烦),内存大小要在 1~16GB 之间,FAT32格式,而且单个扇区的大小必须为 4KB。
在确保 SD 卡能被迪文屏正常识别的条件下下载过程很简单,把工程目录下的 DWIN_SET 文件夹整个复制到 SD 卡里,然后给迪文屏上电,插入 SD 卡,等蓝屏下显示处理完成后拔掉 SD 卡,再给迪文屏掉电、上电就会开始跑刚才下载进去的工程了。
工程下载进去了,也能正常显示 000.bmp 以及转圈,现在完成收尾工作,即使用串口模拟 MCU 向迪文屏发送页面跳转指令表示系统初始化完成。
1.6 串口通信:页面切换指令
预留的系统变量中已经提供了进行页面跳转的串口指令(NND,一顿好找,这文档真绝):
就拿上面给的指令示例 5A A5 07 82 0084 5A01 0001 尝试一下,让页面跳转到 001.bmp:
并没有收到应答,但是看迪文屏上已经成功跳转:
PS:这个串口指令预计会比较常用,可以打包成函数的形式,预留参数就是要跳转到的页面的ID。
2. 初步规划主页面
后面的界面还没有想好怎么设计,就先按着例程里的设计来吧,把主页面的大致轮廓规划一下。
2.1 更换背景图片
为方便后续更换图片源,先把之前工程里的后面几张背景图片同一更换为纯色图片。方法也很简单:首先保存工程并关闭 DGUS 软件,然后将准备好的图片按序号ID重命名,直接复制到 DWIN_SET 文件夹下将原来的图片替换掉,然后重新打开 DGUS 软件下的工程就会发现已经改好了:
2.2 放置RTC显示控件
RTC显示有两种格式,一种是表盘时钟显示形式,需要 RTC 硬件支持;另一种则是文本显示形式。这里选择文本显示形式。
进入 001.bmp 的设计页面,选择文本RTC显示控件放置到背景图片下:
依次设置好 X 和 Y 坐标、字体颜色、X方向点阵数以及日期格式:
- W 和 H(宽高)的数值其实没有太大影响,具体显示多大实际上看的是 X 方向点阵数,这里设置到包含整个文本只是单纯有些强迫症;
- 字库位置意义不明,推测填入的是文本显示使用字库的序号ID,这里为 0 应该是指使用 0 号字库的字体;
- 日期格式没有固定形式,根据右下方的 RTC 编码表可进行任意的排列组合,中间还能加 :、- 等标点符号。
2.3 放置文本显示控件
文本显示控件就在 RTC 显示控件边上:
接着设置控件的属性参数:
- 编码方式根据使用的字库设置,0号字库默认编码方式为 GBK,即在不引入汉字的情况下不想添加新的字库可以设置为 GBK 编码;
- 文本长度的单位是字节,用来指定显示文本的长度同时配合变量地址确定该控件占用的空间(比如这里变量地址是 0x1030,长度是10,那么下一个变量地址就应该从 0x103A开始);
- FONT0_ID、FONT1_ID 软件本身已经进行了说明,不添加新字库全部默认为 0 即可,这里 FONT1_ID 设置为 60 是因为添加了自制的一个GBK汉字字库,序号ID 为 60;
- X方向点阵数、Y方向点阵数也需要根据使用的字库来设置,否则会乱码。这里新添加的 60 号GBK 字库就是使用的 50 * 50 的点阵(0号字库的可选范围在 8 x 4 ~ 128 x 64 之间),也就是字库生成器的宽高为 50;
- 初始值就是指定文本控件要显示的内容。
下载工程,上电测试:
2.4 添加基础触控
这里摒弃了按钮效果,只设置页面切换功能,顺便还建立了主页面和后面几张背景之间的触控跳转关系:
如果出现触摸屏失灵的情况可以试着把从迪文开发者论坛里下载到的 DEMO 里的 CFG 文件拉出来扔到工程的 DWIN_SET 里重新配置一次看看(咱之前也有过失灵问题就是这么解决的):
PS:DEMO 里的 CFG 文件相当于出厂配置,没有特殊需求基本不用修改。如果一定要改可以参考对应型号的应用开发指南。
2.5 串口通信:RTC读取与修改
从之前的实际显示效果可以看出迪文屏里的 RTC 实际参数和软件上预览的 RTC 参数并不相同。这里利用串口重新配置一下 RTC 参数。在手册上找到关于 RTC 的配置方法:
使用串口助手发送配置指令 5A A5 0B 82 009C 5A A5 32 0A 01 0B 0C 0D 进行测试,将时间修改为 2050 年 10 月 1 日 11 时 12 分 13 秒:
年份没有显示,但是其他的都已经改过来了,所以指令应该是有效的:
迪文屏DMT12800K070_A2WTC踩坑实录(一)相关推荐
- iOS 入门开发踩坑实录
其实人生也没有什么道理可讲,但是我们不必丧气,还是要期待,人生有奇遇. 前言 苹果开发者:iOS Developer 最近因为工作需要要开始搞iOS了,简单记录下我收集和学习的过程. 学习资料准备 组 ...
- RIME(小狼毫)踩坑实录(常见问题)
目录 RIME(小狼毫)踩坑实录 适合谁使用 配置文件规则 文件目录 命名格式 yaml语法 踩坑 配置微软双拼 增加词典 GUI方式(不推荐) 编写yaml文件方式 符号上屏 总结 RIME(小狼毫 ...
- JAVA发布栅格图层_基于 WebGL实现自定义栅格图层踩坑实录
以下内容转载自totoro的文章<WebGL-Y轴翻转踩坑实录> 作者:totoro 链接:blog.totoroxiao.com/webgl-flipY- 来源:blog.totorox ...
- 22、T5L 迪文屏 C51开发之Hello World例程
T5L 迪文屏 C51开发之Hello World例程 1.写在前面 2.例程功能简介 3.GUI界面设计 4.C51代码设计 1.写在前面 前面已经介绍了如何使用DGUS Tool软件来进行迪文 ...
- 30、T5L 迪文屏 C51开发之 ADC模数转换
T5L 迪文屏 C51开发之 ADC模数转换 1.介绍 2.例程功能介绍 3.GUI界面设计 4.C51程序设计 1.介绍 T5L 芯片内部的 ADC 模数转换外设,有一点需要注意的是此 ADC ...
- Win 10 + Ubuntu 18.04 双系统安装与深度学习环境配置安装踩坑实录(上篇)
Win 10 + Ubuntu 18.04 双系统安装与深度学习环境配置安装踩坑实录(上篇) 折腾了两三天总算顺利在电脑上完成了装x的双系统安装,一路走来还比较顺利,主要在ubuntu的显卡设置上躺了 ...
- PAT乙级题库踩坑实录
PAT乙级题库踩坑实录 [截止2021.7.28乙级题库已经全部AC] 题目名称: 1030 完美数列 (25 分) 测试点3踩坑 每次取m后,不用从m后第一个元素开始判断是否大于mp,直接从m后第m ...
- 1、迪文屏基于T5L_C51开发手势6宫格解锁
演示视频 1.概述 基于迪文屏DMG32240C028-03WTC屏的滑动手势6宫格解锁功能,该功能运用了触摸屏状态读取和坐标读取的功能(系统变量接口0x0016),绘图功能,需要配合变量图标显示等基 ...
- 分享:STM32与迪文屏交互,轻松实现一些简单的功能!
最近,托朋友用STM32F103评估板和迪文屏做了交互(@田),没写多少代码,就实现了一些简单常用的功能,还是很简单的!今天跟大家分享一下: 一.评估板使用说明 1.功能 图1:整体效果图 图2:MC ...
- 一种迪文屏软件在线升级方法
--来自迪文开发者论坛 开发自己的项目中遇到文件升级不方便的问题,因此设计了一个在线升级方案,可以有效解决如下问题: 1. 当产品已发出需要修复Bug时,无法在线修复. 2. 无法判断新老版本,当数据 ...
最新文章
- c/c++标准预定义宏
- 6、检查约束(CHECK)
- CVS的使用教程(转)
- 数据库系统工程师5天修炼_程序员逆袭之路,5年IT人生从电脑装机到技术大神,人生不认输...
- P2617 Dynamic Rankings
- [转载]基于TFS实践敏捷-工作项跟踪
- 如何做好项目的需求与业务调研?
- excel甘特图模板_项目管理工具之甘特图使用流程
- mysql 与紫金桥_现在常用的国产组态软件哪个更好用些?
- 简历上如何描述项目经验
- Apache Solr 建立 HBase 二级索引
- 微信小程序---wxss模板样式
- 人生如常,常亦无常,亦无进,茫然终身,谓常
- 完美世界控股集团发布全新互联网品牌88,推出首款个人免费商务邮箱
- 数据分析必看的oCPM/oCPC核心知识点
- ADC输入噪声面面观——噪声是利还是弊?
- 使用proteus仿真验证基尔霍夫定律
- 第三只眼与另一个世界
- 招商软文如何写:推广诱人的广告——文芳阁传媒有话说
- Unity3D 本地数据持久化记录存储