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

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

3天内不再提示

WiFi-IoT套件的LED灯控制以及PWM控制

电子工程师 来源:HarmonyOS社区 作者:HarmonyOS社区 2021-01-13 10:00 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

功能很简单,就是操作GPIO控制LED亮灭以及PWM输出控制LED明亮度,但是在这个过程中遇到很多问题。

首先是GPIO输出高低电平控制LED灯亮灭。查看官方文提供的原理图,找到灯部分的电路。发现灯板其实有两块,只是其中一块是交通灯板,另外一块是三色RGB灯。控制引脚完全相同。这里以RGB灯板为例。

根据接口再去底板接口那里去查看,可以对应出:

红色--GPIO10_PWM1

绿色--GPIO11_PWM2

蓝色--GPIO12_PWM3

核心板的LED1--GPIO9

接下来的修改就是直接在SDK中的ap/iothardware/led_example.c中进行修改了。里面已经有了GPIO的初始化以及调用了,这里只是增加和修改引脚而已。

注意:例程里面用的GPIO9,也就是核心板上的LED1.如果插上的是RGB灯板,则LED1始终亮,不会随引脚改变而改变。这一点让我怀疑代码怀疑了很久,后来查电路图才发现RGB灯板GPIO9引脚接了红外检测引脚。这个引脚是上拉的,也就是说就是主控下拉让LED1灭,实际上也不会灭。

34a6eeca-5146-11eb-8b86-12bb97331649.png

到这里操作GPIO就完成了,很简单,就在官方的例程里面修改就行了。但是,还没结束,上面也说了,RGB这三个引脚是复用功能,可以复用PWM输出功能,这里继续将代码改为PWM控制。

首先初始化GPIO,然后将这3个引脚设为PWM复用输出功能,并指定PWM的时钟

#define LED_RED WIFI_IOT_IO_NAME_GPIO_10#define LED_GREEN WIFI_IOT_IO_NAME_GPIO_11#define LED_BLUE WIFI_IOT_IO_NAME_GPIO_12

GpioInit();

IoSetFunc(LED_RED, WIFI_IOT_IO_FUNC_GPIO_10_PWM1_OUT);

GpioSetDir(LED_RED, WIFI_IOT_GPIO_DIR_OUT);

IoSetFunc(LED_GREEN, WIFI_IOT_IO_FUNC_GPIO_11_PWM2_OUT);

GpioSetDir(LED_GREEN, WIFI_IOT_GPIO_DIR_OUT);

IoSetFunc(LED_BLUE, WIFI_IOT_IO_FUNC_GPIO_12_PWM3_OUT);

GpioSetDir(LED_BLUE, WIFI_IOT_GPIO_DIR_OUT);

hi_pwm_init(HI_PWM_PORT_PWM1);

hi_pwm_init(HI_PWM_PORT_PWM2);

hi_pwm_init(HI_PWM_PORT_PWM3);

hi_pwm_set_clock(PWM_CLK_160M);

完成初始化后就是功能了,控制pwm占空比调节led亮度。

void LedPWM(uint16 pwm_r, uint16 pwm_g, uint16 pwm_b){

hi_pwm_start(HI_PWM_PORT_PWM1, pwm_r, 1600);

hi_pwm_start(HI_PWM_PORT_PWM2, pwm_g, 1600);

hi_pwm_start(HI_PWM_PORT_PWM3, pwm_b, 1600);}

这一段在while(1)里面循环执行,改变PWM占空比的值。

switch(sta) { case 0: if(pwm_R 《 1500) pwm_R += 5; else { sta = 1; pwm_R = 2; pwm_G = 2; pwm_B = 2; }

break; case 1: if(pwm_G 《 1200) pwm_G += 5; else { sta = 2; pwm_R = 2; pwm_G = 2; pwm_B = 2; }

break; case 2: if(pwm_B 《 1200) pwm_B += 5; else { sta = 0; pwm_R = 2; pwm_G = 2; pwm_B = 2; }

break; } LedPWM(pwm_R, pwm_G, pwm_B); usleep(2);

PWM相关的函数都是在hi_PWM.h中定义的,所以要引用这个头文件,另外这个例子所在的BUILD.gn文件中也要新增其所在的位置:“//vendor/hisi/hi3861/hi3861//include”。

在app所在的BUILD.gn里面的features项目中加入新增的led_example.c所在的路径:“iothardware:led_example”,到这里貌似都完成了设置以及实现。但是编译的时候直接报错:undefined reference to hi_PWM_start以及其他几个函数的错误。

这个问题纠结了我好久。后来还是看连志安的ole驱动中的IIC操作才知道要在hi3861驱动中配置打开PWM功能才会编译PWM部分进代码,不然始终找不到具体的实现。编译通不过。

具体在vendor/hisi/hi3861/hi3861/build/config/usr_config.mk文件中新增CONFIG_PWM_SUPPORT=y 才行。

不熟悉整个框架遇到问题并不好处理。

另外调试PWM过程中发现hi_PWM_start函数中的duty参数不要设置为0。在调试3色时候两色设为0,实际上是白色,都亮了。后来设置为2就ok,三色互不影响。

责任编辑:lq

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

    关注

    22

    文章

    1607

    浏览量

    112145
  • PWM
    PWM
    +关注

    关注

    116

    文章

    5901

    浏览量

    227021
  • GPIO
    +关注

    关注

    16

    文章

    1336

    浏览量

    56555
  • OpenHarmony
    +关注

    关注

    33

    文章

    3983

    浏览量

    21434

