Harmony鸿蒙南向驱动开发-PWM接口使用

Harmony鸿蒙南向驱动开发-PWM接口使用PWM 即脉冲宽度调制 PulseWidthMo 的缩写 是一种对模拟信号电平进行数字编码并将其转换为脉冲的技术 harmonyos 的 pwm 有哪些接口

大家好,欢迎来到IT知识分享网。

功能简介

PWM即脉冲宽度调制(Pulse Width Modulation)的缩写,是一种对模拟信号电平进行数字编码并将其转换为脉冲的技术。

PWM接口定义了操作PWM设备的通用方法集合,包括:

  • PWM设备句柄获取和释放
  • PWM周期、占空比、极性的设置
  • PWM使能和关闭
  • PWM配置信息的获取和设置

基本概念

脉冲是“电脉冲”的简称,指电路中电流或电压短暂起伏的现象,其特点是突变和不连续性。脉冲的种类很多,常见的脉冲波形有:三角脉冲、尖脉冲、矩形脉冲、方形脉冲、梯形脉冲及阶梯脉冲等。脉冲的主要参数包括重复周期T(T=1/F,F为重复频率)、脉冲幅度U、脉冲前沿上升时间ts、后沿下降时间t、脉冲宽度tk等。

运作机制

在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独立服务模式结构图

PWM独立服务模式结构图

使用指导

场景介绍

通常情况下,在使用马达控制、背光亮度调节时会用到PWM模块。

接口说明

PWM模块设备属性如表1所示,PWM模块提供的主要接口如表2所示,具体API详见//drivers/hdf_core/framework/include/platform/pwm_if.h。

表 1 PwmConfig结构体介绍

名称 描述
duty uint32_t类型,占空时间,以纳秒为单位。
period uint32_t类型,PWM周期,以纳秒为单位。
number uint32_t类型,要生成的方波数:
– 正值:表示将生成指定数量的方波
– 0:表示方波将不断产生

polarity uint8_t类型,极性:正极性/反极性。
status uint8_t类型,状态:启用状态/禁用状态。

表 2 PWM驱动API接口功能介绍

接口名 接口描述
DevHandle PwmOpen(uint32_t num) 打开PWM设备
void PwmClose(DevHandle handle) 关闭PWM设备
int32_t PwmSetPeriod(DevHandle handle, uint32_t period) 设置PWM设备周期
int32_t PwmSetDuty(DevHandle handle, uint32_t duty) 设置PWM设备占空时间
int32_t PwmSetPolarity(DevHandle handle, uint8_t polarity) 设置PWM设备极性
int32_t PwmEnable(DevHandle handle) 使能PWM设备
int32_t PwmDisable(DevHandle handle) 禁用PWM设备
int32_t PwmSetConfig(DevHandle handle, struct PwmConfig *config) 设置PWM设备参数
int32_t PwmGetConfig(DevHandle handle, struct PwmConfig *config) 获取PWM设备参数

说明:
本文涉及PWM的所有接口,支持内核态及用户态使用。

开发步骤

使用PWM的一般流程如下图所示。

图 2 PWM使用流程图

PWM使用流程图

获取PWM设备句柄

在操作PWM设备时,首先要调用PwmOpen获取PWM设备句柄,该函数会返回指定设备号的PWM设备句柄。

DevHandle PwmOpen(uint32_t num);

表 3 PwmOpen参数和返回值描述

参数 参数描述

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/116766.html

(0)
上一篇 2025-11-26 13:45
下一篇 2025-11-26 14:10

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信