BeagleBone Black (v4.14) 上的 PWM 芯片到引脚映射

PWM chip to pin mapping on BeagleBone Black (v4.14)

关于如何在较新版本的内核上为 PWM 配置 Beaglebone 的信息很少。我按照 的说明与 PWM 芯片接口,但现在我需要弄清楚每个芯片连接到的引脚。

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

当我 运行 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 芯片到引脚映射?我使用的是 TI AM335x BeagleBone Black Wireless 运行ning 内核版本 4.14.37-ti-r46 .

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

PWM Subsystem 0: 0x48300000

  • eCAP0: 0x48300100
  • ePWM0: 0x48300200

PWM Subsystem 1: 0x48302000

  • eCAP1: 0x48302100
  • ePWM1: 0x48302200

PWM Subsystem 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 接口和地址列表可能与问题中提供的列表不同,但此方法仍然可以确定最终的引脚映射。