~~tag>Edge2 PWM~~
====== Edge2 PWM ======
===== Introduction =====
This page introduces the usage of hardware PWM, and leads you to control the hardware PWM on the [[products:sbc:edge2:applications:gpio:40pin-header|16-pin Header]] .
For Edge2, in order to use the PWM function, you need to attach the IO extension board.
===== PWM Information =====
| ^ PWM ^ PIN ^ GPIO Name ^ GPIO Number ^ DT Overlays Node ^ Device Node ^
^ Edge2 | PWM14 | 13 | GPIO3_C2 | 114 | edge2-io-pwm | /sys/class/pwm/pwmchip2 |
===== Enable PWM =====
In order to use the PWM, you need to enable the PWM function via [[products:sbc:common:configurations:device-tree-overlay|Device Tree Overlay]].
Edit ''/boot/dtb/rockchip/rk3588s-khadas-edge2.dtb.overlay.env'' to add pwm node to ''fdt_overlays'' node if it doesn't exist.
You need to add ''edge2-io-pwm'' to node ''fdt_overlays'' if it doesn't exist to enable ''PWM14''.
```shell
fdt_overlays=edge2-io-pwm
```
After reboot, you will see the pwm device node.
```shell
$ ls /sys/class/pwm/pwmchip2
device export npwm power subsystem uevent unexport
```
===== Disable PWM to Use GPIO =====
If you want to use normal GPIO instead of PWM, you can remove the PWM node in [[products:sbc:common:configurations:device-tree-overlay|Device Tree Overlay]].
===== Control PWM =====
**Enable PWM:**
```shell
echo 0 | sudo tee /sys/class/pwm/pwmchip2/export
echo 1000000 | sudo tee /sys/class/pwm/pwmchip2/pwm0/period
echo 500000 | sudo tee /sys/class/pwm/pwmchip2/pwm0/duty_cycle
echo 1 | sudo tee /sys/class/pwm/pwmchip2/pwm0/enable
```
Use an oscilloscope to check if the pins have been successfully enabled.
{{products:sbc:common:applications:gpio:pwm-oscilloscope.png|pwm-oscilloscope}}
If you use an oscilloscope to view the PWM waveform, remember that the SBC and the oscilloscope need to share the same GND (ground).
**Disable PWM:**
```shell
echo 0 | sudo tee /sys/class/pwm/pwmchip2/pwm0/enable
```