测试指南
测试环境
- 硬件
-
FPGA 验证版
-
示波器,用于观察输出 XPWM/PWM 信号的波形
-
- 软件
-
PC 端的串口终端软件,用于 PC 和开发板进行串口通信
-
RT-Thread 系统自带的
pwm
命令行工具
-
- 软件配置
当打开 RT-Thread 系统的 PWM 设备驱动框架,就会在启动时注册生成
pwm
命令。
测试 XPWM/PWM
pwm 命令帮助信息如下:
spss /> pwm
Usage:
pwm probe <device name> - probe pwm by name
pwm enable <channel> - enable pwm channel
pwm disable <channel> - disable pwm channel
pwm get <channel> - get pwm channel info
pwm set <channel> <period> <pulse> <pulse cnt> - set pwm channel info
pwm set_fifo_num <channel> <fifo_num> - set xpwm fifo count
pwm set_fifo <channel> <fifo_index> <period> <pulse> <pulse cnt> - set xpwm fifo info
pwm get_fifo <channel> - get xpwm fifo info
pwm dma_test <channel> <loop_times> - xpwm dma test
测试前应先注册设备:
aic> pwm probe xpwm
probe xpwm success
- 使用举例 1: XPWM 自由方式演示。
-
在 Luban-Lite 根目录下执行 scons --menuconfig,进入 menuconfig 的功能配置界面,将 XPWM 配置为普通模式:
Board options ---> Select ALL XPWM MODE (normal mode) --->
-
配置输出频率为 1KHz,占空比为 80% 的 7 个脉冲。
aic> pwm set010000008000007 pwm info set on xpwm at channel 0
-
观察示波器,可以见到输出了 7 个脉冲。
- 使用举例 2: XPWM 持续输出功能演示。
-
在 Luban-Lite 根目录下执行 scons --menuconfig,进入 menuconfig 的功能配置界面,将 XPWM 配置为连续模式:
Board options ---> Select ALL XPWM MODE (continuous mode) --->
-
配置输出中断频率为 1KHz,占空比为 30%,任意个数脉冲。
aic> pwm set010000003000007 pwm info set on xpwm at channel 0
-
观察示波器,可以见到连续输出的 PWM。
- 使用举例 3: XPWM 中断配置 FIFO 方式演示。
-
在 Luban-Lite 根目录下执行 scons --menuconfig,进入 menuconfig 的功能配置界面,将 XPWM 配置为使用 FIFO 模式,同时关闭 DMA 支持:
Board options ---> Select ALL XPWM MODE (fifo mode) ---> ...... [ ] Using DMA
-
XPWM 最大支持 8 组 FIFO,其中每组深度为 3*32bits。 此处演示 XPWM 通道 0 设置 5 组 FIFO,通道 1 设置 1 组 FIFO,通道 2 设置 1 组 FIFO,通道 3 设置 2 组 FIFO。
aic> pwm set_fifo 0010000001000001 pwm set fifo on xpwm at channel 0 aic> pwm set_fifo 015000002000002 pwm set fifo on xpwm at channel 0 aic> pwm set_fifo 025000003000003 pwm set fifo on xpwm at channel 0 aic> pwm set_fifo 032000001000001 pwm set fifo on xpwm at channel 0 aic> pwm set_fifo 043000002000002 pwm set fifo on xpwm at channel 0 aic> pwm set_fifo_num 05 pwm set fifo num on xpwm at channel 0 aic> pwm set_fifo 1010000005000001 pwm set fifo on xpwm at channel 1 aic> pwm set_fifo_num 11 pwm set fifo num on xpwm at channel 1 aic> pwm set_fifo 2010000003000001 pwm set fifo on xpwm at channel 2 aic> pwm set_fifo_num 21 pwm set fifo num on xpwm at channel 2 aic> pwm set_fifo 3010000001000002 pwm set fifo on xpwm at channel 3 aic> pwm set_fifo 3110000002000003 pwm set fifo on xpwm at channel 3 aic> pwm set_fifo_num 32 pwm set fifo num on xpwm at channel 3
-
使能通道 0/1/2/3。
aic>pwm enable0 aic>pwm enable1 aic>pwm enable2 aic>pwm enable3
-
可以获取当前 XPWM 通道的 FIFO 信息。
aic> pwm get_fifo 0[179795] I/XPWM: ch0 fifo valid count: 5[179800] I/XPWM: fifo_idx 0: prd:1000000 pulse:100000 pulse cnt:1 [179808] I/XPWM: fifo_idx 1: prd:500000 pulse:200000 pulse cnt:2 [179815] I/XPWM: fifo_idx 2: prd:500000 pulse:300000 pulse cnt:3 [179823] I/XPWM: fifo_idx 3: prd:200000 pulse:100000 pulse cnt:1 [179830] I/XPWM: fifo_idx 4: prd:300000 pulse:200000 pulse cnt:2
-
观察示波器,可以看到 XPWM 在不断输出 FIFO 中的脉冲组合。
- 使用举例 4: XPWM DMA 配置 FIFO 方式演示。
-
在 Luban-Lite 根目录下执行 scons --menuconfig,进入 menuconfig 的功能配置界面,将 XPWM 配置为使用 FIFO 模式,同时打开 DMA 支持:
Board options ---> Select ALL XPWM MODE (fifo mode) ---> ...... [*] Using DMA
-
先使能通道 0/1/2/3。
aic>pwm enable0 aic>pwm enable1 aic>pwm enable2 aic>pwm enable3
-
手动设置 FIFO。 FIFO INDEX 参数将会被忽略,此处只能设置一个 FIFO 进行测试。
aic > pwm set_fifo 0010000003000005 pwm set fifo on xpwm at channel 0 aic > pwm set_fifo 106000005000003 pwm set fifo on xpwm at channel 1 aic > pwm set_fifo 208000005000007 pwm set fifo on xpwm at channel 2 aic > pwm set_fifo 3020003807 pwm set fifo on xpwm at channel 3
-
观察示波器。
-
进行 DMA 循环测试,循环输出代码中的组合 N 次,此处演示 3 次。
aic > pwm dma_test 03 xpwm ch0 will loop 3times
提示:-
dma_test
中,会将 BUFF 中的数据循环输出,此处作演示,仅使用了一个 BUFF 空间,没有区分通道,故每个通道不能同时调用dma_test
。 -
dma_test
中输出的测试组合,在源码 rt_drv_pwm.c 中。 -
由于单组 FIFO 数据大小为 3*32bits,不符合清 CACHE 数据大小对齐,会出现相关警告为正常现象,不影响使用。
测试组合如下:
-
-
观察示波器。
- 使用举例 5: XPWM 中断配置 FIFO 方式演示。
-
PWM 功能下
pulse_cnt
参数将被忽略,配置输出频率为 1KHz,占空比为 80%。aic> pwm set810000008000000 pwm info set on xpwm at channel 8
-
观察示波器,可以见到相应的 PWM 波。
提示:XPWM 通道为 0-7,PWM 通道为 8-23。