天天看點

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顯示資料的工程就介紹完畢了。