原文标题:WiFi-IoT套件的LED灯控制以及PWM控制

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    探索XMC 750 Watt电机控制应用套件:功能、硬件与设计细节

    AG推出的KIT_XMC750WATT_AK_V1 XMC电机控制应用套件,了解其特点、硬件组成以及生产数据等关键信息。 文件下载: KIT_XMC750WATT_MC_AK_V1.pdf 一、
    的头像 发表于 05-19 10:15 188次阅读

    GSK - 805 DC 电机控制套件:高效电机控制解决方案

    哪些独特之处。 文件下载: GSK-805.pdf 套件简介 GSK - 805 DC 电机控制套件是一款预先组装好的产品,它采用了脉冲宽度调制(PWM)技术来
    的头像 发表于 05-15 16:05 71次阅读

    科芯创展3.1-150V LED恒流驱动控制芯片

    控制高亮度 LED 的驱动电流,使 LED 亮度达到预期恒定亮度。 在 DIM 端加 PWM
    发表于 04-20 09:55

    LDS9003/9001:高功率LED温度与PWM控制器之利器

    LDS9003/9001:高功率LED温度与PWM控制器之利器 在高功率LED固态照明应用领域,如何精准控制
    的头像 发表于 04-04 11:30 281次阅读

    MAX16955评估套件:同步PWM降压控制器评估利器

    的评估平台,能够帮助我们深入了解MAX16955同步PWM降压控制器的性能特点。本文将详细介绍该评估套件的相关信息,包括基本描述、特性、组件列表、快速启动步骤以及各种操作模式等内容。
    的头像 发表于 04-02 15:15 216次阅读

    MAX16952评估套件:同步PWM降压控制器评估利器

    MAX16952评估套件:同步PWM降压控制器评估利器 在电子设计领域,评估套件对于工程师来说是验证芯片性能的重要工具。今天就来详细介绍一下Maxim Integrated的MAX16
    的头像 发表于 04-02 15:15 194次阅读

    Visionfive开发板通过gpio来控制led

    用鼠标来控制它了,我选择在电脑上通过 ssh 开控制它。 如何通过 gpio 控制 LED ? 通过这个网页,我们可以了解到这块板子
    发表于 04-01 06:10

    PWM经典应用:LED亮度控制及呼吸实战

    信号生成: 加热控制: 本文特别分享PWM相关基础知识,并以Air8000核心板为例,演示LuatOS开发中如何使用PWM功能实现LED亮度控制
    的头像 发表于 01-05 20:50 501次阅读
    <b class='flag-5'>PWM</b>经典应用:<b class='flag-5'>LED</b>亮度<b class='flag-5'>控制</b>及呼吸<b class='flag-5'>灯</b>实战

    PWM 控制 LED、蜂鸣器、电机:你真的用对了吗?

    在做嵌入式开发的时候,PWM(脉宽调制)几乎是必学技能。LED想要呼吸效果?PWM。蜂鸣器要发“滴滴”的提示音?PWM。电机需要调速?还是PWM
    的头像 发表于 01-04 09:14 978次阅读
    <b class='flag-5'>PWM</b> <b class='flag-5'>控制</b> <b class='flag-5'>LED</b>、蜂鸣器、电机:你真的用对了吗?

    基于PWMLED调光技术与呼吸实现方法!

    利用PWM技术控制LED亮度,不仅效率高、响应快,还能实现细腻的视觉过渡。系统介绍PWM的工作机制,结合具体硬件平台,展示如何编程实现LED
    的头像 发表于 12-15 13:03 752次阅读
    基于<b class='flag-5'>PWM</b>的<b class='flag-5'>LED</b>调光技术与呼吸<b class='flag-5'>灯</b>实现方法!

    LED触摸控制PCBA方案开发 | 控触摸方案开发

    单键LED触摸控制PCBA方案开发控触摸方案开发PCBA方案控方案支持定制寻找灵活、可靠的LED灯光
    的头像 发表于 12-10 17:43 628次阅读
    <b class='flag-5'>LED</b>触摸<b class='flag-5'>控制</b>PCBA方案开发 | <b class='flag-5'>灯</b>控触摸方案开发

    LuatOS中PWM实现LED亮度调节与呼吸的实战教程

    PWMLED亮度调节和呼吸效果实现方面有着广泛应用。在LuatOS环境中,如何高效运用PWM功能是开发者需要掌握的关键。本实战教程将通过具体案例,引导开发者快速上手,轻松实现
    的头像 发表于 11-11 19:05 8675次阅读
    LuatOS中<b class='flag-5'>PWM</b>实现<b class='flag-5'>LED</b>亮度调节与呼吸<b class='flag-5'>灯</b>的实战教程

    LED带离线语音控制方案WTK6900P

    在家居装饰以及部分公共空间装饰已LED带经成为了一种主流的灯饰方案,今天我们主要讲的是家居内部空间的控制,因为公共部分的灯具不适用语音
    的头像 发表于 09-15 17:31 1321次阅读

    如何使用 MS51 PWM 通过 UART 控制 RGB LED

    使用 MS51 PWM 通过 UART 控制 RGB LED
    发表于 08-20 07:24

    【高云GW5AT-LV60 开发套件试用体验】三、LED控制实验

    【高云GW5AT-LV60 开发套件试用体验】三、LED控制实验 高云软件开发环境搭建好以后,进行正式的FPGA编程前,必须使用安装好的Gowin 软件,结合高云GW5AT-LV60
    发表于 07-21 05:57