在高级应用程序中使用 PWM

重要

这是 Azure Sphere(旧版)文档。 Azure Sphere(旧版)将于 2027 年 9 月 27 日停用,用户此时必须迁移到 Azure Sphere(集成)。 使用位于 TOC 上方的版本选择器查看 Azure Sphere(集成)文档。

本主题介绍如何访问设备脉冲宽度调制器 (PWM),以便在 Azure Sphere 高级应用程序中使用。

通过改变脉冲数字信号的占空比(通断时间比)来实现脉冲宽度调制。 脉冲宽度调制器广泛用于各种应用程序中,例如数字电机控制、通信和数-模转换。

若要在 Azure Sphere 应用程序中使用 PVM,必须包含所需的头文件和 Pwm 功能,并为应用程序将访问的 PWM 通道指定控制器。

PWM_HighLevelApp 示例 介绍了如何在 MT3620 设备上的简单数-模转换应用程序中使用 PWM。

PWM 要求

使用 PWM 的应用程序必须包含相应的标头文件,并将 PWM 设置添加到应用程序清单

所有应用程序都必须设置其目标硬件,并包括相应的硬件定义头文件。

标头文件

 #include <applibs/pwm.h>
 #include "path-to-your-target-hardware.h"

将“path-to-your-target-hardware.h”替换为硬件头文件的路径。

应用程序清单设置

应用程序清单中的 PWM 设置列出了应用程序访问的 PWM 控制器。 若要配置这些设置,必须将 Pwm 功能添加到应用程序清单,然后将每个 PWM 控制器添加到该功能。 Azure Sphere 应用程序清单 具有更多详细信息。

在代码中,使用为硬件定义的常量来识别 PWM 控制器。 生成应用时,编译器会将这些值转换为原始值。

例如,以下为将 MT3620 参考开发板 (RDB) 设为目标的应用程序的应用程序清单摘录。

 "Pwm": [ "$MT3620_RDB_LED_PWM_CONTROLLER2" ]

以下摘录显示了如何在将 Avnet MT3620 初学者工具包设为目标的应用程序中指定相同的 PWM 控制器:

  "Pwm": [ "$AVNET_MT3620_SK_PWM_CONTROLLER2" ]

PWM 访问

Azure Sphere 高级应用程序可以通过调用 Applibs PWM API 来访问 PWM。

打开 PWM 控制器

要打开 PWM 控制器进行访问,请调用 PWM_Open 并将要打开的控制器 ID 作为参数传递。 如果调用成功,将返回文件描述符。 否则,将返回 -1。

设置 PWM 通道的状态

要设置或更新 PWM 通道的状态,请调用 PWM_Apply。 将以下参数传递给 PWM_Apply:

  • PWM_Open 返回的文件描述符

  • 要更新的 PWM 通道;此值取决于平台

  • 要应用于通道的周期、占空比和极性

  • 是启用还是禁用通道

注意

周期和占空比的最小和最大限制取决于设备。 例如,在 MT3620 高级核心上,PWM 以固定的基频率 2 MHz 运行,比较寄存器为 16 位/关闭。 这要求占空比分辨率为 500 ns,有效最大周期约为 32.77 ms。 有关详细信息,请查阅特定设备的数据表。

MT3620 支持

MT3620 支持的 PWM 功能列在 MT3620 支持状态中。 MT3620 开发板用户指南介绍了引脚布局和引脚功能。

MT3620 具有 12 个 PWM 通道,PWM0 - PWM11。 这些通道被分成 3 组,每组 4 个通道。 每组都与一个 PWM 控制器相关联(PWM-CONTROLLER-0、PWM-CONTROLLER-1、PWM-CONTROLLER-2)。 PWM 通道和 GPIO 引脚 GPIO0 通过 GPIO11 映射到 MT3260 上的相同引脚。 如果你的应用程序使用 PWM 控制器,则与该控制器关联的所有引脚都将分配为 PWM 输出。 它们不能用于任何其他外设类型。