mirror of
https://git.rtems.org/rtems-docs/
synced 2025-07-24 04:34:25 +08:00
Remove Analog Driver chapter
There exists no standard Analog Driver in the RTEMS code base. Close #2850.
This commit is contained in:
parent
7351405fe6
commit
4b5b49988d
@ -1,165 +0,0 @@
|
|||||||
.. comment SPDX-License-Identifier: CC-BY-SA-4.0
|
|
||||||
|
|
||||||
.. COMMENT: COPYRIGHT (c) 1988-2002.
|
|
||||||
.. COMMENT: On-Line Applications Research Corporation (OAR).
|
|
||||||
.. COMMENT: All rights reserved.
|
|
||||||
|
|
||||||
Analog Driver
|
|
||||||
*************
|
|
||||||
|
|
||||||
The Analog driver is responsible for providing an interface to Digital to
|
|
||||||
Analog Converters (DACs) and Analog to Digital Converters (ADCs). The
|
|
||||||
capabilities provided by this class of device driver are:
|
|
||||||
|
|
||||||
- Initialize an Analog Board
|
|
||||||
|
|
||||||
- Open a Particular Analog
|
|
||||||
|
|
||||||
- Close a Particular Analog
|
|
||||||
|
|
||||||
- Read from a Particular Analog
|
|
||||||
|
|
||||||
- Write to a Particular Analog
|
|
||||||
|
|
||||||
- Reset DACs
|
|
||||||
|
|
||||||
- Reinitialize DACS
|
|
||||||
|
|
||||||
Most analog devices are found on I/O cards that support multiple DACs or ADCs
|
|
||||||
on a single card.
|
|
||||||
|
|
||||||
There are currently no analog device drivers included in the RTEMS source tree.
|
|
||||||
The information provided in this chapter is based on drivers developed for
|
|
||||||
applications using RTEMS. It is hoped that this driver model information can
|
|
||||||
form the basis for a standard analog driver model that can be supported in
|
|
||||||
future RTEMS distribution.
|
|
||||||
|
|
||||||
Major and Minor Numbers
|
|
||||||
=======================
|
|
||||||
|
|
||||||
The ``major`` number of a device driver is its index in the RTEMS Device
|
|
||||||
Address Table.
|
|
||||||
|
|
||||||
A ``minor`` number is associated with each device instance managed by a
|
|
||||||
particular device driver. An RTEMS minor number is an ``unsigned32`` entity.
|
|
||||||
Convention calls for dividing the bits in the minor number down into categories
|
|
||||||
like the following:
|
|
||||||
|
|
||||||
- ``board`` - indicates the board a particular device is located on
|
|
||||||
|
|
||||||
- ``port`` - indicates the particular device on a board.
|
|
||||||
|
|
||||||
From the above, it should be clear that a single device driver can support
|
|
||||||
multiple copies of the same board in a single system. The minor number is used
|
|
||||||
to distinguish the devices.
|
|
||||||
|
|
||||||
Analog Driver Configuration
|
|
||||||
===========================
|
|
||||||
|
|
||||||
There is not a standard analog driver configuration table but some fields are
|
|
||||||
common across different drivers. The analog driver configuration table is
|
|
||||||
typically an array of structures with each structure containing the information
|
|
||||||
for a particular board. The following is a list of the type of information
|
|
||||||
normally required to configure an analog board:
|
|
||||||
|
|
||||||
``board_offset``
|
|
||||||
is the base address of a board.
|
|
||||||
|
|
||||||
``DAC_initial_values``
|
|
||||||
is an array of the voltages that should be written to each DAC during
|
|
||||||
initialization. This allows the driver to start the board in a known
|
|
||||||
state.
|
|
||||||
|
|
||||||
Initialize an Analog Board
|
|
||||||
==========================
|
|
||||||
|
|
||||||
At system initialization, the analog driver's initialization entry point will
|
|
||||||
be invoked. As part of initialization, the driver will perform whatever board
|
|
||||||
initialization is required and then set all outputs to their configured initial
|
|
||||||
state.
|
|
||||||
|
|
||||||
The analog driver may register a device name for each DAC and ADC in the
|
|
||||||
system.
|
|
||||||
|
|
||||||
Open a Particular Analog
|
|
||||||
========================
|
|
||||||
|
|
||||||
This is the driver open call. Usually this call does nothing other than
|
|
||||||
validate the minor number.
|
|
||||||
|
|
||||||
With some drivers, it may be necessary to allocate memory when a particular
|
|
||||||
device is opened. If that is the case, then this is often the place to do this
|
|
||||||
operation.
|
|
||||||
|
|
||||||
Close a Particular Analog
|
|
||||||
=========================
|
|
||||||
|
|
||||||
This is the driver close call. Usually this call does nothing.
|
|
||||||
|
|
||||||
With some drivers, it may be necessary to allocate memory when a particular
|
|
||||||
device is opened. If that is the case, then this is the place where that
|
|
||||||
memory should be deallocated.
|
|
||||||
|
|
||||||
Read from a Particular Analog
|
|
||||||
=============================
|
|
||||||
|
|
||||||
This corresponds to the driver read call. After validating the minor number
|
|
||||||
and arguments, this call reads the indicated device. Most analog devices store
|
|
||||||
the last value written to a DAC. Since DACs are output only devices, saving
|
|
||||||
the last written value gives the appearance that DACs can be read from also.
|
|
||||||
If the device is an ADC, then it is sampled.
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
|
|
||||||
Many boards have multiple analog inputs but only one ADC. On these boards,
|
|
||||||
it will be necessary to provide some type of mutual exclusion during reads.
|
|
||||||
On these boards, there is a MUX which must be switched before sampling the
|
|
||||||
ADC. After the MUX is switched, the driver must delay some short period of
|
|
||||||
time (usually microseconds) before the signal is stable and can be sampled.
|
|
||||||
To make matters worse, some ADCs cannot respond to wide voltage swings in a
|
|
||||||
single sample. On these ADCs, one must do two samples when the voltage
|
|
||||||
swing is too large. On a practical basis, this means that the driver
|
|
||||||
usually ends up double sampling the ADC on these systems.
|
|
||||||
|
|
||||||
The value returned is a single precision floating point number representing the
|
|
||||||
voltage read. This value is stored in the ``argument_block`` passed in to the
|
|
||||||
call. By returning the voltage, the caller is freed from having to know the
|
|
||||||
number of bits in the analog and board dependent conversion algorithm.
|
|
||||||
|
|
||||||
Write to a Particular Analog
|
|
||||||
============================
|
|
||||||
|
|
||||||
This corresponds to the driver write call. After validating the minor number
|
|
||||||
and arguments, this call writes the indicated device. If the specified device
|
|
||||||
is an ADC, then an error is usually returned.
|
|
||||||
|
|
||||||
The value written is a single precision floating point number representing the
|
|
||||||
voltage to be written to the specified DAC. This value is stored in the
|
|
||||||
``argument_block`` passed in to the call. By passing the voltage to the device
|
|
||||||
driver, the caller is freed from having to know the number of bits in the
|
|
||||||
analog and board dependent conversion algorithm.
|
|
||||||
|
|
||||||
Reset DACs
|
|
||||||
==========
|
|
||||||
|
|
||||||
This is one of the IOCTL functions supported by the I/O control device driver
|
|
||||||
entry point. When this IOCTL function is invoked, all of the DACs are written
|
|
||||||
to 0.0 volts.
|
|
||||||
|
|
||||||
Reinitialize DACS
|
|
||||||
=================
|
|
||||||
|
|
||||||
This is one of the IOCTL functions supported by the I/O control device driver
|
|
||||||
entry point. When this IOCTL function is invoked, all of the DACs are written
|
|
||||||
with the initial value configured for this device.
|
|
||||||
|
|
||||||
Get Last Written Values
|
|
||||||
=======================
|
|
||||||
|
|
||||||
This is one of the IOCTL functions supported by the I/O control device driver
|
|
||||||
entry point. When this IOCTL function is invoked, the following information is
|
|
||||||
returned to the caller:
|
|
||||||
|
|
||||||
- last value written to the specified DAC
|
|
||||||
|
|
||||||
- timestamp of when the last write was performed
|
|
@ -57,7 +57,6 @@ to the Community Project hosted at http://www.rtems.org.
|
|||||||
networking
|
networking
|
||||||
shared_memory_support
|
shared_memory_support
|
||||||
frame_buffer
|
frame_buffer
|
||||||
analog
|
|
||||||
discrete
|
discrete
|
||||||
command
|
command
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user