RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Hi3861移植LVGL教程

嵌入式Share ? 來源:嵌入式Share ? 2023-05-18 09:23 ? 次閱讀

一、前言

給 Hi3861 適配了硬件 spi ,master 模式下最高 spi 速率可以達(dá)到 40M,用來驅(qū)動(dòng) oled 屏幕。適配過程遇到了一個(gè)芯片bug,困擾了很久,clk 管腳驅(qū)動(dòng)能力差,需要外接一個(gè)上拉電阻才能正常運(yùn)行。適配完成移植 lvgl 8,分享適配的過程。

47bba072-f519-11ed-90ce-dac502259ad0.png

二、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)遍歷,簡單!

47d5fce2-f519-11ed-90ce-dac502259ad0.png

因?yàn)橹挥幸粋€(gè)顯示,沒有適配輸入以及文件系統(tǒng),這兩個(gè) port 的適配之后再做。

2.2 頭文件適配

因?yàn)槭?oled,只有單色,所以顏色我選了最低8 位色,同時(shí)將 lvgl 字體調(diào)整為 8 位。

除此之外就是調(diào)整 lv_conf.h 里面的屏幕寬度了,其他的可以再后續(xù)修改。

47f074dc-f519-11ed-90ce-dac502259ad0.png

2.3 liteos 線程適配

首先適配 lvgl tick 心跳,創(chuàng)建一個(gè)軟件定時(shí)器,1ms 自加 1:

480d1bd2-f519-11ed-90ce-dac502259ad0.png

再創(chuàng)建一個(gè)軟件定時(shí)器周期性的調(diào)用 lvgl 的 周期處理函數(shù):

48270e02-f519-11ed-90ce-dac502259ad0.png

前面說的我的 oled 的 spi 硬件刷新在單獨(dú)的線程里面執(zhí)行,中斷回調(diào)的方式,每次刷新256字節(jié),刷新器件,刷新線程會(huì)被掛起,釋放 cpu 資源,線程設(shè)計(jì)如下:

483d8574-f519-11ed-90ce-dac502259ad0.png

三、簡單的 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)建好的按鍵。

