CoolPi-4B硬件扩展五:PWM
-
如下表所示,40pin连接器包含7个可用于输出PWM信号的GPIO,其中PIN5 PIN12共用PWM3,PIN38 PIN40共用PWM15,这两个PWM信号同一时刻只能从一个GPIO输出,不能2个GPIO同时输出,所以40PIN连接器一共有5个独立的PWM口可以同时工作 :
序号 端口定义 描述 IO电平 设备节点 5 GPIO0_D4 PWM3_IR_M0 TTL 3.3V /sys/class/pwm/pwmchip3 7 GPIO1_B7 PWM13_M2 TTL 3.3V /sys/class/pwm/pwmchip13 12 GPIO1_A7 PWM3_IR_M3 TTL 3.3V /sys/class/pwm/pwmchip3 32 GPIO3_B1 PWM2_M1 TTL 3.3V /sys/class/pwm/pwmchip2 36 GPIO4_B2 PWM14_M1 TTL 3.3V /sys/class/pwm/pwmchip14 38 GPIO4_B3 PWM15_IR_M1 TTL 3.3V /sys/class/pwm/pwmchip15 40 GPIO3_C3 PWM15_IR_M0 TTL 3.3V /sys/class/pwm/pwmchip15 DTS配置
PWM2口配置如下,其它接口类似,首先配置PWM接口对应的pinctrl,比如PWM2为PWM2_M1,然后使能节点即可。
&pwm2 { pinctrl-0 = <&pwm2m1_pins>; status = "okay"; };
操作PWM
- 使用 echo 命令将要操作的 PWM 编号 export,注意操作需要root权限。
root@coolpi-4b:/# echo 0 >/sys/class/pwm/pwmchip2/export /*export 之后就会生成/sys/class/pwm/pwmchip2/pwm0目录*/ root@coolpi-4b:/sys/class/pwm/pwmchip2/pwm0# ls capture duty_cycle enable output_type period polarity power uevent
- 使用 echo 命令设置 PWM 的周期:
echo 1000000 > /sys/class/pwm/pwmchip2/pwm0/period /*设置PWM一个周期的时间,单位为ns,即一个周期为1KHZ。*/
- 使用 echo 命令设置 PWM 的占空比:
echo 500000 > /sys/class/pwm/pwmchip2/pwm0/duty_cycle /*设置PWM一个周期中“ON”的时间,单位为ns,即占空比=duty_cycle/period=50%。*/
- 使用 echo 命令使能 PWM
echo 1 > /sys/class/pwm/pwmchip2/pwm0/enable
-