LISA PWM 基础输出示例
源码位置: samples/drivers/devices/lisa_pwm/output_basic 查看源码
功能说明
演示如何使用 LISA PWM 驱动输出固定频率和占空比的 PWM 信号,通过配置 PWM 通道参数并启动输出,实现可控的脉冲宽度调制信号。
PWM(脉冲宽度调制)信号广泛应用于 LED 调光、电机控制、音频输出等场景,通过调节占空比可以控制平均输出功率。
硬件连接
PA20: PWM0 通道 0 输出引脚
可连接 LED(带限流电阻)或示波器到 PA20 引脚进行验证。连接 LED 时,LED 正极通过限流电阻(推荐 220Ω-1kΩ)连接到 PA20,负极连接到 GND。
示例步骤
获取 PWM0 设备
设置 PWM 通道 0 参数(频率 5kHz,占空比 50%)
启动 PWM 输出
保持 PWM 持续输出
编译
重要提示:在编译前,请先确认您使用的开发板型号。SDK 目前支持以下开发板:
arcs_evb - ARCS EVB 评估板
arcs_mini - ARCS Mini 开发板
根据您的开发板型号,选择对应的编译命令:
在示例目录下执行编译:
# 使用 arcs_evb 开发板
./build.sh -C -DBOARD=arcs_evb
# 或使用 arcs_mini 开发板
./build.sh -C -DBOARD=arcs_mini
Note
如果在 SDK 根目录执行,需要指定示例路径:
# 使用 arcs_evb 开发板
./build.sh -C -S samples/<示例路径> -DBOARD=arcs_evb
# 或使用 arcs_mini 开发板
./build.sh -C -S samples/<示例路径> -DBOARD=arcs_mini
Note
确保已安装对应的工具链。
烧录
编译完成后,使用 SDK tools 目录下的 cskburn 工具烧录固件:
./tools/burn/cskburn -s /dev/ttyUSB0 -b 3000000 0x0 build/arcs.bin -C arcs
Note
烧录参数说明:
-s /dev/ttyUSB0:串口设备路径,需要根据实际情况修改 - Linux 系统:通常是/dev/ttyUSB0或/dev/ttyACM0- 可通过ls /dev/tty*命令查看可用串口设备 - 不同开发板或 USB 转串口芯片可能使用不同的设备名-b 3000000:烧录波特率(3Mbps)0x0:烧录起始地址build/arcs.bin:编译生成的固件路径-C arcs:芯片类型
注意事项:
确保开发板已正确连接到电脑
如果无法识别串口设备,请检查 USB 连接线是否正常,或尝试其他 USB 端口
预期输出
终端输出:
=== LISA PWM output example ===
pwm0 device ready
PWM enabled: 5kHz, 50% duty cycle
PWM 输出:
PA20 引脚输出 5kHz 的 PWM 信号
占空比为 50%(高电平和低电平时间各占一半)
核心 API
API |
说明 |
|---|---|
|
获取 PWM 设备 |
|
检查设备是否就绪 |
|
设置 PWM 通道频率和占空比 |
|
启动 PWM 通道输出 |
|
停止 PWM 通道输出 |
关键代码
#define PWM_CHANNEL 0
/* 设置 PWM 频率为 5000Hz,占空比为 50% */
int ret = lisa_pwm_set(pwm_dev, PWM_CHANNEL, 5000, 50);
if (ret != 0) {
LISA_LOGE(LOG_TAG, "Error: PWM set failed (code: %d)", ret);
return -1;
}
/* 启用 PWM 输出 */
ret = lisa_pwm_enable(pwm_dev, PWM_CHANNEL);
if (ret != 0) {
LISA_LOGE(LOG_TAG, "Error: PWM enable failed (code: %d)", ret);
return -1;
}
LISA_LOGI(LOG_TAG, "PWM enabled: 5kHz, 50%% duty cycle");
参数说明
PWM 配置参数
lisa_pwm_set() 函数参数说明:
int lisa_pwm_set(lisa_device_t *dev, uint32_t channel,
uint32_t frequency, uint32_t duty_cycle);
dev: PWM 设备指针channel: PWM 通道编号(本示例使用通道 0)frequency: PWM 输出频率,单位 Hz(本示例为 5000Hz = 5kHz)duty_cycle: 占空比,范围 0-100,表示百分比(本示例为 50%)
占空比说明
1%-10%: 低占空比,低亮度/低速
50%: 高电平和低电平时间各占一半(中等亮度)
90%-99%: 高占空比,高亮度/高速
注意:硬件限制不支持 0% 或 100% 占空比
频率选择
低频率(< 100Hz): 可能产生闪烁,适合步进电机等应用
中频率(100Hz - 10kHz): 适合 LED 调光、音频等应用
高频率(> 10kHz): 适合高速电机控制、开关电源等应用
本示例使用 5kHz 作为推荐频率,既能保证 LED 无闪烁,又能确保稳定输出。
验证方法
方法 1: LED 验证
连接 LED(带限流电阻)到 PA20 引脚
LED 应以 中等亮度 持续点亮(50% 占空比)
如果 LED 全亮或全灭,检查接线和代码配置
方法 2: 示波器验证
连接示波器探头到 PA20 引脚
观察波形应为矩形波,参数如下:
频率: 5000 Hz (5 kHz)
占空比: 50%(高电平时间 = 低电平时间 = 100μs)
幅值: 芯片 IO 电压(通常为 3.3V)
使用场景
适用于需要可调输出功率的场景:
LED 调光:通过调节占空比控制 LED 亮度
电机调速:通过调节占空比控制电机转速
音频输出:产生不同频率的音调
模拟 DAC:通过低通滤波将 PWM 转换为模拟电压
注意事项
占空比范围:占空比参数范围为 1-99,硬件不支持 0% 或 100%
频率限制:PWM 频率受硬件限制,过高或过低的频率可能无法精确输出
限流保护:连接 LED 时必须串联限流电阻,防止电流过大损坏引脚
通道独立:每个 PWM 通道可独立配置不同的频率和占空比
引脚复用:确保引脚已正确配置为 PWM 功能(示例中通过 pinmux 自动配置)