76 lines
2.3 KiB
ReStructuredText
76 lines
2.3 KiB
ReStructuredText
===========
|
|
DAC Drivers
|
|
===========
|
|
|
|
- ``include/nuttx/analog/dac.h``. All structures and APIs needed
|
|
to work with DAtC drivers are provided in this header file. This
|
|
header file includes:
|
|
|
|
#. Structures and inerface descriptions needed to develop a
|
|
low-level, architecture-specific, DAC driver.
|
|
#. To register the DAC driver with a common DAC character
|
|
driver.
|
|
#. Interfaces needed for interfacing user programs with the
|
|
common DAC character driver.
|
|
|
|
- ``drivers/analog/dac.c``. The implementation of the common DAC
|
|
character driver.
|
|
|
|
Application Programming Interface
|
|
=================================
|
|
|
|
The first necessary thing to be done in order to use the DAC driver from an
|
|
application is to include the correct header filer. It contains the
|
|
Application Programming Interface to the PWM driver. To do so, include
|
|
|
|
.. code-block:: c
|
|
|
|
#include <nuttx/analog/dac.h>
|
|
|
|
DAC driver is registered as a POSIX character device driver into ``/dev``
|
|
namespace. It is necessary to open the device to get a file descriptor for
|
|
further operations. This can be done with standard POSIX ``open()`` call.
|
|
|
|
Standard POSIX ``write()`` call is used to send data from an application to
|
|
a controller. Structure ``dac_msg_s`` is used to pass the data/samples.
|
|
|
|
.. c:struct:: dac_msg_s
|
|
.. code-block:: c
|
|
|
|
begin_packed_struct struct dac_msg_s
|
|
{
|
|
/* The 8-bit DAC Channel */
|
|
uint8_t am_channel;
|
|
/* DAC convert result (4 bytes) */
|
|
int32_t am_data;
|
|
} end_packed_struct;
|
|
|
|
Application Example
|
|
~~~~~~~~~~~~~~~~~~~
|
|
|
|
An example application can be found in ``nuttx-apps`` repository under
|
|
path ``examples/dac``. It provides command line interface to write data
|
|
to DAC channels.s
|
|
|
|
Configuration
|
|
=============
|
|
|
|
This section describes DAC driver configuration in ``Kconfig``. The reader
|
|
should refer to target documentation for target specific configuration.
|
|
|
|
The peripheral is enabled by ``CONFIG_ANALOG`` and ``CONFIG_DAC`` options,
|
|
respectively. The FIFO queue size is configurable with ``CONFIG_DAC_FIFOSIZE``.
|
|
This size is limited to ``255`` to fit into ``uint8_t``.
|
|
|
|
External Devices
|
|
================
|
|
|
|
NuttX also provides support for various external DAC devices. These usually
|
|
communicates with MCU with I2C or SPI peripherals.
|
|
|
|
.. toctree::
|
|
:maxdepth: 1
|
|
:glob:
|
|
|
|
*/*
|