当前文档版本为 v0.3.0,您可以访问当前页面的 开发中 版本以获取最近可能的更新。

PWM

1 功能概述

本例程演示 PAN271x PWM Driver 的基础用法:配置两路 PWM 输出并启动(独立模式 / Independent Mode)。

  • PWM_CH1:100 kHz,占空比 30%,输出到 P1.7(板级常标为 P17

  • PWM_CH4:200 kHz,占空比 50%,输出到 P1.2(板级常标为 P12

例程代码入口:samples\drivers\pwm\src\main.c

2 环境准备

  • 硬件设备与线材:

    • PAN271x EVB 核心板底板各一块

    • JLink 仿真器(用于烧录例程程序)

    • USB-TypeC 线一条(用于底板供电和查看串口打印 Log)

    • 杜邦线数根或跳线帽数个(用于连接各个硬件设备)

    • 逻辑分析仪或示波器(用于观察 PWM 波形)

  • 硬件接线:

    • 将 EVB 核心板插到底板上

    • 使用 USB-TypeC 线,将 PC USB 插口与 EVB 底板 USB->UART 插口相连

    • 使用杜邦线或跳线帽将 EVB 底板 J8 排针对 (P06 & TXD) 和 J9 排针对 (P05 & RXD) 分别短接起来

    • 使用杜邦线将 JLink 仿真器的:

      • SWD_CLK 引脚与 EVB 底板的 P00 排针相连

      • SWD_DAT 引脚与 EVB 底板的 P01 排针相连

      • SWD_GND 引脚与 EVB 底板的 GND 排针相连

    • PWM 波形观测:

      • P17 (P1.7 / PWM_CH1) 接逻辑分析仪/示波器

      • P12 (P1.2 / PWM_CH4) 接逻辑分析仪/示波器

      • 观测设备地线接 EVB GND

  • PC 软件:

    • 串口调试助手或终端工具,波特率 115200(8N1)

3 编译和烧录

  • 例程位置:<SDK_ROOT>\samples\drivers\pwm

  • Keil 工程:keil\pwm.uvprojx

双击 Keil Project 文件打开工程,编译并下载到芯片。

4 例程演示说明

4.1 串口输出示例

烧录完成并复位后,例程会初始化时钟与 UART0,并打印当前 CPU 主频:

CPU @ 48000000Hz

说明:本例程无交互菜单,不需要串口输入;上电后会持续输出 PWM 波形。

4.2 波形验证(逻辑分析仪/示波器)

  • P17 (PWM_CH1) 观察到约 100 kHz PWM,duty 约 30%

  • P12 (PWM_CH4) 观察到约 200 kHz PWM,duty 约 50%

若频率存在轻微偏差,通常与 PWM 分频/预分频取整有关(驱动会选择“最接近”的可达频率)。

4.3 主要流程代码(main.c 节选)

void PWM_GPIOInit(void)
{
    // Enable Clock
    CLK_APB1PeriphClockCmd(CLK_APB1Periph_PWM0_CH01, ENABLE);
    CLK_APB1PeriphClockCmd(CLK_APB1Periph_PWM0_CH23, ENABLE);
    CLK_APB1PeriphClockCmd(CLK_APB1Periph_PWM0_CH45, ENABLE);

    // Config Pinmux
    SYS_SET_MFP(P1, GPIO_Pin_7, PWM_CH1);
    SYS_SET_MFP(P1, GPIO_Pin_2, PWM_CH4);
}

int main(void)
{
    Clock_Init();
    Sys_Init();
    LOG("\nCPU @ %dHz\n", SystemCoreClock);

    PWM_GPIOInit();

    PWM_ConfigOutputChannel(PWM, PWM_CH1, 100000, 30);
    PWM_ConfigOutputChannel(PWM, PWM_CH4, 200000, 50);

    PWM_EnableIndependentMode(PWM);
    PWM_EnableOutput(PWM, BIT(PWM_CH1) | BIT(PWM_CH4));
    PWM_Start(PWM, BIT(PWM_CH1) | BIT(PWM_CH4));

    while (1);
}

4.4 主要 API 说明

  • PWM_ConfigOutputChannel(PWM, ch, freq, duty):按目标频率/占空比配置通道输出(边沿对齐自动重装载模式)。

  • PWM_EnableIndependentMode(PWM):独立模式,各通道按自身配置输出。

  • PWM_EnableOutput(PWM, mask):使能对应通道输出引脚。

  • PWM_Start(PWM, mask):启动对应通道计数输出。

4.5 常见修改

  • 修改频率/占空比:直接改 PWM_ConfigOutputChannel()freqduty 参数。

  • 增加/更换输出引脚:修改 PWM_GPIOInit()SYS_SET_MFP() 的引脚复用配置,并同步修改 PWM_EnableOutput() / PWM_Start() 的通道掩码。