OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [rtems-20020807/] [doc/] [bsp_howto/] [analog.t] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1026 ivang
@c
2
@c  COPYRIGHT (c) 1988-2002.
3
@c  On-Line Applications Research Corporation (OAR).
4
@c  All rights reserved.
5
@c
6
@c  analog.t,v 1.5 2002/01/17 21:47:44 joel Exp
7
@c
8
 
9
@chapter Analog Driver
10
 
11
The Analog driver is responsible for providing an
12
interface to Digital to Analog Converters (DACs) and
13
Analog to Digital Converters (ADCs).  The capabilities provided
14
by this class of device driver are:
15
 
16
@itemize @bullet
17
@item Initialize an Analog Board
18
@item Open a Particular Analog
19
@item Close a Particular Analog
20
@item Read from a Particular Analog
21
@item Write to a Particular Analog
22
@item Reset DACs
23
@item Reinitialize DACS
24
@end itemize
25
 
26
Most analog devices are found on I/O cards that support multiple
27
DACs or ADCs on a single card.
28
 
29
There are currently no analog device drivers included in the
30
RTEMS source tree.  The information provided in this chapter
31
is based on drivers developed by OAR Corporation personnel
32
for applications using RTEMS.   It is hoped that this
33
driver model information can form the basis for a standard
34
analog driver model that can be supported in future RTEMS
35
distribution.
36
 
37
@section Major and Minor Numbers
38
 
39
The @b{major} number of a device driver is its index in the
40
RTEMS Device Address Table.
41
 
42
A @b{minor} number is associated with each device instance
43
managed by a particular device driver.  An RTEMS minor number
44
is an @code{unsigned32} entity.  Convention calls
45
dividing the bits in the minor number down into categories
46
like the following:
47
 
48
@itemize @bullet
49
 
50
@item @b{board} - indicates the board a particular device is located on
51
@item @b{port} - indicates the particular device on a board.
52
 
53
@end itemize
54
 
55
From the above, it should be clear that a single device driver
56
can support multiple copies of the same board in a single system.
57
The minor number is used to distinguish the devices.
58
 
59
@section Analog Driver Configuration
60
 
61
There is not a standard analog driver configuration table but some
62
fields are common across different drivers.  The analog driver
63
configuration table is typically an array of structures with each
64
structure containing the information for a particular board.
65
The following is a list of the type of information normally required
66
to configure an analog board:
67
 
68
@table @b
69
@item board_offset
70
is the base address of a board.
71
 
72
@item DAC_initial_values
73
is an array of the voltages that should be written to each DAC
74
during initialization.  This allows the driver to start the board
75
in a known state.
76
 
77
@end table
78
 
79
@section Initialize an Analog Board
80
 
81
At system initialization, the analog driver's initialization entry point
82
will be invoked.  As part of initialization, the driver will perform
83
whatever board initialization is required and then set all
84
outputs to their configured initial state.
85
 
86
The analog driver may register a device name for each DAC and ADC in
87
the system.
88
 
89
@section Open a Particular Analog
90
 
91
This is the driver open call.  Usually this call does nothing other than
92
validate the minor number.
93
 
94
With some drivers, it may be necessary to allocate memory when a particular
95
device is opened.  If that is the case, then this is often the place
96
to do this operation.
97
 
98
@section Close a Particular Analog
99
 
100
This is the driver close call.  Usually this call does nothing.
101
 
102
With some drivers, it may be necessary to allocate memory when a particular
103
device is opened.  If that is the case, then this is the place
104
where that memory should be deallocated.
105
 
106
@section Read from a Particular Analog
107
 
108
This corresponds to the driver read call.  After validating the minor
109
number and arguments, this call reads the indicated device.  Most analog
110
devices store the last value written to a DAC.  Since DACs are output
111
only devices, saving the last written value gives the appearance that
112
DACs can be read from also.  If the device is an ADC, then it is sampled.
113
 
114
@b{NOTE:} Many boards have multiple analog inputs but only one ADC.  On
115
these boards, it will be necessary to provide some type of mutual exclusion
116
during reads.  On these boards, there is a MUX which must be switched
117
before sampling the ADC.  After the MUX is switched, the driver must
118
delay some short period of time (usually microseconds) before the
119
signal is stable and can be sampled.  To make matters worse, some ADCs
120
cannot respond to wide voltage swings in a single sample.  On these
121
ADCs, one must do two samples when the voltage swing is too large.
122
On a practical basis, this means that the driver usually ends up
123
double sampling the ADC on these systems.
124
 
125
The value returned is a single precision floating point number
126
representing the voltage read.  This value is stored in the
127
@code{argument_block} passed in to the call.  By returning the
128
voltage, the caller is freed from having to know the number of
129
bits in the analog and board dependent conversion algorithm.
130
 
131
@section Write to a Particular Analog
132
 
133
This corresponds to the driver write call.  After validating the minor
134
number and arguments, this call writes the indicated device.  If the
135
specified device is an ADC, then an error is usually returned.
136
 
137
The value written is a single precision floating point number
138
representing the voltage to be written to the specified DAC.
139
This value is stored in the @code{argument_block} passed in to the
140
call.  By passing the voltage to the device driver, the caller is
141
freed from having to know the number of bits in the analog
142
and board dependent conversion algorithm.
143
 
144
@section Reset DACs
145
 
146
This is one of the IOCTL functions supported by the I/O control
147
device driver entry point.  When this IOCTL function is invoked,
148
all of the DACs are written to 0.0 volts.
149
 
150
@section Reinitialize DACS
151
 
152
This is one of the IOCTL functions supported by the I/O control
153
device driver entry point.  When this IOCTL function is invoked,
154
all of the DACs are written with the initial value configured
155
for this device.
156
 
157
@section Get Last Written Values
158
 
159
This is one of the IOCTL functions supported by the I/O control
160
device driver entry point.  When this IOCTL function is invoked,
161
the following information is returned to the caller:
162
 
163
@itemize @bullet
164
@item last value written to the specified DAC
165
@item timestamp of when the last write was performed
166
@end itemize
167
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.