485f1ad6-f519-11ed-90ce-dac502259ad0.png

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 芯片
    +關(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)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    中文編程鴻蒙Hi3861開發(fā)基礎(chǔ)案例之-04八段數(shù)碼管

    中文編程鴻蒙Hi3861開發(fā)控制八段數(shù)碼管
    的頭像 發(fā)表于 05-11 11:47 ?2876次閱讀
    中文編程鴻蒙<b class='flag-5'>Hi3861</b>開發(fā)基礎(chǔ)案例之-04八段數(shù)碼管

    小熊派Hi3861獲取mpu6050數(shù)據(jù)在oled屏幕中顯示

    小熊派Hi3861獲取mpu6050數(shù)據(jù)在oled屏幕中顯示
    的頭像 發(fā)表于 08-14 14:39 ?2348次閱讀
    小熊派<b class='flag-5'>Hi3861</b>獲取mpu6050數(shù)據(jù)在oled屏幕中顯示

    鴻蒙OpenHarmony【輕量系統(tǒng) 燒錄】 (基于Hi3861開發(fā)板)

    針對(duì)Hi3861開發(fā)板,除了DevEco Device Tool
    的頭像 發(fā)表于 05-10 16:59 ?1122次閱讀
    鴻蒙OpenHarmony【輕量系統(tǒng) 燒錄】 (基于<b class='flag-5'>Hi3861</b>開發(fā)板)

    hi3861如何在移植的main.c中初始化kernel和系統(tǒng)

    代燒友提問:hi3861的vendor代碼中找不到如何從flashboot的main.c文件啟動(dòng)內(nèi)核以及系統(tǒng)的函數(shù)和過程。無法從hi3861代碼中得到移植啟示。其中boot_kernel函數(shù)中使用了
    發(fā)表于 11-19 12:03

    鴻蒙OpenHarmony-HI3861L移植教程

    HI3861有兩款單片機(jī)一個(gè)是HI3861,一個(gè)是HI3861L,HI3861L是HI3861的低功耗版本
    發(fā)表于 08-30 19:50

    HarmonyOS Hi3861開發(fā)套件-編程速查

    針對(duì)Hi3861開發(fā)套件整理的編程速查框圖,有需要的小伙伴可以自行下載查看。
    發(fā)表于 10-19 16:54 ?86次下載
    HarmonyOS <b class='flag-5'>Hi3861</b>開發(fā)套件-編程速查

    HarmonyOS Hi3861 WiFi操作 熱點(diǎn)鏈接

    之前我們使用Hi3861的時(shí)候,是使用AT指令連接到WiFi熱點(diǎn)的。但是很多時(shí)候,我們需要實(shí)現(xiàn)開機(jī)后自動(dòng)連接到某個(gè)熱點(diǎn),光靠AT指令不行。Hi3861為我們提供了WiFi操作的相關(guān)API,方便我們編寫代碼,實(shí)現(xiàn)熱點(diǎn)連接。
    發(fā)表于 10-21 16:44 ?69次下載
    HarmonyOS <b class='flag-5'>Hi3861</b> WiFi操作 熱點(diǎn)鏈接

    基于鴻蒙系統(tǒng)+Hi3861的WiFi小車詳解

    我們得有一套WiFi小車套件,其實(shí)也是Hi3861加上電機(jī)、循跡模塊、超聲波等模塊。
    的頭像 發(fā)表于 11-01 09:41 ?7687次閱讀

    Hi3861其他驅(qū)動(dòng)的開發(fā)示例

    摘要:本文簡單介紹Hi3861其他驅(qū)動(dòng)的開發(fā)示例、包括PWM、SPI、SDIO等。
    的頭像 發(fā)表于 03-02 18:04 ?3500次閱讀
    <b class='flag-5'>Hi3861</b>其他驅(qū)動(dòng)的開發(fā)示例

    基于鴻蒙系統(tǒng)+Hi3861的WiFi小車開發(fā)

    本文簡單介紹鴻蒙系統(tǒng) + Hi3861 的WiFi小車開發(fā),適用于開發(fā)潤和Hi3861開發(fā)板的小伙伴們。
    的頭像 發(fā)表于 03-03 09:31 ?5684次閱讀
    基于鴻蒙系統(tǒng)+<b class='flag-5'>Hi3861</b>的WiFi小車開發(fā)

    Hi3861編譯燒錄更快捷

    Windows環(huán)境開發(fā)Hi3861,顯著提升編譯、燒錄效率,同時(shí)還帶來了更多實(shí)用的功能及模板,為廣大開發(fā)者朋友帶來更加高效、便捷的開發(fā)體驗(yàn)。接下來,讓我們來看看吧! 純Windows環(huán)境開發(fā)Hi3861,編譯燒錄
    的頭像 發(fā)表于 02-11 13:25 ?929次閱讀

    中文編程鴻蒙Hi3861開發(fā)基礎(chǔ)案例之-01創(chuàng)建新工程

    中文編程鴻蒙Hi3861開發(fā)創(chuàng)建新工程
    的頭像 發(fā)表于 05-11 09:53 ?2737次閱讀
    中文編程鴻蒙<b class='flag-5'>Hi3861</b>開發(fā)基礎(chǔ)案例之-01創(chuàng)建新工程

    中文編程鴻蒙Hi3861開發(fā)基礎(chǔ)案例之-02LED燈控制

    中文編程鴻蒙Hi3861開發(fā)控制LED燈
    的頭像 發(fā)表于 05-11 09:54 ?2917次閱讀
    中文編程鴻蒙<b class='flag-5'>Hi3861</b>開發(fā)基礎(chǔ)案例之-02LED燈控制

    中文編程鴻蒙Hi3861開發(fā)基礎(chǔ)案例之-03交通紅綠燈

    中文編程鴻蒙Hi3861開發(fā)模擬交通紅綠燈亮與滅控制
    的頭像 發(fā)表于 05-11 11:27 ?2153次閱讀
    中文編程鴻蒙<b class='flag-5'>Hi3861</b>開發(fā)基礎(chǔ)案例之-03交通紅綠燈

    中文編程鴻蒙Hi3861開發(fā)基礎(chǔ)案例之-05按鍵檢測(cè)

    中文編程鴻蒙Hi3861開發(fā)對(duì)按鍵進(jìn)行輸入檢測(cè)
    的頭像 發(fā)表于 05-11 12:04 ?2962次閱讀
    中文編程鴻蒙<b class='flag-5'>Hi3861</b>開發(fā)基礎(chǔ)案例之-05按鍵檢測(cè)
    RM新时代网站-首页