=========== 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 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: */*