吴忠躺衫网络科技有限公司

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

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

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

RT-Thread驅(qū)動(dòng)開發(fā)指南進(jìn)階篇-動(dòng)手驅(qū)動(dòng)先楫未適配的外設(shè)LCD

RTThread物聯(lián)網(wǎng)操作系統(tǒng) ? 來源:RCSN嵌入式 ? 2024-02-25 11:04 ? 次閱讀

一、概述

經(jīng)過上一篇的《《RT-Thread設(shè)備驅(qū)動(dòng)開發(fā)指南》基礎(chǔ)篇--以先楫bsp的hwtimer設(shè)備為例》闡述,可以大致了解到RT-thread設(shè)備驅(qū)動(dòng)開發(fā)的方法步驟,開發(fā)指南中的進(jìn)階篇外設(shè)主要是比基礎(chǔ)篇外設(shè)復(fù)雜點(diǎn)的外設(shè)設(shè)備,分別是SDIO、Touch、LCD、sensor、MTD nor、MTD nand、脈沖編碼器、加解密設(shè)備、PM設(shè)備。

對(duì)于進(jìn)階篇的外設(shè),本文不對(duì)先楫已經(jīng)支持的進(jìn)階外設(shè)進(jìn)行闡述,而是進(jìn)行一次動(dòng)手實(shí)踐驅(qū)動(dòng)一個(gè)先楫尚未適配的驅(qū)動(dòng)外設(shè)-LCD,來更加深入開發(fā)RT-thread的設(shè)備驅(qū)動(dòng)。

來個(gè)效果:

在官方示例的wifi_web_camera_demo基礎(chǔ)上加上lcd驅(qū)動(dòng)顯示攝像頭

二、開發(fā)方法

(一)RT-thread的LCD驅(qū)動(dòng)框架介紹

LCD驅(qū)動(dòng),跟其他外設(shè)也類似,無非就是IO設(shè)備管理框架-->LCD設(shè)備驅(qū)動(dòng)框架->LCD設(shè)備驅(qū)動(dòng)。

IO設(shè)備管理層主要為設(shè)備框架提供統(tǒng)一的操作接口,包括rt_device_read/write/open/close/control等。而做好一個(gè)外設(shè)驅(qū)動(dòng),最終的目標(biāo)就是應(yīng)用上使用這些統(tǒng)一操作接口,無需理會(huì)底層操作。

LCD設(shè)備驅(qū)動(dòng)框架層是RT-thread對(duì)LCD基本功能的抽象,是一層通用的軟件層,和硬件平臺(tái)無關(guān),抽象了LCD設(shè)備的類型定義和具體的操作方法,其框架源碼在rtdef.h中

LCD的信息結(jié)構(gòu) rt_device_graphic_info,定義了像素格式,位寬,寬高、顯存地址等。

50354092-d249-11ee-a297-92fbcf53809c.png

LCD的操作接口rt_device_graphic_ops,定義了LCD的繪圖操作,比如像素點(diǎn)、畫線等操作。

503e984a-d249-11ee-a297-92fbcf53809c.png

LCD的控制命令,比如更新顯存、開關(guān)LCD、獲取信息、等待VSYNC等。

504245a8-d249-11ee-a297-92fbcf53809c.png

LCD的像素格式

50471f42-d249-11ee-a297-92fbcf53809c.png

可見,RT-thread對(duì)于LCD的抽象操作還是比較直觀,完成以上的操作,再借助IO設(shè)備管理層提供的注冊(cè)接口rt_device_register進(jìn)行注冊(cè),即可使用IO設(shè)備管理接口操作LCD。

(二)先楫LCDC外設(shè)介紹

對(duì)于先楫的LCDC外設(shè)硬件控制器

在HPM6750上有RGB控制器,支持24位的RGB顯示接口

505e554a-d249-11ee-a297-92fbcf53809c.png

在HPM6800上,支持2 個(gè) 4 Lane MIPI-DSI/LVDS-Tx 顯示接口

5074e706-d249-11ee-a297-92fbcf53809c.png

對(duì)于在RT-thread上,也支持了hpm_sdk的panel組件,涵蓋了hpm6750和hpm6800的顯示適配。

508d7ac8-d249-11ee-a297-92fbcf53809c.png

對(duì)于hpm_sdk的panel組件介紹,可以參考文章《[hpm_application]選先楫!爽跑1080P or 720Pmipi屏的單片機(jī)

