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

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

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

DAYU200上的RGB燈怎么控制

電子發(fā)燒友開源社區(qū) ? 來源:HarmonyOS官方合作社區(qū) ? 作者:HarmonyOS官方合作社 ? 2022-04-25 09:30 ? 次閱讀

有小伙伴問我“DAYU200上的RGB燈怎么控制”?

我在Hi3516上做過用LED燈演示驅(qū)動開發(fā)的示例程序,但因?yàn)槲疫€不知道DAYU200上的三色燈的GPIO管腳號是多少,就沒做燈控測試。不過既然小伙伴問到了,我就抽空研究了一下這部分流程,寫了個測試程序,順便修復(fù)了代碼上的一個bug。

2. 驅(qū)動代碼分析

先是看到了有一個//vendor/hihope/rk3568/hdf_config/khdf/light/light_config.hcs文件,估計(jì)這就是三色燈的驅(qū)動配置。從這里去//vendor/hihope/rk3568/hdf_config/khdf/device_info/device_info.hcs找到:hostName = "light_host" 的相關(guān)信息。

再往上找到light的內(nèi)核態(tài)驅(qū)動程序://drivers/framework/model/misc/light/driver/,這里有include/light_driver.h和src/light_driver.c

再往上找到light的用戶態(tài)HAL接口://drivers/peripheral/misc/light/hal/,這里也有src/light_controller.h 和 src/light_controller.c。

在//drivers/peripheral/misc/light/下還有hdi_service和inteRFaces。

還可以找到//drivers/interface/light/v1_0/ILightinterface.idl

經(jīng)過代碼的解讀和畫圖整理,可以得到如下的流程圖。

3. 流程圖

1a3c2c90-c430-11ec-bce3-dac502259ad0.png

【附件有原始大圖】

4. 測試程序

雖然//drivers/peripheral/misc/light/test/路徑下已經(jīng)有測試程序了,但我還是自己用C語言實(shí)現(xiàn)了一個簡單的無界面測試程序。

ledx:可執(zhí)行程序,你可將其推送到平臺的/bin/目錄下,然后在shell上執(zhí)行./bin/ledx即可看到效果。

ledx.c:測試程序源代碼

BUILD.gn:測試程序編譯腳本,在//applications/standard/hap/ohos.build文件的 module_list 下增加一句:

“//…(BUILD.gn部署路徑)…/ledx:ledx”,

讓它參與編譯即可。

light_driver.c 經(jīng)過我修改的light驅(qū)動程序,見宏liangkz_modify包括住的部分代碼。

【原始的內(nèi)核態(tài)驅(qū)動程序light_driver.c中存在bug,導(dǎo)致實(shí)際運(yùn)行并不如預(yù)期,需要修復(fù)light_driver.c中的bug后才完全如預(yù)期】

ledx 測試程序會自動跑以下一個點(diǎn)燈序列:

HILOG_INFO(LOG_APP, “

ledId [-1, 0, 1, 2]: -1-Exit, 0-GetLightInfo, 1-Led1, 2-Led2”);HILOG_INFO(LOG_APP, “

ledMod[-1, 0, 1 ]: -1-Flash,0-Off, 1-On”);HILOG_INFO(LOG_APP, “

ledBrt[ 1, 2, 4, x]:

1-R,

2-G,

4-B, x-bit”);

int32_t matrix[][3] =

