PWM Drivers
For the purposes of this driver, a PWM device is any device that generates periodic output pulses of controlled frequency and pulse width. Such a device might be used, for example, to perform pulse-width modulated output or frequency/pulse-count modulated output (such as might be needed to control a stepper motor).
The NuttX PWM driver is split into two parts:
An “upper half”, generic driver that provides the common PWM interface to application level code, and
A “lower half”, platform-specific driver that implements the low-level timer controls to implement the PWM functionality.
Files supporting PWM can be found in the following locations:
Interface Definition. The header file for the NuttX PWM driver reside at
include/nuttx/timers/pwm.h
. This header file includes both the application level interface to the PWM driver as well as the interface between the “upper half” and “lower half” drivers. The PWM module uses a standard character driver framework. However, since the PWM driver is a device control interface and not a data transfer interface, the majority of the functionality available to the application is implemented in driver ioctl calls.“Upper Half” Driver. The generic, “upper half” PWM driver resides at
drivers/timers/pwm.c
.“Lower Half” Drivers. Platform-specific PWM drivers reside in
arch/<architecture>/src/<hardware>
directory for the specific processor<architecture>
and for the specific<chip>
PWM peripheral devices.