在高级应用程序中使用 PVM
本主题介绍如何访问设备脉冲宽度调节器 (在 Azure Sphere 高级应用程序中) 的 PVM。
脉冲宽度调节是通过改变脉冲数字信号的占空比 (开机时间与关闭时间的比率) 来实现的。 脉冲宽度调节器用于各种应用,例如数字电机控制、通信和数字到模拟转换。
若要在 Azure Sphere 应用程序中使用 PVM,必须包含所需的头文件和 Pwm
功能,并指定应用程序将访问的 PWM 通道的控制器。
PWM_HighLevelApp示例演示如何在 MT3620 设备上的简单数字到模拟转换应用程序中使用 PWM。
PWM 要求
使用 PVM 的应用程序必须包含相应的头文件,并将 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 高级核心上,16 位开/关比较寄存器的 PVM 以 2 MHz 的固定基频运行。 这要求占空比分辨率为 500 ns,有效最大周期约为 32.77 毫秒。 有关详细信息,请参阅特定设备的数据表。
MT3620 支持
MT3620 支持的 PWM 功能在 MT3620 支持状态中列出。 MT3620 开发板用户指南介绍了引脚布局和引脚功能。
MT3620 具有 12 个 PWM 通道,PWM0 - PWM11。 它们分为 3 组,共 4 个频道。 每个组都与 PWM 控制器 (PWM-CONTROLLER-0、PWM-CONTROLLER-1、PWM-CONTROLLER-2) 相关联。 通过 GPIO11 的 PWM 通道和 GPIO 引脚 GPIO0 映射到 MT3260 上的相同引脚。 如果应用程序使用 PWM 控制器,则会分配与该控制器关联的所有引脚,以用作 PWM 输出。 它们不能用于任何其他外围设备类型。