Difference between revisions of "PWM"

From ArmadeusWiki
Jump to: navigation, search
m (Configuration)
m
Line 16: Line 16:
  
 
== Installation ==
 
== Installation ==
Either copy generated module ''target/linux/modules/pwm/pwm.ko'' to your system with TFTP or NFS or reflash the generated rootfs
+
Either copy generated module ''target/linux/modules/pwm/pwm.ko'' to your system with TFTP or NFS or reflash the generated rootfs. [[Linux_drivers_generalities|For more informations.]]
  
 
== Usage ==
 
== Usage ==
Line 26: Line 26:
 
  # DEV=`cat /proc/devices | grep imx-pwm | cut -d " " -f 1`; mknod /dev/pwm c $DEV 0
 
  # DEV=`cat /proc/devices | grep imx-pwm | cut -d " " -f 1`; mknod /dev/pwm c $DEV 0
  
== PWM Mode ==
+
=== PWM Mode ===
  
 
<strong>Remark:</strong>
 
<strong>Remark:</strong>
Line 33: Line 33:
  
 
Now you have access to /sys/class/pwm/ functionnalities:
 
Now you have access to /sys/class/pwm/ functionnalities:
* to activate PWM:
 
# echo 1 > /sys/class/pwm/pwm0/active
 
* to de-activate PWM:
 
# echo 0 > /sys/class/pwm/pwm0/active
 
 
* to change frequency (for example 500 Hz):
 
* to change frequency (for example 500 Hz):
 
  # echo 500 > /sys/class/pwm/pwm0/frequency
 
  # echo 500 > /sys/class/pwm/pwm0/frequency
Line 43: Line 39:
 
* to change duty cycle (for example 50.0%)
 
* to change duty cycle (for example 50.0%)
 
  # echo 500 > /sys/class/pwm/pwm0/duty
 
  # echo 500 > /sys/class/pwm/pwm0/duty
 +
* to activate PWM:
 +
# echo 1 > /sys/class/pwm/pwm0/active
 +
* to de-activate PWM:
 +
# echo 0 > /sys/class/pwm/pwm0/active
  
== Audio Mode ==
+
=== Audio Mode ===
Audio playback mode is working since v0.5 of PWM driver (thanks to SebastienR).
+
Audio playback mode is working since v0.5 of PWM driver (thanks to [[User:SebastienR]]).
 
You can play 8, 16 & 32 KHz 8bit linear RAW sound. It's recommended to play 8kHz one, as they use less CPU ressources.
 
You can play 8, 16 & 32 KHz 8bit linear RAW sound. It's recommended to play 8kHz one, as they use less CPU ressources.
 
To convert a sound to the right format we recommend to use SoX (on Linux).
 
To convert a sound to the right format we recommend to use SoX (on Linux).
Line 67: Line 67:
 
* [http://sox.sourceforge.net/Docs/FAQ SoX, sound format converter]
 
* [http://sox.sourceforge.net/Docs/FAQ SoX, sound format converter]
 
* http://en.wikipedia.org/wiki/Pulse-width_modulation
 
* http://en.wikipedia.org/wiki/Pulse-width_modulation
 +
 +
[[Category:Linux_drivers]]
 +
[[Category:ExternalDeviceControl]]

Revision as of 18:35, 20 December 2008

On this page, you will find usefull informations to configure and use the Pulse Width Modulation (PWM) capabilities of your APF9328 board.

Your board is capable of driving 2 PWM signals:

  • one is linked to the LCD controller and allow to control the LCD backlight
  • the other can be used to generate a PWM signal in several mode:
    • audio playback
    • real PWM

Configuration

First be sure to have the PWM Linux driver activated:

$ make linux26-menuconfig

And in Device Drivers ---> Armadeus specific drivers choose:
Linux config pwm.png
Then rebuild your system:

$ make

Installation

Either copy generated module target/linux/modules/pwm/pwm.ko to your system with TFTP or NFS or reflash the generated rootfs. For more informations.

Usage

  • Load the module:
# insmod /lib/modules/2.6.23.1/extra/pwm/pwm.ko

or (if you have reflashed your rootfs):

# modprobe pwm
  • Create device file if not existing (Major is dynamically allocated)
# DEV=`cat /proc/devices | grep imx-pwm | cut -d " " -f 1`; mknod /dev/pwm c $DEV 0

PWM Mode

Remark:

  • The pwm has a resolution of 1uS


Now you have access to /sys/class/pwm/ functionnalities:

  • to change frequency (for example 500 Hz):
# echo 500 > /sys/class/pwm/pwm0/frequency
  • to change period (for example 100us):
# echo 100 > /sys/class/pwm/pwm0/period
  • to change duty cycle (for example 50.0%)
# echo 500 > /sys/class/pwm/pwm0/duty
  • to activate PWM:
# echo 1 > /sys/class/pwm/pwm0/active
  • to de-activate PWM:
# echo 0 > /sys/class/pwm/pwm0/active

Audio Mode

Audio playback mode is working since v0.5 of PWM driver (thanks to User:SebastienR). You can play 8, 16 & 32 KHz 8bit linear RAW sound. It's recommended to play 8kHz one, as they use less CPU ressources. To convert a sound to the right format we recommend to use SoX (on Linux). For exemple:

[host]$ sox /usr/share/sounds/KDE_Chimes_1.ogg -r 8192 -b -u -c 1 Chimes.raw
-r -> sampling rate
-b -> byte/8bit signal
-u -> linear /not compressed
-c 1 -> Mono / 1 channel

Then you can test it using target/linux/modules/pwm/test/testplaymode:

[host:/.../armadeus]$ make -C target/linux/modules/pwm/test/
[host:/.../armadeus]$ cp target/linux/modules/pwm/test/testplaymode $NFS_DIR
[host:/.../armadeus]$ cp target/linux/modules/pwm/test/KDE_Startup_2.raw $NFS_DIR

on target do:

# testplaymode

or

# testplaymode KDE_Startup_2.raw

Links