文章目錄
- 前言
- 一、資源介紹
- 二、配置程序
- 添加littlevgl2rtt軟體包
- 分析程序
- 總結
前言
隨著物聯網、智能家居、智能控制等行業的極速發展,小而美的且反應迅速且成本低的,模塊化,定制化的嵌入式系統的需求越來越大,其中降低使用要求,提高用戶體驗,人機互動是一個非常好的方法,所以本文記錄的是除錯rtthread+lcd+littlevgl GUI的記錄及流程
一、資源介紹
硬體是自行畫的PCB板,資源如下
- MCU:STM32F407ZGT6
- LCD:3.2寸320*240解析度,驅動芯片:ILI9341, 引腳除了RESET和背光控制引腳,其他引腳連接均和正點原子的STM32F407探索者開發板兼容
- 使用FSMC介面驅動
軟體是使用rtthread studio1.1.5版本
二、配置程序
添加littlevgl2rtt軟體包

配置如下
其中DPI計算方法:
用勾股定理,比如5寸屏(螢屏的寸數就是對角線的長度),1080*1920解析度,dpi就是sqrt(1080^2 + 1920^2) / 5=440,
所以我的計算得到是125

LCD螢屏配置及驅動注冊請參考上一篇
RT-Thread學習筆記系列之LCD驅動及emwin示例(2)
保存編譯無誤下載螢屏卻沒有任何顯示,LCD螢屏是驗證過的,這個軟體包也有很多人使用過(頭大,沒辦法只能一步步分析了)
分析程序
-
方法:
- 先參考別人使用這個軟體包的例子和程序
- 對比兩者之間的區別
- 參考官方的demo和檔案介紹
-
查找程序:
- 這個軟體包作者是在RT1050 fire的板子,lcd為800*480進行測驗
- 官方有使用ART-PI開發板進行直播使用過
- 論壇也有很多小伙伴也是直接使用ART-PI開發板直接使用BSP驅動成功過
- 我手上有ART-PI開發板但是螢屏介面不兼容無法直接驗證,既然別人一步成功,那卻別肯定是驅動或者介面方面的問題,自己直接創建一個art-pi模板的BSP工程,使能LCD驅動,對比兩者的區別,再對比介面的區別,任何螢屏顯示底層無非都是打點,重繪,顯示打開這幾個步驟,所以最終找到了區別如下:
-
區別
- ART-PI的LCD驅動的結構體有使用到官方對影像定義的rt_device_graphic_info結構體并分配了記憶體給指標framebuffer,所以該指標不為空,而我的LCD驅動是沒有使用
- littlevgl2rtt軟體包中得介面驅動檔案littlevgl2rtt.c中初始化函式littlevgl2rtt_init對重繪回呼函式是有做區分的

- 官方的示例檔案中的介紹

-重繪函式lcd_fb_flush和lcd_flush的區別
static void lcd_fb_flush(lv_disp_drv_t *disp_drv, const lv_area_t *area, lv_color_t *color_p)
{
int x1, x2, y1, y2;
.
.//中間代碼省略
.
rt_device_control(device, RTGRAPHIC_CTRL_RECT_UPDATE, &rect_info);
lv_disp_flush_ready(disp_drv);
}
static void lcd_flush(lv_disp_drv_t *disp_drv, const lv_area_t *area, lv_color_t *color_p)
{
int x1, x2, y1, y2;
.
.//中間代碼省略
.
//TODO color convert
for (y = act_y1; y <= act_y2; y++)
{
rt_graphix_ops(device)->blit_line((const char *)color_p, act_x1, y, act_x2 - act_x1 + 1);
color_p += (x2 - x1 + 1);
}
}
發現我的驅動使用的重繪函式沒有lv_disp_flush_ready(disp_drv);沒有通知圖形庫,在lcd_flush函式的最后面加上這句就好了,然后編譯下載

顯示正常了,說明驅動已經成功,但是每個視窗太大了(按照計算方法確實是125,可能長寬比原因littlevgl認為這樣是最佳的顯示把),調節一下DPI為80(本人不斷的調節認為比較好的一個數值),顯示比較合理

總結
- 遇到問題不要灰心,不要放棄,白嫖黨是沒有競爭力的,成為有競爭力的人是你能去解決問題
- 如果有現成的例子,對比法是簡單有消的方法
- 先要清楚原理,就像LCD螢屏底層就是打點,打開顯示等幾個步驟,可以通過斷點或log判斷是否有執行
- 多看官方的檔案和demo,官方的一般都是比較嚴格可靠的,細心點查找避免忽略重要的資訊
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/226951.html
標籤:其他
上一篇:2020-11-22