對(duì)于使用LCD硬件控制器(RGB,MIPI DSI)通信的屏幕,LCD設(shè)備驅(qū)動(dòng)只需要實(shí)現(xiàn)LCD設(shè)備的操作方法struct rt_device_ops即可,比如control接口里更新硬件控制器的緩存區(qū)即可控制屏幕繪圖。

如此一來,配合先楫適配好的RT-thread BSP,可以很順手得適配好LCD的驅(qū)動(dòng),按先楫BSP的driver照葫蘆畫瓢個(gè)drv_lcd。

50a4b35a-d249-11ee-a297-92fbcf53809c.png

(三)創(chuàng)建LCD設(shè)備

下面來創(chuàng)建先楫的LCD設(shè)備。LCD設(shè)備模型從struct rt_device結(jié)構(gòu)體中派生,并添加自己的私有數(shù)據(jù)。

成員主要有LCD的基地址,中斷號(hào),互斥鎖,LCD名稱等。

50b981ae-d249-11ee-a297-92fbcf53809c.png

實(shí)例化一個(gè)lcd的設(shè)備數(shù)組,可以存在多個(gè)lcd設(shè)備,里面包含設(shè)備的初始化參數(shù)

50d0a0dc-d249-11ee-a297-92fbcf53809c.png

(四)實(shí)現(xiàn)LCD設(shè)備的操作方法

按照以上的定義,已經(jīng)實(shí)例化了一個(gè)hpm_lcd_ops結(jié)構(gòu)體,然后需要實(shí)現(xiàn)對(duì)應(yīng)的操作函數(shù),也就是LCD設(shè)備定義操作方法。對(duì)于LCD設(shè)備來說,只有其中的init和control操作方法才有意義,而本文實(shí)現(xiàn)的也是這兩個(gè)接口,分別是hpm_lcd_init、hpm_lcd_control。

1、init:初始化LCD設(shè)備

對(duì)于該操作方法,先楫的LCD驅(qū)動(dòng)代碼不需要執(zhí)行任何操作,只需要在注冊(cè)初始化LCD即可。

50d469ec-d249-11ee-a297-92fbcf53809c.png

2、control:控制LCD設(shè)備

應(yīng)用程序也可以對(duì)LCD設(shè)備進(jìn)行控制,通過control方法完成。原型如下:

50ed2a40-d249-11ee-a297-92fbcf53809c.png

其中參數(shù)cmd包含了控制LCD的方式,通用設(shè)備命令可取以下宏定義:

50f4fc34-d249-11ee-a297-92fbcf53809c.png

當(dāng)然在最新rtthread 5.0.2當(dāng)中也更新了幾個(gè)命令

50f8a82a-d249-11ee-a297-92fbcf53809c.png

本文在這里主要實(shí)現(xiàn)以下幾個(gè)命令

(1)RTGRAPHIC_CTRL_RECT_UPDATE 更新顯存

對(duì)于顯存的更新,可以使用控制器自身定義的顯存也可以使用傳入的顯存地址,在先楫的手冊(cè)中有提到影子寄存器加載使能功能,也就是顯存會(huì)在下一個(gè)VSYNC到達(dá)加載,這樣可以做到顯示的完整更新。

51019f34-d249-11ee-a297-92fbcf53809c.png

而在hpmicro的驅(qū)動(dòng)中也提供了該API:lcdc_layer_set_next_buffer,這里適配的驅(qū)動(dòng)使用第一層layer。

故可以下實(shí)現(xiàn):

51132a2e-d249-11ee-a297-92fbcf53809c.png

(2)RTGRAPHIC_CTRL_WAIT_VSYNC 等待幀完成

為了保證傳輸?shù)母咝Ш头浪毫眩@里使用中斷方式傳輸一幀,再下一幀更新之前等待VSYNC完畢。

512a9cf4-d249-11ee-a297-92fbcf53809c.png

(3)RTGRAPHIC_CTRL_GET_INFO 獲取LCD信息

主要獲取LCD的像素格式、寬高等,傳遞給args參數(shù)

512f54e2-d249-11ee-a297-92fbcf53809c.png

(4)RTGRAPHIC_CTRL_POWERON亮屏

RTGRAPHIC_CTRL_POWEROFF 息屏

調(diào)用hpm_sdk的panel組件接口即可。

51580b44-d249-11ee-a297-92fbcf53809c.png

(五)注冊(cè)LCD設(shè)備

使用IO設(shè)備框架的rt_device_register完成注冊(cè),主要關(guān)注設(shè)備操作方法的賦值部分,以及保存lcd設(shè)備示例賦值給lcd的user_data成員。

