【问题标题】:PWM chip to pin mapping on BeagleBone Black (v4.14)BeagleBone Black (v4.14) 上的 PWM 芯片到引脚映射
【发布时间】:2018-05-06 20:41:12
【问题描述】:

关于如何在较新版本的内核上为 PWM 配置 Beaglebone 的信息很少。我按照PWM on BeagleBone Black (v4.14) 的说明连接了 PWM 芯片,但现在我需要弄清楚每个芯片所连接的引脚。

根据BeagleBone Black documentation 中的 Cape Expansion Headers 图片,我知道:

  • EHRPWM0A = P9_22
  • EHRPWM0B = P9_21
  • EHRPWM1A = P9_14
  • EHRPWM1B = P9_16
  • EHRPWM2A = P8_19
  • EHRPWM2B = P8_13
  • ECAP0 = P9_42

当我运行 ls -lh /sys/class/pwm 查看可用的 PWM 接口时,我看到了:

lrwxrwxrwx 1 root pwm 0 May  6 14:31 pwmchip0 -> ../../devices/platform/ocp/48300000.epwmss/48300100.ecap/pwm/pwmchip0
lrwxrwxrwx 1 root pwm 0 May  6 14:31 pwmchip1 -> ../../devices/platform/ocp/48300000.epwmss/48300200.pwm/pwm/pwmchip1
lrwxrwxrwx 1 root pwm 0 May  6 14:31 pwmchip3 -> ../../devices/platform/ocp/48302000.epwmss/48302200.pwm/pwm/pwmchip3
lrwxrwxrwx 1 root pwm 0 May  6 14:31 pwmchip5 -> ../../devices/platform/ocp/48304000.epwmss/48304100.ecap/pwm/pwmchip5
lrwxrwxrwx 1 root pwm 0 May  6 14:31 pwmchip6 -> ../../devices/platform/ocp/48304000.epwmss/48304200.pwm/pwm/pwmchip6

当我将此与BeagleBone PWM example 进行比较时,我发现可用的芯片和地址是不同的。这个例子确实提到了 PWM 可以改变,所以我需要弄清楚新的映射。

如何确定 PWM 芯片到引脚的映射?我使用的是运行内核版本 4.14.37-ti-r46 的 TI AM335x BeagleBone Black Wireless。

【问题讨论】:

    标签: beagleboneblack pwm


    【解决方案1】:

    TI AM335x and AMIC110 Sitara Processors Technical Reference Manual 的第 184 页给出了 PWM 芯片的内存映射:

    PWM 子系统 0:0x48300000

    • eCAP0: 0x48300100
    • ePWM0: 0x48300200

    PWM 子系统 1:0x48302000

    • eCAP1: 0x48302100
    • ePWM1: 0x48302200

    PWM 子系统 2:0x48304000

    • eCAP2: 0x48304100
    • ePWM2: 0x48304180

    每个 PWM 接口的地址(在问题中发布)包含硬件地址。匹配这些地址给我们:

    • EHRPWM0 (ePWM0) 是 pwmchip1
    • EHRPWM1 (ePWM1) 是 pwmchip3
    • EHRPWM2 (ePWM2) 是 pwmchip6
    • ECAP0 (eCAP0) 是 pwmchip0

    每个EHRPWM 芯片都有两个PWM 输出通道,因此有AB 变体。它们通过将01 回显到export 来导出。这些通道必须使用相同的频率,但可以有不同的占空比。

    因此,给定这个接口配置,EHRPWM0AEHRPWM0B 位于:

    root@beaglebone:~# cd /sys/class/pwm/pwmchip1
    root@beaglebone:/sys/class/pwm/pwmchip1# ls
    device  export  npwm  power  subsystem  uevent  unexport
    

    导出EHRPWM0A (P9_22):

    root@beaglebone:/sys/class/pwm/pwmchip0# echo 0 > export
    root@beaglebone:/sys/class/pwm/pwmchip0# ls
    device  export  npwm  power  pwm-1:0  subsystem  uevent  unexport
    

    导出EHRPWM0B (P9_21):

    root@beaglebone:/sys/class/pwm/pwmchip0# echo 1 > export
    root@beaglebone:/sys/class/pwm/pwmchip0# ls
    device  export  npwm  power  pwm-1:1  subsystem  uevent  unexport
    

    注意:可用 PWM 接口和地址列表可能与问题中提供的列表不同,但此方法仍可用于确定最终引脚映射。

    【讨论】:

    • sysfs 名称到控制器的映射可以更改。例如,不能保证 pwmchip0 在所有内核和设备覆盖上都是 EHRPWM0A。唯一静态的就是内存地址。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多