一、前言
給 Hi3861 適配了硬件 spi ,master 模式下最高 spi 速率可以達(dá)到 40M,用來驅(qū)動(dòng) oled 屏幕。適配過程遇到了一個(gè)芯片bug,困擾了很久,clk 管腳驅(qū)動(dòng)能力差,需要外接一個(gè)上拉電阻才能正常運(yùn)行。適配完成移植 lvgl 8,分享適配的過程。
二、LVGL移植
上lvgl開源倉搞代碼,https://github.com/lvgl/lvgl
2.1 適配 Porting 層
關(guān)鍵點(diǎn)在于將 oled 的畫點(diǎn)函數(shù)和 lvgl 代碼 disp_flush 關(guān)聯(lián)起來。參考如下我的移植,此處 draw point 將畫點(diǎn)數(shù)據(jù)放到一個(gè)軟件 buff 里面不會(huì)刷新硬件,硬件的刷新我單獨(dú)創(chuàng)建一個(gè)線程干這活,所以使用 for 循環(huán)遍歷,簡單!
因?yàn)橹挥幸粋€(gè)顯示,沒有適配輸入以及文件系統(tǒng),這兩個(gè) port 的適配之后再做。
2.2 頭文件適配
因?yàn)槭?oled,只有單色,所以顏色我選了最低8 位色,同時(shí)將 lvgl 字體調(diào)整為 8 位。
除此之外就是調(diào)整 lv_conf.h 里面的屏幕寬度了,其他的可以再后續(xù)修改。
2.3 liteos 線程適配
首先適配 lvgl tick 心跳,創(chuàng)建一個(gè)軟件定時(shí)器,1ms 自加 1:
再創(chuàng)建一個(gè)軟件定時(shí)器周期性的調(diào)用 lvgl 的 周期處理函數(shù):
前面說的我的 oled 的 spi 硬件刷新在單獨(dú)的線程里面執(zhí)行,中斷回調(diào)的方式,每次刷新256字節(jié),刷新器件,刷新線程會(huì)被掛起,釋放 cpu 資源,線程設(shè)計(jì)如下:
三、簡單的 Demo
寫一個(gè)簡單的 buttom demo:
static void lvgl_ui_init(void) { static lv_style_t style; lv_style_init(&style); lv_style_set_radius(&style, 2); lv_style_set_outline_width(&style, 2); lv_style_set_outline_color(&style, lv_palette_main(LV_PALETTE_BLUE)); lv_style_set_outline_pad(&style, 0); lv_obj_t *bkg_obj = lv_obj_create(lv_scr_act()); /*創(chuàng)建 obj*/ lv_obj_set_style_bg_color(bkg_obj , lv_color_hex(0x0),0); lv_obj_set_pos(bkg_obj ,0, 0); lv_obj_set_size(bkg_obj, 128, 64); lv_obj_t *btn = lv_btn_create(lv_scr_act()); /*Add a button to the current screen*/ lv_obj_set_style_bg_color(btn , lv_color_hex(0x0),0); lv_obj_set_size(btn, 70, 24); /*Set its size*/ lv_obj_add_style(btn, &style, 0); lv_obj_center(btn); lv_obj_t * label = lv_label_create(btn); /*Add a label to the button*/ lv_label_set_text(label, "Button"); /*Set the labels text*/ } |
四、下載運(yùn)行
可以看到 oled 顯示創(chuàng)建好的按鍵。
審核編輯:湯梓紅
-
芯片
+關(guān)注
關(guān)注
455文章
50714瀏覽量
423119 -
上拉電阻
+關(guān)注
關(guān)注
5文章
359瀏覽量
30606 -
移植
+關(guān)注
關(guān)注
1文章
379瀏覽量
28124 -
Hi3861
+關(guān)注
關(guān)注
1文章
59瀏覽量
6489 -
LVGL
+關(guān)注
關(guān)注
1文章
83瀏覽量
2957
原文標(biāo)題:四、下載運(yùn)行
文章出處:【微信號(hào):嵌入式Share,微信公眾號(hào):嵌入式Share】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論