515c18ba-d249-11ee-a297-92fbcf53809c.png

(六)驅(qū)動(dòng)配置

在board的Kconfig中使能LCD,該宏控制LCD驅(qū)動(dòng)相關(guān)代碼是否添加到工程中

5160178a-d249-11ee-a297-92fbcf53809c.png

另外添加panel組件,該宏先楫已經(jīng)實(shí)現(xiàn),這里使用的是hpm6750,故只有RGB接口。

516d6476-d249-11ee-a297-92fbcf53809c.png

在驅(qū)動(dòng)drivers的SConscript文件添加LCD驅(qū)動(dòng)的判斷選項(xiàng),如果使能,drv_lcd.c則會(huì)被添加到工程中。

518bedba-d249-11ee-a297-92fbcf53809c.png

(七)驅(qū)動(dòng)驗(yàn)證

注冊(cè)設(shè)備之后,LCD設(shè)備將會(huì)在IO設(shè)備管理器中出現(xiàn),我們使用hpm6750evkmini的wifi_web_camera_demo這個(gè)官方示例作為驗(yàn)證,燒錄驗(yàn)證,使用list device命令查看到注冊(cè)的設(shè)備已經(jīng)包含了LCD設(shè)備。

519bbac4-d249-11ee-a297-92fbcf53809c.png

在wifi_web_camera_demo的示例上,在獲取camera圖像的接口中,添加lcd的設(shè)備操作,把圖像顯示到LCD上,只需要先打開lcd,然后進(jìn)行control,兩條語(yǔ)句就可以實(shí)現(xiàn)顯示,特別方便操作。

51a05598-d249-11ee-a297-92fbcf53809c.png

最終可以實(shí)現(xiàn)使用簡(jiǎn)單的IO設(shè)備即可操作LCD

52b2112e-d249-11ee-a297-92fbcf53809c.png

52b5c422-d249-11ee-a297-92fbcf53809c.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)注

    112

    文章

    16445

    瀏覽量

    179431
  • RGB
    RGB
    +關(guān)注

    關(guān)注

    4

    文章

    801

    瀏覽量

    58714
  • LCD驅(qū)動(dòng)
    +關(guān)注

    關(guān)注

    4

    文章

    88

    瀏覽量

    26693
  • RT-Thread
    +關(guān)注

    關(guān)注

    31

    文章

    1305

    瀏覽量

    40383
  • 脈沖編碼器
    +關(guān)注

    關(guān)注

    0

    文章

    13

    瀏覽量

    8262

原文標(biāo)題:RT-Thread設(shè)備驅(qū)動(dòng)開發(fā)指南進(jìn)階篇--動(dòng)手驅(qū)動(dòng)先楫LCD外設(shè)

