Edit online

测试指南

4 Dec 2024
Read time: 7 minute(s)

测试环境

  • 硬件
    • 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 自由方式演示。

  1. Luban-Lite 根目录下执行 scons --menuconfig,进入 menuconfig 的功能配置界面,将 XPWM 配置为普通模式:
    Board options --->
        Select ALL XPWM MODE (normal mode)  --->
    
  2. 配置输出频率为 1KHz,占空比为 80% 的 7 个脉冲。
    aic> pwm set010000008000007
    pwm info set on xpwm at channel 0
  3. 观察示波器,可以见到输出了 7 个脉冲。

- 使用举例 2: XPWM 持续输出功能演示。

  1. Luban-Lite 根目录下执行 scons --menuconfig,进入 menuconfig 的功能配置界面,将 XPWM 配置为连续模式:
    Board options --->
        Select ALL XPWM MODE (continuous mode)  --->
    
  2. 配置输出中断频率为 1KHz,占空比为 30%,任意个数脉冲。
    aic> pwm set010000003000007
    pwm info set on xpwm at channel 0
  3. 观察示波器,可以见到连续输出的 PWM。

- 使用举例 3: XPWM 中断配置 FIFO 方式演示。

  1. Luban-Lite 根目录下执行 scons --menuconfig,进入 menuconfig 的功能配置界面,将 XPWM 配置为使用 FIFO 模式,同时关闭 DMA 支持:
    Board options --->
        Select ALL XPWM MODE (fifo mode)  --->
    ......
    [ ] Using DMA
    
  2. 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
  3. 使能通道 0/1/2/3。
    aic>pwm enable0
    aic>pwm enable1
    aic>pwm enable2
    aic>pwm enable3
  4. 可以获取当前 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
    
  5. 观察示波器,可以看到 XPWM 在不断输出 FIFO 中的脉冲组合。

- 使用举例 4: XPWM DMA 配置 FIFO 方式演示。

  1. Luban-Lite 根目录下执行 scons --menuconfig,进入 menuconfig 的功能配置界面,将 XPWM 配置为使用 FIFO 模式,同时打开 DMA 支持:
    Board options --->
        Select ALL XPWM MODE (fifo mode)  --->
    ......
    [*] Using DMA
    
  2. 先使能通道 0/1/2/3。
    aic>pwm enable0
    aic>pwm enable1
    aic>pwm enable2
    aic>pwm enable3
  3. 手动设置 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
  4. 观察示波器。

  5. 进行 DMA 循环测试,循环输出代码中的组合 N 次,此处演示 3 次。
    aic > pwm dma_test 03
    xpwm ch0 will loop 3times
    提示:
    1. dma_test 中,会将 BUFF 中的数据循环输出,此处作演示,仅使用了一个 BUFF 空间,没有区分通道,故每个通道不能同时调用 dma_test

    2. dma_test 中输出的测试组合,在源码 rt_drv_pwm.c 中。

    3. 由于单组 FIFO 数据大小为 3*32bits,不符合清 CACHE 数据大小对齐,会出现相关警告为正常现象,不影响使用。

      测试组合如下:

  6. 观察示波器。

- 使用举例 5: XPWM 中断配置 FIFO 方式演示。

  1. PWM 功能下 pulse_cnt 参数将被忽略,配置输出频率为 1KHz,占空比为 80%。

    aic> pwm set810000008000000
    pwm info set on xpwm at channel 8
  2. 观察示波器,可以见到相应的 PWM 波。

    提示:

    XPWM 通道为 0-7,PWM 通道为 8-23。