HCIA-HarmonyOS设备开发认证V2.0-IOT硬件子系统-PWM

在这里插入图片描述

一、PWM 概述

PWM(Pulse Width Modulation)又叫脉冲宽度调制,它是通过对一系列脉冲的宽度进行调制,等效出所需要的波形(包含形状以及幅值),对模拟信号电平进行数字编码,也就是说通过调节占空比的变化来调节信号、能量等的变化。占空比就是指在一个周期内,信号处于高电平的时间占据整个信号周期的百分比,例如方波的占空比就是 50%。

请添加图片描述

计算公式如下:

占空比 = 高电平时间 周期时间 ∗ 100 % 占空比 = \frac{高电平时间}{周期时间} * 100\% 占空比=周期时间高电平时间100%

PWM 操作流程如下:

请添加图片描述

二、PWM 模块相关API

头文件路径:base/iothardware/peripheral/interfaces/inner_api/iot_pwm.h

接口函数 描述
unsigned int IoTPwmInit(unsigned int port) PWM初始化
unsigned int IoTPwmDeinit(unsigned int port) PWM去初始化
unsigned int IoTPwmStart(unsigned int port, unsigned short duty, unsigned int freq) 按配置的参数输出PWM信号
unsigned int IoTPwmStop(unsigned int port) 停止PWM信号输出

三、接口调用实例

//代码功能:定义了 GPIO_00 号口为 PWM3_OUT 模式且输出比例为 50%的占空比,最后停止。

#include "iot_pwm.h"
IoTPwmInit(PWM3_OUT);
IoTPwmStart(PWM3_OUT,50,100);
IoTPwmStop(PWM3_OUT);

四、PWM HDF驱动开发

在HDF框架中,PWM接口适配模式采用独立服务模式(如图1所示)。在这种模式下,每一个设备对象会独立发布一个设备服务来处理外部访问,设备管理器收到API的访问请求之后,通过提取该请求的参数,达到调用实际设备对象的相应内部方法的目的。独立服务模式可以直接借助HDF设备管理器的服务管理能力,但需要为每个设备单独配置设备节点,增加内存占用。

独立服务模式下,核心层不会统一发布一个服务供上层使用,因此这种模式下驱动要为每个控制器发布一个服务,具体表现为:

驱动适配者需要实现HdfDriverEntry的Bind钩子函数以绑定服务。

device_info.hcs文件中deviceNode的policy字段为1或2,不能为0。

PWM模块各分层作用:

接口层提供打开PWM设备、设置PWM设备周期、设置PWM设备占空时间、设置PWM设备极性、设置PWM设备参数、获取PWM设备参数、使能PWM设备、禁止PWM设备、关闭PWM设备的接口。

核心层主要提供PWM控制器的添加、移除以及管理的能力,通过钩子函数与适配层交互。

适配层主要是将钩子函数的功能实例化,实现具体的功能。

图 1 PWM独立服务模式结构图

请添加图片描述

4.1、开发步骤(待续…)

PWM模块适配包含以下四个部分。

  • 驱实例化驱动入口
  • 配置属性文件
  • 实例化PWM控制器对象
  • 驱动调试

坚持就有收获

在这里插入图片描述

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-02-19 10:52:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-19 10:52:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-19 10:52:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-19 10:52:03       20 阅读

热门阅读

  1. GO语言的变量与常量

    2024-02-19 10:52:03       29 阅读
  2. 在k8s中,使用DirectPV CSI作为分布式存储的优缺点

    2024-02-19 10:52:03       25 阅读
  3. x86汇编段描述符解析器

    2024-02-19 10:52:03       28 阅读
  4. 如何系统地自学Python:一个全面指南

    2024-02-19 10:52:03       39 阅读
  5. CSS杂记

    CSS杂记

    2024-02-19 10:52:03      19 阅读
  6. 3.1.爬虫

    2024-02-19 10:52:03       27 阅读
  7. go依赖注入库samber/do使用

    2024-02-19 10:52:03       37 阅读
  8. c++指针和引用的区别

    2024-02-19 10:52:03       28 阅读
  9. synchronized使用

    2024-02-19 10:52:03       29 阅读
  10. TOP100 图论

    2024-02-19 10:52:03       31 阅读
  11. 2024/2/18 图论 最短路入门 floyd 1

    2024-02-19 10:52:03       32 阅读
  12. 2024/2/18 图论 最短路入门 dijkstra 2

    2024-02-19 10:52:03       36 阅读
  13. 【图论经典题目讲解】洛谷 P5304 旅行者

    2024-02-19 10:52:03       32 阅读
  14. fabric-contract-api-go快速上手

    2024-02-19 10:52:03       32 阅读