一 前言
手頭有一款閑置串口屏,其型號為,是一款7寸800*480分辨率的電容觸摸屏。這款屏幕是支持6~36V供電的,自帶3個串口輸出,分別是UART2,UART4,UART5。其中UART2和UART4是RS232接口的,UART2也作為系統(tǒng)默認的調(diào)試串口,UART5是RS485接口的,但UART4和UART5都需要對系統(tǒng)的OS核做修改才能使用。迪文的資料較為混亂,花費了大量的時間研究。
首先:迪文芯片分為T5和T5L系列,并不兼容,在T5L內(nèi)同時分為T5L0T5L1T5L2,但在官網(wǎng)最新的<迪文 T5L ASIC 應(yīng)用開發(fā)指南.pdf>版本為V1.1,這一參考資料中,僅描述了T5L1以及T5L2系列,這個區(qū)別主要是屏幕顯示分辨率和存儲扇區(qū)以及單個文件大小的限制方面有區(qū)別。
通過查看迪文給出的手冊得知此款屏幕采用的迪文自研的T5L0芯片,但不知為何手上這款雖然型號相同,但在程序更新時顯示的則是T5L1,與手冊標(biāo)注并不相同。但在開發(fā)過程中選擇T5L0或是T5L1沒有區(qū)別,也可能是沒有達到等級的分水嶺。
其次:如手冊所說,T5L是單芯雙核,指的是芯片內(nèi)部是兩個單獨的8051核心,分別是GUI核和OS核,兩個核心對應(yīng)的功能不同,開發(fā)方式也截然不同,這點需要特別注意。GUI核運行迪文自己的DGUS Ⅱ系統(tǒng),使用迪文推出的上位機軟件進行開發(fā),OS核可以由用戶自己開發(fā)功能或使用迪文提供的基本功能示例,但遇見復(fù)雜情況還是無法滿足需求,需要用戶自己編寫處理邏輯,有兩種開發(fā)方式可選:一是標(biāo)準(zhǔn)C代碼,二是匯編指令開發(fā),可以采用KEIL或迪文推出的< DWIN C Complier>進行8051內(nèi)核OS代碼的開發(fā),KEIL開發(fā)需要安裝迪文提供的驅(qū)動包< KEIL AGDI T5 >。
二 需求
使用這款屏幕的目標(biāo)是:
①作為主機進行ModBus通信
②讀取指定從機數(shù)據(jù)并顯示到屏幕中的指定變量
③支持下發(fā)參數(shù)至從機ModBus寄存器
④使用RS485接口
從需求來看,需要做的事情可以分為兩個部分,一是UI數(shù)據(jù)的顯示,迪文的DGUS Ⅱ采用的方式是用事先設(shè)計好的圖片做背景,所有的操作均以圖片為基礎(chǔ)進行布局、顯示和觸摸,這就需要提前設(shè)計好整個系統(tǒng)的UI原型和交互流程。二則是ModBus數(shù)據(jù)交互,數(shù)據(jù)交互已經(jīng)超出了GUI核的處理范圍,所以需要進行OS核的代碼編寫,因為ModBus已經(jīng)是廣泛的工業(yè)協(xié)議,所以迪文已經(jīng)提前編譯了各個串口的ModBus協(xié)議棧程序了,用戶需要替換對應(yīng)的DWINOS程序以及按要求下載指令配置文件即可。
三 實施
1. UI數(shù)據(jù)顯示
素材準(zhǔn)備
如上所說,整個系統(tǒng)流程是以圖片為導(dǎo)向的,所以在設(shè)計系統(tǒng)前即應(yīng)該畫出設(shè)計原型,這里選擇的800*480分辨率的屏幕,所以在圖片尺寸上也應(yīng)設(shè)置相同尺寸,但在圖片的格式上迪文做了一些限制,需要24bit色深的bmp或jpgjpeg格式,Windows可以在圖片上右擊->屬性->詳細信息中看到圖片的分辨率和大小以及色深,如果圖片不滿足要求的話下載進屏幕會導(dǎo)致屏幕出現(xiàn)黑屏或其他無法正常顯示的情況。
當(dāng)確定所有的圖片格式后,需要將圖片統(tǒng)一按0x[_xx]的序號進行命名,序號后的漢字不做要求,可有可無,這里為了方便對圖片做區(qū)分,選擇添加。
圖片準(zhǔn)備好后, DGUS Ⅱ不支持直接在文件系統(tǒng)中以圖片格式(bmp/jpg)顯示背景,需要將其轉(zhuǎn)換為ICL文件格式。這里使用的DGUS Ⅱ軟件自帶的轉(zhuǎn)換工具即可。
這里引出來在開發(fā)中遇見的一個大坑點,就是關(guān)于迪文DGUS Ⅱ文件系統(tǒng)索引,DGUS Ⅱ?qū)⑾到y(tǒng)flash分為多個扇區(qū),每個扇區(qū)的大小是256K,扇區(qū)號從0開始,所有的需要存入屏幕flash的文件都需要用戶手動來確定扇區(qū)大小,其中0號為默認的系統(tǒng)字庫,使用軟件默認生成的大小為3011K,按256K一個扇區(qū)來算,0號字庫占據(jù)12個扇區(qū),緊接著是系統(tǒng)配置的觸摸文件13、用于數(shù)據(jù)顯示的數(shù)據(jù)文件14以及系統(tǒng)配置文件22。
這三個文件是系統(tǒng)默認生成的,在文件選項卡-單擊生成即可,但請注意,當(dāng)13文件超過32K后無法使用B0指令關(guān)閉指定的觸控控件, 并且22文件系統(tǒng)開機是默認不加載的,需要在CFG文件中指定開機加載22文件功能。官方默認的扇區(qū)號是有64個,除了這1~14,22號扇區(qū)用戶不能使用之外,其余的用戶都可以使用,官方有推薦的劃分表,具體可以查看手冊。
接下來講需要用戶準(zhǔn)備的,首先就是背景圖文件,其次是圖標(biāo)文件,如果你的工程內(nèi)不需要顯示圖標(biāo)也可以不準(zhǔn)備,再次注意,在官方的歷程中推薦的背景文件扇區(qū)號是32,圖標(biāo)文件扇區(qū)號是48,因為他們歷程中使用的屏幕內(nèi)置FLASH大小是16M的,而手頭這一款屏幕內(nèi)置FLASH只有8M,當(dāng)按照官方推進的扇區(qū)號進行開發(fā)時出現(xiàn)字庫亂碼現(xiàn)象,幾經(jīng)排查無果,詢問技術(shù)支持得知FLASH大小不夠,能用的扇區(qū)只有32個,導(dǎo)致覆蓋掉了FLASH前段的字庫文件照成了顯示異常,由于圖片ICL與圖標(biāo)ICL占據(jù)不大,將其調(diào)整為23/24號,調(diào)整了默認圖片索引后需要在CFG文件中修改圖片起始扇區(qū)號,最終問題得到解決。
當(dāng)素材準(zhǔn)備完畢后打開DGUS Ⅱ軟件,選擇新建工程,選擇適合自己的屏幕分辨率,進入工程后,點擊主頁左側(cè)?號,進行素材的導(dǎo)入,可一次導(dǎo)入多張圖片。
當(dāng)導(dǎo)入圖片過后,即可在圖片上繪制數(shù)據(jù)顯示位置和顯示方式等,當(dāng)前示例中,假設(shè)數(shù)據(jù)為數(shù)值類型,點擊文本顯示->數(shù)據(jù)變量,在設(shè)定的位置拖放數(shù)據(jù)顯示區(qū)域大小即可。
將需要顯示的數(shù)據(jù)按需求放置完成后,即需要對每個數(shù)據(jù)變量進行單獨設(shè)置,這就引出了DGUS Ⅱ系統(tǒng)中另一個坑點-<變量地址>,是的,DGUS Ⅱ系統(tǒng)中需要用戶來確認每一個控件的大小和地址,每一種控件的大小并不一致,為了避免麻煩和后期隱患,所以在很多的教程中都是建議直接間隔0x10,例如:
在這里要注意變量類型,需要與最終的呈現(xiàn)效果一致,在這里筆者需要顯示浮點數(shù)并帶一位小數(shù),所以將其設(shè)置為單精度浮點數(shù)即可。
當(dāng)設(shè)置完成后,可以在顯示選項卡-從當(dāng)前頁開始預(yù)覽即可看到效果,但請注意軟件內(nèi)存在bug,不能完全模擬出實際效果,部分情況下當(dāng)確認設(shè)置沒有問題之后,可以將其下載到串口屏內(nèi)查看,配置文件/ICL/字庫文件可以通過軟件內(nèi)的串口下載。
但注意串口下載工具不能下載OS程序/CFG文件以及內(nèi)核文件,這類文件均只能使用SD卡進行離線更新。SD卡下載需要對卡進行特殊處理且下載時具有特定的命名規(guī)則,這里建議最好是按他這個格式要求格式化一次,后續(xù)可以使用Windows的快速格式化功能,直接使用快速格式化有可能屏幕是無法正常讀取的。
篇幅有限,具體ModBus部分等待后期文章展開。
參考資料:
DMT80600C080_01W (dwin-global.com)
迪文屏幕T5L平臺學(xué)習(xí)筆記零:KEIL環(huán)境搭建-CSDN博客