Difference between revisions of "PWM"
m (→Usage) |
m (→Audio Mode) |
||
Line 67: | Line 67: | ||
=== Audio Mode === | === Audio Mode === | ||
− | Audio playback mode is working since v0.5 of PWM driver (thanks to [[User:SebastienR]]). | + | Audio playback mode is working since v0.5 of PWM driver (thanks to [[User:SebastienR|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 77: | Line 77: | ||
-c 1 -> Mono / 1 channel | -c 1 -> Mono / 1 channel | ||
− | Then you can test it using target/linux/modules/pwm/test/testplaymode: | + | Then you can test it using ''target/linux/modules/pwm/test/testplaymode'', which can be compiled that way: |
− | + | <pre class="host"> | |
− | + | $ make shell_env | |
− | + | $ . armadeus_env.sh | |
+ | $ export PATH=$PATH:$ARMADEUS_TOOLCHAIN_PATH | ||
+ | $ make -C target/linux/modules/pwm/test/ | ||
+ | $ cp target/linux/modules/pwm/test/testplaymode /tftpboot/ | ||
+ | $ cp target/linux/modules/pwm/test/KDE_Startup_2.raw /tftpboot/ | ||
+ | </pre> | ||
on target do: | on target do: | ||
<pre class="apf"> | <pre class="apf"> |
Revision as of 13:41, 6 May 2009
On this page, you will find usefull informations to configure and use the Pulse Width Modulation (PWM) capabilities of your APF9328 board.
The i.MXL processor 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
Hardware
i.MXL PWM module is using PWMO (PortA 2) pin as ouput.
- On DevFull development boards this pin is connected to pin 4 (TIM2) of "Timers" connector (X21)
Linux driver installation
i.MXL PWM driver is now installed by default in standard Armadeus rootfs. Following instructions are only given as reference (to uninstall it at rootfs generation for example):
- Launch Linux configuration:
$ make linux26-menuconfig
And in Device Drivers ---> Armadeus specific drivers choose:
- rebuild your system:
$ make
- then, either copy generated module target/linux/modules/pwm/imx-pwm.ko to your system with TFTP or NFS or reflash the generated rootfs. For more informations.
Usage
- Load the module:
# modprobe imx-pwm Initializing PWM class. Initializing PWM#0...PWM major number = 253 PWM driver v0.6 done.
- If you plan to use sound, create /dev/pwm device file if not already 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
After driver loading, 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 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, which can be compiled that way:
$ make shell_env $ . armadeus_env.sh $ export PATH=$PATH:$ARMADEUS_TOOLCHAIN_PATH $ make -C target/linux/modules/pwm/test/ $ cp target/linux/modules/pwm/test/testplaymode /tftpboot/ $ cp target/linux/modules/pwm/test/KDE_Startup_2.raw /tftpboot/
on target do:
# testplaymode
or
# testplaymode KDE_Startup_2.raw