天天看点

FPGA之串口收发字符串之(四)——串口屏USART_HMI介绍

之前对串口各模块的设计都做了相关介绍。这里介绍串口屏的相关知识。

本次项目使用的串口屏型号是陶晶驰串口屏TJC3224T024_011,这个型号的串口屏的资料在官网可以找到。本文抛转引玉,简单介绍以便在本工程中更好的应用。

下图是该串口屏的实物图:

FPGA之串口收发字符串之(四)——串口屏USART_HMI介绍

一般地,使用单片机或者嵌入式MCU控制串口屏,都会用到串口,同样地,在FPGA中实现也是类似,不过稍微复杂,具体代码设计过程中有以下问题需要注意。

Q1:FPGA向HMI发送命令,要使HMI中的某个文本控件显示相应的数据,该如何操作呢?

ASR:根据HMI指令集,串口屏的指令数据为字符串数据格式,如文本控件t0,其内容属性txt,t0.txt表示文本控件的内容,当要改变t0的内容时,需要发送以下字符串命令:t0.txt="123"(整个指令就是一个字符串),当时用单片机串口发送时,需要执行以下程序,如:

Serial.print("t0.txt=\"你好\"");

Serial.write(hexEND,3);

从中清楚看到,整条代码为一条字符串数据,而其属性txt属于字符串属性,所以要加上双引号,故有以上写法——整个括号内由两对双引号。

在单片机C语言中," "表征这是一条字符串数据,并不需要考虑使用串口发送时是否会发送",因为在串口助手中,当以文本模式发送数据时,是默认不用用户自己加入" "的,同理在发送字符串时,总是会冠以" ",如使用sprintf,或者直接使用串口发送函数直接发送Serial.print(“a good boy!”)。

Q2:前面介绍了HMI的字符串指令,所以,使用FPGA发送字符串时是否要把最外面的双引号(表征字符串属性的双引号)发送出去呢?

回答:不需要,这只是表征这条数据是字符串数据,实际发送中不需要将其作为有效字符发送。同理,字符串结尾标识\0也不需要对外发送。故,如果需要在文本控件t0中显示123,只需要发送t0.txt=”123””共12个字符;当然,该类型串口屏的结束指令命令是发送HEX的FF FF FF,所以,发送完第一条指令后,在其后再发送FF FF FF即可(16进制,3个)。所以用户书写指令代码时不必考虑过多,而只需关注所发送的字符串的内容即可。

NOTE:数据指令和结束指令最好间隔开,因为这实际是两条指令,在使用ascii码表示时,两条指令可能会合并成一条数据,即t0.txt=”123””FF FF FF,这样理解的话,则指令格式不完全(没有明确的指令结束标志,当然,如果接受到第二个’”就自动识别为第一个指令那就ok,但实际并不清楚)。

整个串口屏的verilog代码设计,就是简单地通过串口发送指令在文本控件中显示相应的数据。有关串口屏幕内容的上位机设计,比较简单,这里不做过多介绍,网上可以找到教程。

到此,整个FPGA控制USART_HMI显示数据的工程就介绍完毕了。