迪文屏幕T5UID3平台学习笔记一:环境搭建以及文本显示

最近在用迪文的串口屏幕,第一次使用,记录下,希望能够帮助到一些初学者。由于是第一次使用

迪文屏幕,因此,我就边学习边做记录。

一、环境搭建

我的屏幕是DMT10600T070_A2WT,分辨率:1024*600,供电:7~36V(迪文官网可查)

硬件环境:

1、一个7~36V的直流电源适配器,我买的12V的;

2、这款屏幕有6个串口,其中UART2和UART3是RS232电平(板子上有UT3232),UART4~UART7是TTL电平;其中UART2是DEBUG口和DWIN OS程序下载口,其他口需要配置方可使用。因此至少需要一根U转串口线(RS232电平),其它的则根据你的项目准备;

3、SD卡一张,2~16G,不要用32G的;

手册资料:

1、由于我的是T5UID3平台,因此看《T5UID3应用指南_V24.pdf》;

2、《迪文DGUS屏开发指南_V43.pdf》;

3、《基于T5 CPU的DWIN OS程序开发指南V21.pdf》

4、《C编译器使用说明V1.5.pdf》

5、看官方的视频:资料下载

6、《T5UID3 DGUSII 应用开发指南20190906.pdf》:这个资料很重要,拿到屏幕第一天一定要和淘宝客服联系,要你的屏幕详细的开发手册。

官网资料下载地址:ASIC设计、智能屏、IOT应用-迪文科技

官方论坛:迪文开发者论坛 - Powered by Discuz!从这几天使用来看,论坛回复效率还是很高的,基本问题都可以得到解决,点赞

软件环境:

1、DGUS_V7383,这个是用于GUI开发的(再高的版本貌似是只适用于T5L平台);

2、ts3字库生成器,这个是用于生成一些字库的(迪文已经把ASCII码字库生成了,就是0号字库,0_DWIN_ASC.HZK);

3、PS软件(我用的Photoshop_CS6.3510481888);

如果通过串口控制屏幕,不进行二次开发,以上软件就够了,如果需要二次开发,则需要如下软件(二选一):

1、汇编环境:OSBuild3026

2、C  环  境:DWIN C Compiler 1(说明,需要平台支持,查看自己硬件平台是否支持,或者联系客服);

PS:可以去官网获得最新的软件,或者从我的网盘下载:

链接:https://pan.baidu.com/s/1FlZMbbWnzQQe_JVS9TIxqQ 
提取码:urzp 
个人建议开发环境为win7-32位,然后低版本的DGUS工程,不要用高版本打开,可以重建工程

二 、下载说明

看《迪文DGUS屏开发指南_V43.pdf》的第2.1节

说明:

1、SD卡2~16G(貌似32G不行);

2、必须用手册提供的命令行格式化SD卡,右键格式化无效;

以上是GUI下载,二次程序下载,可以通过串口,也可以和GUI一起打包下载:

请查阅《基于T5 CPU的DWIN OS程序开发指南V21.pdf》和《C编译器使用说明V1.5.pdf》

PS:如果学习当中遇到如何问题,记得及时联系迪文淘宝客服;

三、开始学习

首先用PS画一个界面,然后下载显示:

1、注意图片分辨率和屏幕相同;

2、PS生产的位图必须是BMP格式,24位;

3、命令格式必须从0开始,我开始想把0预留(做以后的开机动画),命名的1,结果不显示,改成0,显示;

然后在界面上显示出自己想要的字符串:

1、由于我要显示的数据带有单位,这个时候有两种解决方案,数显+文本显示或者纯文本显示(这里主要看你的屏幕能不能把要显示的字符串放下);由于我要显示的数据是科学计数法,因此我全部用文本显示;

2、由于我只显示ASCII码,没有汉字,因此用0号字库就够了,无需新添加字库;这里注意如下:

     1)字体的大小通过设置点阵的X和Y来确定;(我开始以为要和字库取模时候的点阵大小对应,这里留下疑问?)

     2)字的点阵大小一定不能超过文本显示区大小,否则不能显示;(我在这里折腾了好久,才发现是这个问题)

  3、绑定变量:

 PS:

(1)注意变量地址范围:0x1000-0xFFFF;

(2)注意变量地址必须是偶数;(吐槽下,这两个点在不同的手册,真乱)

4、说明他们关联的含义:

其实就是把一个屏幕的显示区域与一个数组关联起来,同时指定显示字体编码方式。

也就是说,当你用这个字符显示时候,与下一个变量地址之间要留有你要的数组长度;

当显示遇到0结束符或者无法显示的字符,则显示结束(手册这么说的,我试验了下,感觉不对,遗留疑问2?)。

5、改变显示数据,有两种方法:

(1)通过串口发送命令:

 

 通过这些命令,就可以改变某个数组的数据,迪文屏幕会自动把数组数据刷新到屏幕上显示;

(2)通过二次开发

通过迪文提供的官方库接口,很方便就可以操作这些数组(你知道地址啊);

PS:请认真查看《C编译器使用说明V1.5.pdf》

 

 这里说下我的疑问3:

 看到没有,这里明确说了,用户程序不能有死循环,否则看门狗复位;

但是官方给的手册里面,汇编的main函数,是死循环的,再看C例子

看到么有,C例子是返回了的,难道main里面不能有while(1);

于是我进行了试验:

1、main里面加while(1),并没有导致看门狗复位;

2、main函数如果return,还是会被系统再次调用,但是定义的所有的全局变量都初始化了;

3、因此个人认为,这里应该是如下格式:

4、我发现我的屏幕有时候需要通过串口下载两遍程序,才能运行,不知道原因;

5、注意不要频繁读取变量:

<----------------------------------------------------2019.11.04--------------------------------------------------------------->

DGUS II上的COM2和COM4区别是什么?

首先,需要了解如下两点,再进行详细叙述。
1. DGUS II本身采用的主芯片是双核的T5 CPU,这个双核芯片的两个核分工不同,分别运行DGUS程序和DWIN OS程序。
2. 为了方便开发者的使用,在DGUS II产品的硬件上定义好了COM2和COM4的接口,COM2和COM4分别连接到运行DGUS的核和运行DWIN OS的核。

下面进行详细的说明:
1. T5 CPU中运行DGUS程序的核主要功能是从FLASH和SDRAM中读取文件和数据,并按照控件中封装好的功能和数据正确的显示在用户界面上。
2. T5 CPU中运行DWIN OS程序的核主要功能是运行开发者编译好的程序,通过逻辑判断和算法运算来实现更加复杂的控制功能,或者通过协议解析实现与客户端设备的正常通讯。
3. 由于运行DGUS的核需要不断的去读取文件和数据才能保证用户界面的正常显示,因此,系统定义了固定的DGUS运行周期:40ms(毫秒)。也就是说,CPU中的这个核每隔40ms就要将所有控件中的内容全部重新读取一遍。
4. DWIN OS是通过DWIN OS汇编语言编译的程序,只需按照程序顺序运行即可,没有固定的运行周期。

由此也可以看出,T5 CPU的两个核的运行是完全相互独立的,互相不会占用对方CPU的资源、不影响对方CPU的性能。通常用户只需使用DGUS II来开发人机交互的用户界面,因此只需使用COM2即可,如果有需要时,可选择使用COM4。

DWIN OS自己编的程序不是按运行周期循环运行的?只执行一次?
还是只要cpu有空闲就不断运行?那不是浪费功耗?

答:以前DGUS1的os是利用屏的一个内核,刷新gui和os程序。现在T5系列是双核的,OS专门一个核在运行,轮询的,功耗方面不用担心这个问题,本身T5芯片整体功耗就很低 。

<----------------------------------------------------2019.11.06--------------------------------------------------------------->

DWIN_OS 平台采用类似汇编程序的编写规范,在 DGUS 稳定的 GUI 平台下,方便用户针对自己的特殊需求快速,可靠地进行二次开发。 
随着迪文CPU主芯片更新,DWIN_OS随着不同开发平台版本不同有更新。所以各个平台设计的参考文档不同,请用户根据自己屏的型号进行文档的不同参考:

1、T02 ASIC平台(K600+模组,DGUS开发模式):
①、《迪文DGUS屏开发指南_V43.pdf》中的“5 DWIN OS用户程序设计(19-25页)”
②、《基于DWIN_OS指令的理解与应用.pdf 》是对文档①的OS指令详细用法说明文档,适合新用户去学习参考。
对应编程软件:DWIN_OS_Builder.exe (V1.6)
OS运行模式:80\120\200ms 周期刷新运行

2、T5 ASIC平台(DGUS II平台,T5UID1,T5UID2,T5UID3),
③、《基于T5 CPU的DWIN OS程序开发指南V21.pdf》
④、《基于迪文T5_OS汇编指令详解.pdf》是对文档③的OS指令详细用法说明文档,适合新用户去学习参考。
对应编程软件版本:OSBuild3.0.2.6
OS运行模式:实时运行(1 个 8051 核运行 GUI,1 个 8051 核在 DWIN OS 平台运行用户代码。 )

3、T5L ASIC平台(DGUS II平台)
⑤、《基于T5L CPU的DWIN OS程序开发指南V10.pdf》
⑥、《基于迪文T5L_OS汇编指令详解.pdf》是对文档⑤的OS指令详细用法说明文档,适合新用户去学习参考。
对应编程软件版本:OSBuild3.0.2.6
OS运行模式:实时运行(1 个 8051 核运行 GUI,1 个 8051 核在 DWIN OS 平台运行用户代码。 )

上述介绍中的“2”和“3”中,T5L_OS汇编文档和T5_OS大部分一样,主要区别:串口波特率计算的os指令不一样

2019/09.17更新记录说明:
《基于迪文T5L/T5_OS汇编指令详解.pdf》将《基于T5L/T5 CPU的DWIN OS程序开发指南》中的一些DGUSII寄存器、存储器等说明全部编入到了后面章节,用户无需再使用两个文档进行切换查看。

<----------------------------------------------------2019.11.08--------------------------------------------------------------->

解开了我的疑惑1,OS程序架构为:

int main(void)

{

       //初始化

     。。。。。。

      //

     while(1){

     }

}

RAM地址分配:

 PS:地址不必对其到word,每个地址两个字节;

解决疑问二:字体大小确实和取模时候字体大小有关,只不过0号字体已经包括了大部分点阵字体;

变量地址和描述地址:

 说的很清楚了,我们可以通过改变显示控件的描述符,去动态改变我们要实现的效果(当描述指针为0xFFFF,则表示描述符存在FLASH里面,没有复制到RAM中,因为我们不需要动态改变描述符,减少RAM使用)。

<--------------------------------------------------------------------------2021.006.14----------------------------------------------------------------------------->

一、空间是否可以重叠

显示控件可以重叠,触控控件除滑动翻页外都不可以重叠

二、宏定义后面不能有中文注释(DWIN OS C v1.1.0.7)

三、struct是四字节对齐,不支持#pragma pack   ,不支持bool (DWIN OS C v1.1.0.7)

四、指令第三个参数范围错误,数组有汉子,就报这个错误!(DWIN OS C v1.1.0.7)

五、float类型不是IEEE754标准吧?下面代码执行的是红色语句。

六、DMT10600T070_A2WT屏幕一个BUG

屏幕型号:DMT10600T070_A2WT
软件平台:DGUS_V7383和DWIN C Compiler 1.1.0.7
运用串口3来通信。
(PS:我使用OS来检测的,不是用命令)
首先来说下我要的功能,就是有个按钮,我要得到这个按钮的按下和抬起动作,按下我打开某个开关,抬起,则关闭某个开关。
看了下手册,用触摸屏按压同步状态返回数据控件失效这个控件很容易实现,但是这个控件有问题,具体看我的
另外一篇帖子:C代码超过18K,触摸屏按压同步状态返回数据控件失效,总之就是在代码量大的时候,这个控件失效了。
因此我用的下面方法实现:按键值返回+0x0016地址处的屏幕状态,功能实现了,测试中发现一个BUG,屏幕上电启动短时间内
第一次按这个按钮,在手指没有抬起的时候,屏幕会返回抬起状态,之后再按正常;还有开机一段时间后,第一按就没有问题;
不是我程序Bug。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值