0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

DAYU200上的RGB灯怎么控制

电子发烧友开源社区 来源:HarmonyOS官方合作社区 作者:HarmonyOS官方合作社 2022-04-25 09:30 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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

我在Hi3516上做过用LED灯演示驱动开发的示例程序,但因为我还不知道DAYU200上的三色灯的GPIO管脚号是多少,就没做灯控测试。不过既然小伙伴问到了,我就抽空研究了一下这部分流程,写了个测试程序,顺便修复了代码上的一个bug。

2. 驱动代码分析

先是看到了有一个//vendor/hihope/rk3568/hdf_config/khdf/light/light_config.hcs文件,估计这就是三色灯的驱动配置。从这里去//vendor/hihope/rk3568/hdf_config/khdf/device_info/device_info.hcs找到:hostName = "light_host" 的相关信息。

再往上找到light的内核态驱动程序://drivers/framework/model/misc/light/driver/,这里有include/light_driver.h和src/light_driver.c

再往上找到light的用户态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

经过代码的解读和画图整理,可以得到如下的流程图。

3. 流程图

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

【附件有原始大图】

4. 测试程序

虽然//drivers/peripheral/misc/light/test/路径下已经有测试程序了,但我还是自己用C语言实现了一个简单的无界面测试程序。

ledx:可执行程序,你可将其推送到平台的/bin/目录下,然后在shell上执行./bin/ledx即可看到效果。

ledx.c:测试程序源代码

BUILD.gn:测试程序编译脚本,在//applications/standard/hap/ohos.build文件的 module_list 下增加一句:

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

让它参与编译即可。

light_driver.c 经过我修改的light驱动程序,见宏liangkz_modify包括住的部分代码。

【原始的内核态驱动程序light_driver.c中存在bug,导致实际运行并不如预期,需要修复light_driver.c中的bug后才完全如预期】

ledx 测试程序会自动跑以下一个点灯序列:

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};

小伙伴们可自行根据规则添加测试序列。

5. 发现并修复bug

在写ledx测试程序做验证时,发现死活都得不到预期效果,我就干脆从下到上把整个流程画了图出来,发现驱动程序果然有不可预料的行为。

5.1 LED灯的数量

在没得到原理图和GPIO管脚编号的情况下,我猜测DAYU200开发板排线旁边的LED灯,应该是如下图所示:

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

在light_config.hcs中写 lightId = [1, 2];相当于说是有两盏灯,但实际上,要么是1盏,要么是3盏,我这里暂且把RGB合在一起当做一盏灯来处理。【小伙伴们可尝试一下把它当做三盏灯来处理,看看该怎么改】

5.2 GpioWrite()的行为

light_driver.c中对GpioWrite()的几处调用中,对drvData->info[lightId]->busNum的使用,很明显是不合理的,这是造成测试效果不符合预期的根本原因。

我对此做了一下修改,用 UpdateLight(uint32_t lightId, uint32_t lightOn)来替代,小伙伴们读一下附件的代码估计就清楚了。

6.更进一步的测试

仔细再思考一下更复杂的灯控流程,看看有没有小伙伴试一下做出来:

控制三色灯分别有各自独立的行为:比如Red灯常亮的时候,Green灯按频率1来闪烁,Blue灯按频率2来闪烁。

Hi3516开发板上也有三色灯(红、绿、红外),移植到Hi3516开发板的小型系统上试试看。

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 三色灯
    +关注

    关注

    0

    文章

    6

    浏览量

    6367
  • rgb灯
    +关注

    关注

    0

    文章

    9

    浏览量

    2049

原文标题:RK3568三色灯点灯流程/测试用例/修复bug

