• sales

    +86-0755-88291180

Luckfox Pico RV1103【Tutorial on how to use PWM】

Due to pin multiplexing on the LuckFox Pico and LuckFox Pico Plus, there may be conflicts in pin functionality, so PWM functionality cannot be enabled by default for all pins.


】Use the GPIO sysfs interface to control PWM:


1] View the default enabled PWM interfaces:

# ls -l /sys/class/pwm

lrwxrwxrwx    1 root     root             0 pwmchip10 -> ../../devices/platform/ff490020.pwm/pwm/pwmchip10

lrwxrwxrwx    1 root     root             0 pwmchip1 -> ../../devices/platform/ff350010.pwm/pwm/pwmchip1

lrwxrwxrwx    1 root     root             0 pwmchip11 -> ../../devices/platform/ff490030.pwm/pwm/pwmchip11

lrwxrwxrwx    1 root     root             0 pwmchip0 -> ../../devices/platform/ff350000.pwm/pwm/pwmchip0


2] Test PWM. Export PWM1_M0 (GPIO0_A4_d) to the user space:

echo 0 > /sys/class/pwm/pwmchip1/export


3] Set the PWM period unit to ns. For example, the period of a 1KHz frequency is 1000000ns:

echo 1000000 > /sys/class/pwm/pwmchip1/pwm0/period


4] Set the duty cycle:

 #Set the duty cycle to 10% (with a period of 100,000 nanoseconds and a duration of 10,000 nanoseconds).

echo 100000 > /sys/class/pwm/pwmchip1/pwm0/duty_cycle  

echo 200000 > /sys/class/pwm/pwmchip1/pwm0/duty_cycle

echo 300000 > /sys/class/pwm/pwmchip1/pwm0/duty_cycle

echo 400000 > /sys/class/pwm/pwmchip1/pwm0/duty_cycle

echo 500000 > /sys/class/pwm/pwmchip1/pwm0/duty_cycle

echo 600000 > /sys/class/pwm/pwmchip1/pwm0/duty_cycle

echo 700000 > /sys/class/pwm/pwmchip1/pwm0/duty_cycle

echo 800000 > /sys/class/pwm/pwmchip1/pwm0/duty_cycle

echo 900000 > /sys/class/pwm/pwmchip1/pwm0/duty_cycle

 # Set the duty cycle to 100% (with a period of 1,000,000 nanoseconds and a duration of 1,000,000 nanoseconds).

echo 1000000 > /sys/class/pwm/pwmchip1/pwm0/duty_cycle

#Set the duty cycle to 0, which is equivalent to stopping the duty cycle output.

echo 0 > /sys/class/pwm/pwmchip1/pwm0/duty_cycle


5]  Set the normal PWM polarity:

#Set the normal PWM polarity:

echo "normal" > /sys/class/pwm/pwmchip1/pwm0/polarity

#Set the inverted PWM polarity:

echo "inversed" > /sys/class/pwm/pwmchip1/pwm0/polarity


6] Enable PWM :

echo 1 > /sys/class/pwm/pwmchip1/pwm0/enable




7] Disable PWM :

echo 0 > /sys/class/pwm/pwmchip1/pwm0/enable



8] Disable exporting PWM to user space:

echo 0 > /sys/class/pwm/pwmchip1/unexport


9] Screenshot of the operation process:



】Test the built-in sample program of the official SDK:


(The following operations need to be performed in the terminal of the Pico development board)

3] Run the test sample program: 
chmod 777 ./luckfox_pwm_test
## Grant executable permissions to the file
./luckfox_pwm_test 3


4] Running result:

TAG: Magnetic Encoder Servo Motor 85KG.CM 12V/24V 360° RS485 High Precision And Large Torque EPS32S3 1.8inch Round LCD Display WIFI-AIDA64-Secondary-TouchScreen/Wireless-Power/Video-Player LVGL Luckfox Pico Camera User Guide Raspberry Pi 5 RTC Battery Raspberry Pi RP2040 Keyboard Pi5 Active Cooler RM520N GL 5G/4G/3G M.2 Moudle IoT EMBB For LTE-A/NSA/SA And GNSS For DFOTA /VoLTE For Quectel Raspberry Pi Pico RP2040-LCD-0.96 User Guide 4 inch e Paper HAT+ E Ink Spectra E6 Full-Color 600x400 Screen Display For Arduino /Raspberry Pi /Jetson Nano /STM32 Pi5 Case Jetson Nano Heatsink Raspberry Pi 5 Raspberry Pi 5 Gripper Serial Robotic Arm Gripper Mechanical claw Serial Bus Servo ST3215/CF35-12 ESP32 Development Board WiFi+Bluetooth Ultra Low Power Dual Core ESP 32S ESP 32 Similar ESP8266 Raspberry Pi Audio 4.26inch-e-Paper JETSON NANO MINI Fan ESP32 S3 Development Board 1.46 inch Round LCD 1.46inch Display 412x412 QMI8658 Sensor / MIC / SD /MP3 Audio /Battery Port LVGL/HMI For Arduino DC-DC Step-Down Mini voltage Moudle Input 5~36V voltage Output 5V/3.3V 4A