文章出處:【微信號(hào):RTThread,微信公眾號(hào):RTThread物聯(lián)網(wǎng)操作系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    RT-Thread設(shè)備驅(qū)動(dòng)開發(fā)指南基礎(chǔ)—以bsp的hwtimer設(shè)備為例

    RT-Thread設(shè)備驅(qū)動(dòng)開發(fā)指南》書籍是RT-thread官方出品撰寫,系統(tǒng)講解RT-thread IO設(shè)備
    的頭像 發(fā)表于 02-20 16:01 ?1806次閱讀
    <b class='flag-5'>RT-Thread</b>設(shè)備<b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開發(fā)指南</b>基礎(chǔ)<b class='flag-5'>篇</b>—以<b class='flag-5'>先</b><b class='flag-5'>楫</b>bsp的hwtimer設(shè)備為例

    已結(jié)束-【書籍評(píng)測(cè)活動(dòng)NO.4】RT-Thread官方撰寫,涵蓋26種設(shè)備驅(qū)動(dòng)開發(fā)指南

    設(shè)備驅(qū)動(dòng)開發(fā)技能。本書內(nèi)容分為三:基礎(chǔ)進(jìn)階篇與高級(jí)。基礎(chǔ)
    發(fā)表于 02-22 15:30

    RT-Thread設(shè)備驅(qū)動(dòng)開發(fā)指南》讀書筆記

    的內(nèi)容,熟悉了驅(qū)動(dòng)開發(fā)的基本流程之后,就可以根據(jù)自己的需要,選擇對(duì)應(yīng)的章節(jié)學(xué)習(xí)。(3) 書上還說了,閱讀本書要求讀者具備了RT-Thread的基礎(chǔ)知識(shí),因此建議與大家學(xué)習(xí)《嵌入式實(shí)時(shí)
    發(fā)表于 03-23 10:35

    RT-Thread設(shè)備驅(qū)動(dòng)開發(fā)指南》讀書測(cè)評(píng)

    驅(qū)動(dòng)開發(fā)指南》這本書主要分了三個(gè)部分,由基礎(chǔ)進(jìn)階篇,高級(jí)組成,適用不同層次的開發(fā)者,對(duì)于不
    發(fā)表于 03-26 21:04

    送《RT-Thread設(shè)備驅(qū)動(dòng)開發(fā)指南》,手慢無!

    迫切地希望有一本可以指導(dǎo)他們?cè)?b class='flag-5'>RT-Thread上開發(fā)驅(qū)動(dòng)指南。 為了解決開發(fā)者的燃眉之急, 《RT
    的頭像 發(fā)表于 03-19 23:00 ?1436次閱讀

    【讀書分享】《RT-Thread設(shè)備驅(qū)動(dòng)開發(fā)指南》讀書筆記

    基礎(chǔ)進(jìn)階篇,高級(jí)三個(gè)部分。每個(gè)部分都有很多章節(jié),每一個(gè)章節(jié)都對(duì)應(yīng)一個(gè)驅(qū)動(dòng)類型,全書涉及的驅(qū)動(dòng)如下圖: (2) 看下來,這本書其實(shí)更像是
    的頭像 發(fā)表于 03-28 13:05 ?1157次閱讀

    RT-Thread設(shè)備驅(qū)動(dòng)開發(fā)指南》讀書筆記

    基礎(chǔ)進(jìn)階篇,高級(jí)三個(gè)部分。每個(gè)部分都有很多章節(jié),每一個(gè)章節(jié)都對(duì)應(yīng)一個(gè)驅(qū)動(dòng)類型,全書涉及的驅(qū)動(dòng)如下圖: (2) 看下來,這本書其實(shí)更像是
    的頭像 發(fā)表于 04-01 01:45 ?2066次閱讀

    上海線下培訓(xùn):RT-Thread× HPM5300 for RT-Thread ,高性能 RISC-V 平臺(tái)開發(fā)快速上手

    RT-Thread的代表性產(chǎn)品和服務(wù)。 同時(shí),我們也邀請(qǐng)到的資深工程師楊帆,他將為開發(fā)者們帶來期待已久的熱門技術(shù)主題培訓(xùn),RT-Thread
    的頭像 發(fā)表于 11-03 19:10 ?809次閱讀
    上海線下培訓(xùn):<b class='flag-5'>RT-Thread</b>×<b class='flag-5'>先</b><b class='flag-5'>楫</b>  HPM5300 for <b class='flag-5'>RT-Thread</b> ,高性能 RISC-V 平臺(tái)<b class='flag-5'>開發(fā)</b>快速上手

    RT-Thread BSP v1.3.0 發(fā)布

    各位的小伙伴們,我們很高興地通知您,半導(dǎo)體最新的RT-ThreadBSPv1.3.0正式發(fā)布了!!(該圖片來源于網(wǎng)絡(luò))提供的主要功能
    的頭像 發(fā)表于 11-08 08:17 ?641次閱讀
    <b class='flag-5'>RT-Thread</b> BSP v1.3.0 發(fā)布

    線下活動(dòng)|HPM5300 for RT-Thread ,高性能 RISC-V 平臺(tái)開發(fā)快速上手

    公司最新技術(shù)和創(chuàng)新解決方案的機(jī)會(huì)。參與者將深入了解半導(dǎo)體和RT-Thread的代表性產(chǎn)品和服務(wù)。同時(shí),我們也邀請(qǐng)到的資深工程師楊帆老
    的頭像 發(fā)表于 11-08 08:18 ?703次閱讀
    線下活動(dòng)|<b class='flag-5'>先</b><b class='flag-5'>楫</b>HPM5300 for <b class='flag-5'>RT-Thread</b> ,高性能 RISC-V 平臺(tái)<b class='flag-5'>開發(fā)</b>快速上手

    RK3568驅(qū)動(dòng)指南驅(qū)動(dòng)基礎(chǔ)進(jìn)階篇-進(jìn)階8 內(nèi)核運(yùn)行ko文件總結(jié)

    RK3568驅(qū)動(dòng)指南驅(qū)動(dòng)基礎(chǔ)進(jìn)階篇-進(jìn)階8 內(nèi)核運(yùn)行ko文件總結(jié)
    的頭像 發(fā)表于 01-31 14:58 ?1221次閱讀
    RK3568<b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>指南</b>|<b class='flag-5'>驅(qū)動(dòng)</b>基礎(chǔ)<b class='flag-5'>進(jìn)階篇</b>-<b class='flag-5'>進(jìn)階</b>8 內(nèi)核運(yùn)行ko文件總結(jié)

    RT-Thread BSP v1.4.0 正式發(fā)布

    親愛的小伙伴們:我們很高興地通知您,RT-ThreadBSPv1.4.0正式發(fā)布了!!1個(gè)小轉(zhuǎn)變:從這個(gè)版本開始,我們將更側(cè)重于利用RT-Thread豐富的組件以及特色的在線包,基
    的頭像 發(fā)表于 02-19 12:20 ?664次閱讀
    <b class='flag-5'>先</b><b class='flag-5'>楫</b> <b class='flag-5'>RT-Thread</b> BSP v1.4.0 正式發(fā)布

    RK3568驅(qū)動(dòng)指南驅(qū)動(dòng)基礎(chǔ)進(jìn)階篇-進(jìn)階5 自定義實(shí)現(xiàn)insmod命令實(shí)驗(yàn)

    RK3568驅(qū)動(dòng)指南驅(qū)動(dòng)基礎(chǔ)進(jìn)階篇-進(jìn)階5 自定義實(shí)現(xiàn)insmod命令實(shí)驗(yàn)
    的頭像 發(fā)表于 02-20 14:10 ?780次閱讀
    RK3568<b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>指南</b>|<b class='flag-5'>驅(qū)動(dòng)</b>基礎(chǔ)<b class='flag-5'>進(jìn)階篇</b>-<b class='flag-5'>進(jìn)階</b>5 自定義實(shí)現(xiàn)insmod命令實(shí)驗(yàn)

    RT-Thread設(shè)備驅(qū)動(dòng)開發(fā)指南》基礎(chǔ)--以bsp的hwtimer設(shè)備為例

    一、概述(一)RT-Thread設(shè)備驅(qū)動(dòng)RT-Thread設(shè)備驅(qū)動(dòng)開發(fā)指南》書籍是RT-thread
    的頭像 發(fā)表于 02-24 08:16 ?1835次閱讀
    《<b class='flag-5'>RT-Thread</b>設(shè)備<b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開發(fā)指南</b>》基礎(chǔ)<b class='flag-5'>篇</b>--以<b class='flag-5'>先</b><b class='flag-5'>楫</b>bsp的hwtimer設(shè)備為例

    【好書推薦】RT-Thread設(shè)備驅(qū)動(dòng)開發(fā)指南

    強(qiáng)烈,他們迫切地希望有一本可以指導(dǎo)他們?cè)?b class='flag-5'>RT-Thread開發(fā)驅(qū)動(dòng)指南。為了解決開發(fā)者的燃眉之急,《
    的頭像 發(fā)表于 08-01 08:35 ?726次閱讀
    【好書推薦】<b class='flag-5'>RT-Thread</b>設(shè)備<b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>開發(fā)指南</b>
    百家乐最好的投注方法| 百家乐游戏试玩免费| 百家乐官网代理商博彩e族 | 百家乐赌博走势图| 索罗门百家乐官网的玩法技巧和规则 | 赌博百家乐的乐趣| 伯爵百家乐官网赌场娱乐网规则| 真人百家乐官网口诀| 德州扑克 下载| 红宝石百家乐的玩法技巧和规则| 网上百家乐作弊下载| 百佬汇百家乐官网的玩法技巧和规则 | 线上百家乐是如何作弊| 做生意讲究风水吗| MG百家乐官网大转轮| 太阳城百家乐官网优惠| 捞金博彩论坛| 大发888娱乐城下载平台| 御匾会百家乐的玩法技巧和规则 | 太子百家乐的玩法技巧和规则| 百家乐EA平台| 24山水口决阳宅| 百家乐官网tt赌场娱乐网规则| 百家乐官网等投注网改单| 百家乐官网评级导航| 德州扑克 英文| 太阳城 娱乐城| 王牌百家乐的玩法技巧和规则| 新思维百家乐投注法| 百家乐比赛技巧| 钱柜百家乐官网娱乐城| 百家乐官网庄闲比| 百家乐官网看盘技巧| 太阳城百家乐官网的分数| 巴东县| 宝胜娱乐| 德州扑克入门与提高| 大发888在线娱乐城合作伙伴| 赌场百家乐代理| 百家乐的视频百家乐| 百家乐闲单开多少|