文章出处:【微信号:HarmonyOS_Community,微信公众号:电子发烧友开源社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    DAYU200开发板原理图】DAYU200板开发板没有完整原理图吗?MIPI DSI双屏同显怎么配置?

    1.DAYU200开发板没有完整原理图,无法完成LCD+触摸屏切换到MIPI DSI TX1接口,也无法完成MIPI DSI0和DSI1的双屏同显/异显输出。 2.MIPI DSI0和DSI1的双屏同显/异显,应该怎么配置设备树或者修改驱动代码。
    发表于 11-06 15:43

    请问各位dayu200是不是不支持烧录64位的OpenHarmony

    我自己编译了OpenHarmony5.0.2的镜像,发现如果使用arm64参数编译为64位版本,烧录后卡在开机动画无法开机,如果编译为32位就可以正常。请问dayu200不支持64位系统吗?
    发表于 08-16 17:39

    RGB LED 时尚照明控制器 skyworksinc

    电子发烧友网为你提供()RGB LED 时尚照明控制器相关产品参数、数据手册,更有RGB LED 时尚照明控制器的引脚图、接线图、封装手册、中文资料、英文资料,
    发表于 07-28 18:34
    <b class='flag-5'>RGB</b> LED 时尚照明<b class='flag-5'>控制</b>器 skyworksinc

    虹科免拆案例 | 2010款奔驰E200CGI车EPS OFF异常点亮

    反映,组合仪表的EPSOFF(车身稳定系统关闭)异常点亮。故障现象故障诊断故障排除用故障检测仪检测,发现车身稳定系统控制单元(N30/4)中存储有故
    的头像 发表于 07-24 11:15 416次阅读
    虹科免拆案例 | 2010款奔驰E<b class='flag-5'>200</b>CGI车EPS OFF<b class='flag-5'>灯</b>异常点亮

    【BPI-CanMV-K230D-Zero开发板体验】+控制与Python编程

    ,在学习Python编程的基础通过GPIO来实现LED控制。 在开发板,仅有的2个可供GPIO控制的器件是
    发表于 06-27 17:33

    氛围的发展历程和应用场景

    车载氛围是一种安装在汽车内部的照明系统,主要用于营造车内特定的氛围和环境效果。常见的光源技术包括 LED、OLED 等,利用 RGB 色彩控制技术,通过调节红、绿、蓝三种基色 LED
    的头像 发表于 04-27 16:31 1756次阅读

    虹科免拆案例 | 2016款奔驰C200L车组合仪表多个故障偶尔点亮

    2016款奔驰C200L车组合仪表多个故障偶尔点亮杭州捷盛行汽车服务有限公司乐翔故障现象故障诊断故障排除一辆2016款奔驰C200L车,搭载274920发动机,累计行驶里程约为13
    的头像 发表于 04-23 11:56 1013次阅读
    虹科免拆案例 | 2016款奔驰C<b class='flag-5'>200</b>L车组合仪表<b class='flag-5'>上</b>多个故障<b class='flag-5'>灯</b>偶尔点亮

    物联网单控制联网单控制

    物联网单控制联网单控制
    的头像 发表于 04-03 10:53 639次阅读
    物联网单<b class='flag-5'>灯</b><b class='flag-5'>控制</b>器 <b class='flag-5'>灯</b>联网单<b class='flag-5'>灯</b><b class='flag-5'>控制</b>器

    DLPC7540EVM RGB的恒流源输出电流是60HZ的方波吗?

    我们想做一套RGB的外部驱动电源,RGB的恒流源输出电流是60HZ的方波么?是不是通过三路RGB_EN来控制的。另外三路RGB_PWM是不
    发表于 02-21 15:02

    零知开源——玩转WS2812B条模块

    WS2812RGB带       通过零知标准开发板平台上驱动WS2812RGB珠,包括WS2812B的供电电压、接线和代码实现。通过创建延时函数和设置级联数据,实现对
    的头像 发表于 02-19 15:09 2516次阅读
    零知开源——玩转WS2812B<b class='flag-5'>灯</b>条模块

    如何化解智能控制难题?AI大模型让智能控制告别 “死板” !

    意图方面存在诸多局限。而大模型(LLM,LargeLanguageModel)的出现,为这一领域带来了新的曙光,特别是在智能的精准控制,展现出巨大的潜力。传统智
    的头像 发表于 02-13 18:03 1149次阅读
    如何化解智能<b class='flag-5'>灯</b><b class='flag-5'>控制</b>难题?AI大模型让智能<b class='flag-5'>灯</b><b class='flag-5'>控制</b>告别 “死板” !

    物联网单控制器:路灯单控制更智能,更好用

    物联网单控制器:路灯单控制更智能,更好用
    的头像 发表于 01-15 16:17 1048次阅读
    物联网单<b class='flag-5'>灯</b><b class='flag-5'>控制</b>器:路灯单<b class='flag-5'>灯</b><b class='flag-5'>控制</b>更智能,更好用

    控制:物联网单控制器将成为行业主流

    控制:物联网单控制器将成为行业主流
    的头像 发表于 01-15 16:15 844次阅读
    单<b class='flag-5'>灯</b><b class='flag-5'>控制</b>:物联网单<b class='flag-5'>灯</b><b class='flag-5'>控制</b>器将成为行业主流

    台懋半导体MOS管:在 RGB 控制器中的卓越表现

    一、行业背景在当今绚丽多彩的电子世界里,从璀璨夺目的舞台灯光,到酷炫迷人的电脑机箱带,再到智能家居设备那灵动多变的指示RGB控制器宛如一位神奇的“光影魔术师”,通过调配红、绿、蓝
    的头像 发表于 01-08 15:08 997次阅读
    台懋半导体MOS管:在 <b class='flag-5'>RGB</b> <b class='flag-5'>控制</b>器中的卓越表现

    dayu200 rk3568 openharmony5.0 sim卡 通话服务

    想请问一下有人在dayu200 rk3568插过sim卡并且成功完成过通话服务吗? 我现在在dayu200烧录了openHarmony release 5.0.0版本的镜像,在上面
    发表于 12-26 16:52