找回密码
 立即注册
查看: 112|回复: 0

AI单片机与淘晶驰串口屏通讯例程之02【HMI数据处理】

[复制链接]
  • 打卡等级:偶尔看看I
  • 打卡总天数:17
  • 最近打卡:2025-05-06 10:09:39

29

主题

10

回帖

275

积分

中级会员

积分
275
发表于 7 天前 | 显示全部楼层 |阅读模式
大家好,我是『芯知识学堂』的SingleYork,


今天笔者要跟大家分享的是淘晶驰串口屏串口通讯是如何实现。

通常,我们在新建完HMI工程后,Program.s文件中的内容默认如下图所示:

00-1.png

串口通讯协议默认是“字符串指令协议”,波特率默认是9600,

笔者要给大家分享的是“主动解析协议”,波特率使用的是115200,

至于默认的屏上电输出信息到串口,笔者也是没有用到,所以直接屏蔽了:

00-2.png

接下来,我们在Y0输出的按键弹起事件中添加如下代码,

改代码的作用就是当Y0上的控件b0按下并弹起后,

通过串口发送一串十六进制数:5A A5 06 83 00 20 01 00 01。

关于这一串数据的含义如下:

5A  A5 -- 帧头
06     -- 数据长度(从该位开始到最后所有数据字节数,不包含该位)
83     -- 功能码
00 20  -- 寄存器起始地址
01    -- 寄存器个数
00 01  -- 寄存器值

01.png

关于printh的作用如下:

01-2.png

按照同样的方式,添加b1-b5这五个控件用于控制Y1-Y5的输出,

只是每个控件通过串口发送的数据要做一些区分,最后一个字节分别为:02、03、04、05、06,即:

控制Y1发送:5A A5 06 83 00 20 01 00 02
控制Y2发送:5A A5 06 83 00 20 01 00 03
控制Y3发送:5A A5 06 83 00 20 01 00 04
控制Y4发送:5A A5 06 83 00 20 01 00 05
控制Y5发送:5A A5 06 83 00 20 01 00 06

接下来,我们放置一个定时器控件,设置定时的时间为200ms,

在定时器时间当中添加代码:printh 5A A5 06 83 00 00 01 00 01,

即:每200ms发送一串十六进制数:5A A5 06 83 00 00 01 00 01。

02.png

接下来,我们解锁一下之前添加的数字键盘:

03.png

我什么要解锁这个数字键盘呢,是因为笔者想在按下键盘的OK键(即键盘输入完成)时,

将修改过的数字控件n0(定时闪烁)的值通过串口发送给单片机,之前笔者也提到,

想要实现这个功能其实是有很多方式,笔者使用的只是其中之一,也许大家会有更好的方式来实现。

04.png

这里又用到了另外一个新的指令“prints”,关于该指令的用法如下:

04-2.png

接下来,我们再放置一个定时器,设置定时时间为50ms,用来接收并解析串口屏收到的串口数据:

05.png

在Program.s文件中,我们再添加如下一些变量,在串口数据解析时需要用到:

06.png

接下来,我们在定时器1的中断事件中添加如下一些代码,

实现数据帧头的校验、数据长度校验、以及数据解析等。

07.png

代码1:上述绿色部分主要是对串口数据收发帧格式的说明

08.png

代码2:帧头5A A5校验、数据长度校验、和校验、数据解析

09.png

代码3:输入状态按位解析数据及图标显示处理

10.png

代码4:输入状态图标显示处理

11.png

代码5:输出状态按位解析数据及图标显示处理

12.png

代码6:输出状态图标显示处理

至此,数据收发部分的功能我们都实现了,我们可以用模拟器来调试,

根据协议来收发数据,看试下是否能按照我们的设定的功能来实现。

12-1.png

在调试模式下,笔者是通过虚拟串口及串口助手来收发数据,

当然咯,大家也可以直接在模拟器的指令输入框中输出Hex格式的指令,

笔者之所以使用串口助手,是因为在串口助手中计算和校验是比较方便的。

13.png

如上图所示,在进入调试模式时,

模拟器定时200ms向串口助手发送一串指令:5A A5 06 83 00 00 01 00 01,

按照通讯协议,通过串口助手发送一串16进制数:5A A5 0A 82 00 0F 00 0F 00 0F FF FF B6,

可以看到模拟上输入输出状态及其他几个参数也都能显示成功,说明我们的通讯是OK的。

接下来我们在测试一下修改参数“定时闪烁”的值,看下是否能正常:

14.png

可以看到,当我们将“定时闪烁”的值设定为100时,

模拟器给串口助手下发的值是0x6400,是不是感觉有点不对劲?

难道不应该是0x0064吗?这里就需要特别注意一下“prints”这个指令了,

它在发送数值型变量的时候,数据是小端模式,即:低字节在前。

模拟调试没问题后,我们就可以输出生产文件,然后通过TF卡下载到屏中了:

15.png

16.png

所使用的TF卡最大不要超过32G,且需要将TF卡格式化为FAT32格式:

17.png

另外,TF卡中最好不要有其他的文件,

只保留我们需要用于下载到屏中的文件“单片机与淘晶驰串口屏通讯例程.tft”,

然后在屏未上电的情况下,将TF卡先插入屏的TF卡槽,

然后给屏上电,就可以开始给屏下载工程了。

18.png

至此,关于HMI工程的数据处理部分就介绍完了,

使用模拟器调试也是非常的方便,感兴趣的小伙伴们可以自己动手去试下,

下一讲笔者将给大家分享一下单片机部分的代码,即:STC单片机与淘晶驰串口屏通讯例程之03【单片机程序解析】。


本帖被以下淘专辑推荐:

回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-12 14:23 , Processed in 0.131145 second(s), 49 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表