{

{0, 0, 0}, //GetLightInfo

{1, 0, 7}, //LED1 Off all RGB

{1, 1, 1}, //LED1 On R

{1, 1, 2}, //LED1 On G

{1, 1, 4}, //LED1 On B

{1, 0, 0}, //LED1 Off

{1, 1, 7}, //LED1 On BGR:111

{1, 1, 6}, //LED1 On BG-:110

{1, 1, 5}, //LED1 On B-R:101

{1, 1, 4}, //LED1 On B--:100

{1, 1, 3}, //LED1 On -GR:011

{1, 1, 2}, //LED1 On -G-:010

{1, 1, 1}, //LED1 On --R:001

{1, 0, 0}, //LED1 Off

{1, -1, 7}, //LED1 Flash RGB

{-1, 0, 0},//Exit};

小伙伴們可自行根據(jù)規(guī)則添加測試序列。

5. 發(fā)現(xiàn)并修復(fù)bug

在寫ledx測試程序做驗(yàn)證時(shí),發(fā)現(xiàn)死活都得不到預(yù)期效果,我就干脆從下到上把整個流程畫了圖出來,發(fā)現(xiàn)驅(qū)動程序果然有不可預(yù)料的行為。

5.1 LED燈的數(shù)量

在沒得到原理圖和GPIO管腳編號的情況下,我猜測DAYU200開發(fā)板排線旁邊的LED燈,應(yīng)該是如下圖所示:

1a683998-c430-11ec-bce3-dac502259ad0.png

在light_config.hcs中寫 lightId = [1, 2];相當(dāng)于說是有兩盞燈,但實(shí)際上,要么是1盞,要么是3盞,我這里暫且把RGB合在一起當(dāng)做一盞燈來處理?!拘』锇閭兛蓢L試一下把它當(dāng)做三盞燈來處理,看看該怎么改】

5.2 GpioWrite()的行為

light_driver.c中對GpioWrite()的幾處調(diào)用中,對drvData->info[lightId]->busNum的使用,很明顯是不合理的,這是造成測試效果不符合預(yù)期的根本原因。

我對此做了一下修改,用 UpdateLight(uint32_t lightId, uint32_t lightOn)來替代,小伙伴們讀一下附件的代碼估計(jì)就清楚了。

6.更進(jìn)一步的測試

仔細(xì)再思考一下更復(fù)雜的燈控流程,看看有沒有小伙伴試一下做出來:

控制三色燈分別有各自獨(dú)立的行為:比如Red燈常亮的時(shí)候,Green燈按頻率1來閃爍,Blue燈按頻率2來閃爍。

Hi3516開發(fā)板上也有三色燈(紅、綠、紅外),移植到Hi3516開發(fā)板的小型系統(tǒng)上試試看。

審核編輯 :李倩

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

    關(guān)注

    0

    文章

    6

    瀏覽量

    6187
  • rgb燈
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    1879

原文標(biāo)題:RK3568三色燈點(diǎn)燈流程/測試用例/修復(fù)bug

文章出處:【微信號:HarmonyOS_Community,微信公眾號:電子發(fā)燒友開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    智能家居之旅(7):HomeAssistant開發(fā)板的RGB顏色

    怎么HomeAssistant,然后控制Ai-M61開發(fā)板的 RGB 的顏色,感覺這個項(xiàng)目用來控制家里的
    的頭像 發(fā)表于 07-03 16:39 ?332次閱讀
    智能家居之旅(7):HomeAssistant開發(fā)板的<b class='flag-5'>RGB</b>顏色

    ESP32-C3-DevKitM-1跑示例程序Blink,RGB不閃的原因?

    新手學(xué)習(xí),買了兩塊ESP32-C3-DevKitM-1,到手后插入U(xiǎn)SB供電后,兩塊開發(fā)板的RGB藍(lán)色常亮。然后燒錄示例example
    發(fā)表于 06-21 06:01

    【鴻蒙】OpenHarmony運(yùn)行docker詳細(xì)步驟

    1.環(huán)境和設(shè)備 系統(tǒng)版本: 3.2release(64 位) OpenHarmony 內(nèi)核版本:5.10 標(biāo)準(zhǔn)系統(tǒng)設(shè)備: DAYU200 Docker:18.03.1 (64 位) sd 卡一張
    的頭像 發(fā)表于 03-02 15:10 ?2117次閱讀
    【鴻蒙】OpenHarmony運(yùn)行docker詳細(xì)步驟

    請問DAYU200有SPI可以用么

    大家好,請問DAYU200有SPI可以用么 我看這里https://developer.huawei.com/consumer/cn/market/prod-detail?productId
    發(fā)表于 02-20 11:38

    如何使用Arduino控制RGB LED

    在本指南中,您將學(xué)習(xí)如何使用Arduino控制RGB LED。RGB(紅-綠-藍(lán))LED可以通過混合不同強(qiáng)度的紅、綠、藍(lán)光來產(chǎn)生多種顏色。您將學(xué)習(xí)創(chuàng)建一個基本Arduino RGB L
    的頭像 發(fā)表于 02-11 10:28 ?3722次閱讀
    如何使用Arduino<b class='flag-5'>控制</b><b class='flag-5'>RGB</b> LED

    深入解析:DLT8SA04A芯片驅(qū)動的24V幻彩RGB動態(tài)軟帶設(shè)計(jì)

    這款24V幻彩RGB動態(tài)軟帶,搭載了先進(jìn)的DLT8SA04A芯片,代表了智能照明領(lǐng)域的一次技術(shù)革新。其核心芯片DLT8SA04A,以其簡化的電路設(shè)計(jì)和卓越的穩(wěn)定性,為帶提供了可靠的性能基礎(chǔ)。
    的頭像 發(fā)表于 01-21 11:58 ?5990次閱讀
    深入解析:DLT8SA04A芯片驅(qū)動的24V幻彩<b class='flag-5'>RGB</b>動態(tài)軟<b class='flag-5'>燈</b>帶設(shè)計(jì)

    明微SM16703可替代WS2811,此驅(qū)動芯片在RGB全彩燈帶條點(diǎn)光源的應(yīng)用

    ws2811和sm16703是兩種廣泛應(yīng)用于RGB全彩燈帶條點(diǎn)光源的驅(qū)動芯片。它們的主要作用是控制和驅(qū)動LED珠,以實(shí)現(xiàn)全彩RGB LE
    的頭像 發(fā)表于 12-21 16:38 ?2895次閱讀
    明微SM16703可替代WS2811,此驅(qū)動芯片在<b class='flag-5'>RGB</b>全彩燈帶<b class='flag-5'>燈</b>條點(diǎn)光源<b class='flag-5'>上</b>的應(yīng)用

    DAYU200 rk3568板子燒寫OpenHarmony鏡像resource.img誤燒寫成ramdisk.img,燒寫成功后無法開機(jī)無法進(jìn)入loader模式,求助?。?!

    DAYU200 rk3568板子燒寫OpenHarmony鏡像resource.img誤燒寫成ramdisk.img,燒寫成功后無法開機(jī)無法進(jìn)入loader模式,求助?。?! RT,有沒有同仁遇到類似問題或者有解決方案的,求拯救。
    發(fā)表于 12-15 22:24

    【每周一練】盤古1K開發(fā)板 練習(xí)二:按鍵控制RGB

    實(shí)驗(yàn)?zāi)康?掌握按鍵消抖原理,實(shí)現(xiàn)按鍵控制RDB顏色更換 實(shí)驗(yàn)要求 設(shè)計(jì) 8 種彩燈效果,選擇一個按鍵作為控制輸入,按下一次換一種顯示效果 學(xué)習(xí)心得 學(xué)習(xí)了RGB
    發(fā)表于 12-10 16:43

    rk3568 dayu200開發(fā)版故障

    dayu200開發(fā)版卡在 DAYU開機(jī)界面,但是通過截屏軟件可以顯示正確圖像。
    發(fā)表于 11-30 09:53

    基于合宙Air001的迷你RGB環(huán)

    點(diǎn)亮夜空的是什么?是工程師不羈的靈魂,點(diǎn)燃滿懷希望與熱愛的璀璨星河,又或是少年勇敢萌動的心……今天特別分享@Link-who大佬的開源佳作——基于合宙Air001的戀愛日記系列迷你RGB環(huán)。那么
    的頭像 發(fā)表于 11-25 08:04 ?1069次閱讀
    基于合宙Air001的迷你<b class='flag-5'>RGB</b><b class='flag-5'>燈</b>環(huán)

    送給最愛的TA?基于合宙Air001的迷你RGB環(huán)

    點(diǎn)亮夜空的是什么?是工程師不羈的靈魂,點(diǎn)燃滿懷希望與熱愛的璀璨星河,又或是少年勇敢萌動的心…… 今天特別分享 @Link-who 大佬 的開源佳作——基于合宙Air001的戀愛日記系列迷你RGB環(huán)
    的頭像 發(fā)表于 11-24 12:10 ?2324次閱讀
    送給最愛的TA?基于合宙Air001的迷你<b class='flag-5'>RGB</b><b class='flag-5'>燈</b>環(huán)

    2015款奔馳B200車發(fā)動機(jī)故障異常點(diǎn)亮

    進(jìn)廠報(bào)修發(fā)動機(jī)故障異常點(diǎn)亮。故障現(xiàn)象故障診斷故障排除接車后試車,起動發(fā)動機(jī),組合儀表的發(fā)動機(jī)故障長亮。用故障檢測儀檢測,發(fā)動機(jī)控制模塊(ME)中存儲有當(dāng)前故障代碼
    的頭像 發(fā)表于 11-04 08:09 ?533次閱讀
    2015款奔馳B<b class='flag-5'>200</b>車發(fā)動機(jī)故障<b class='flag-5'>燈</b>異常點(diǎn)亮

    標(biāo)準(zhǔn)系統(tǒng):DAYU200開發(fā)套件(RK3568)

    開發(fā)板名稱(芯片型號) 大禹系列HH-SCDAYU200開發(fā)套件(RK3568) 芯片架構(gòu) CPU頻率 介紹(字?jǐn)?shù)請控制200字以內(nèi)) 基于瑞芯微RK3568芯片,集成雙核心架構(gòu)GPU以及
    發(fā)表于 10-19 10:42

    dayu210 編譯后運(yùn)行起不來

    有誰成功編譯dayu210 并能在板子跑起來,方便給個編譯指導(dǎo)么?
    發(fā)表于 09-25 16:28