docs/library: Specify additional ADC methods and new ADCBlock class.
The new ADC methods are: init(), read_uv() and block(). The new ADCBlock class has methods: init() and connect(). See related discussions in #3943, #4213. Signed-off-by: Damien George <damien@micropython.org>
This commit is contained in:
parent
7d71ae25ed
commit
4d2f487ee1
|
@ -8,28 +8,59 @@ The ADC class provides an interface to analog-to-digital convertors, and
|
||||||
represents a single endpoint that can sample a continuous voltage and
|
represents a single endpoint that can sample a continuous voltage and
|
||||||
convert it to a discretised value.
|
convert it to a discretised value.
|
||||||
|
|
||||||
|
For extra control over ADC sampling see :ref:`machine.ADCBlock <machine.ADCBlock>`.
|
||||||
|
|
||||||
Example usage::
|
Example usage::
|
||||||
|
|
||||||
import machine
|
from machine import ADC
|
||||||
|
|
||||||
adc = machine.ADC(pin) # create an ADC object acting on a pin
|
adc = ADC(pin) # create an ADC object acting on a pin
|
||||||
val = adc.read_u16() # read a raw analog value in the range 0-65535
|
val = adc.read_u16() # read a raw analog value in the range 0-65535
|
||||||
|
val = adc.read_uv() # read an analog value in microvolts
|
||||||
|
|
||||||
Constructors
|
Constructors
|
||||||
------------
|
------------
|
||||||
|
|
||||||
.. class:: ADC(id)
|
.. class:: ADC(id, *, sample_ns, atten)
|
||||||
|
|
||||||
Access the ADC associated with a source identified by *id*. This
|
Access the ADC associated with a source identified by *id*. This
|
||||||
*id* may be an integer (usually specifying a channel number), a
|
*id* may be an integer (usually specifying a channel number), a
|
||||||
:ref:`Pin <machine.Pin>` object, or other value supported by the
|
:ref:`Pin <machine.Pin>` object, or other value supported by the
|
||||||
underlying machine.
|
underlying machine.
|
||||||
|
|
||||||
|
If additional keyword-arguments are given then they will configure
|
||||||
|
various aspects of the ADC. If not given, these settings will take
|
||||||
|
previous or default values. The settings are:
|
||||||
|
|
||||||
|
- *sample_ns* is the sampling time in nanoseconds.
|
||||||
|
|
||||||
|
- *atten* specifies the input attenuation.
|
||||||
|
|
||||||
Methods
|
Methods
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
.. method:: ADC.init(*, sample_ns, atten)
|
||||||
|
|
||||||
|
Apply the given settings to the ADC. Only those arguments that are
|
||||||
|
specified will be changed. See the ADC constructor above for what the
|
||||||
|
arguments are.
|
||||||
|
|
||||||
|
.. method:: ADC.block()
|
||||||
|
|
||||||
|
Return the :ref:`ADCBlock <machine.ADCBlock>` instance associated with
|
||||||
|
this ADC object.
|
||||||
|
|
||||||
|
This method only exists if the port supports the
|
||||||
|
:ref:`ADCBlock <machine.ADCBlock>` class.
|
||||||
|
|
||||||
.. method:: ADC.read_u16()
|
.. method:: ADC.read_u16()
|
||||||
|
|
||||||
Take an analog reading and return an integer in the range 0-65535.
|
Take an analog reading and return an integer in the range 0-65535.
|
||||||
The return value represents the raw reading taken by the ADC, scaled
|
The return value represents the raw reading taken by the ADC, scaled
|
||||||
such that the minimum value is 0 and the maximum value is 65535.
|
such that the minimum value is 0 and the maximum value is 65535.
|
||||||
|
|
||||||
|
.. method:: ADC.read_uv()
|
||||||
|
|
||||||
|
Take an analog reading and return an integer value with units of
|
||||||
|
microvolts. It is up to the particular port whether or not this value
|
||||||
|
is calibrated, and how calibration is done.
|
||||||
|
|
|
@ -0,0 +1,58 @@
|
||||||
|
.. currentmodule:: machine
|
||||||
|
.. _machine.ADCBlock:
|
||||||
|
|
||||||
|
class ADCBlock -- control ADC peripherals
|
||||||
|
=========================================
|
||||||
|
|
||||||
|
The ADCBlock class provides access to an ADC peripheral which has a
|
||||||
|
number of channels that can be used to sample analog values. It allows
|
||||||
|
finer control over configuration of :ref:`machine.ADC <machine.ADC>`
|
||||||
|
objects, which do the actual sampling.
|
||||||
|
|
||||||
|
This class is not always available.
|
||||||
|
|
||||||
|
Example usage::
|
||||||
|
|
||||||
|
from machine import ADCBlock
|
||||||
|
|
||||||
|
block = ADCBlock(id, bits=12) # create an ADCBlock with 12-bit resolution
|
||||||
|
adc = block.connect(4, pin) # connect channel 4 to the given pin
|
||||||
|
val = adc.read_uv() # read an analog value
|
||||||
|
|
||||||
|
Constructors
|
||||||
|
------------
|
||||||
|
|
||||||
|
.. class:: ADCBlock(id, *, bits)
|
||||||
|
|
||||||
|
Access the ADC peripheral identified by *id*, which may be an integer
|
||||||
|
or string.
|
||||||
|
|
||||||
|
The *bits* argument, if given, sets the resolution in bits of the
|
||||||
|
conversion process. If not specified then the previous or default
|
||||||
|
resolution is used.
|
||||||
|
|
||||||
|
Methods
|
||||||
|
-------
|
||||||
|
|
||||||
|
.. method:: ADCBlock.init(*, bits)
|
||||||
|
|
||||||
|
Configure the ADC peripheral. *bits* will set the resolution of the
|
||||||
|
conversion process.
|
||||||
|
|
||||||
|
.. method:: ADCBlock.connect(channel)
|
||||||
|
ADCBlock.connect(source)
|
||||||
|
ADCBlock.connect(channel, source)
|
||||||
|
|
||||||
|
Connect up a channel on the ADC peripheral so it is ready for sampling,
|
||||||
|
and return an :ref:`ADC <machine.ADC>` object that represents that connection.
|
||||||
|
|
||||||
|
The *channel* argument must be an integer, and *source* must be an object
|
||||||
|
(for example a :ref:`Pin <machine.Pin>`) which can be connected up for sampling.
|
||||||
|
|
||||||
|
If only *channel* is given then it is configured for sampling.
|
||||||
|
|
||||||
|
If only *source* is given then that object is connected to a default
|
||||||
|
channel ready for sampling.
|
||||||
|
|
||||||
|
If both *channel* and *source* are given then they are connected together
|
||||||
|
and made ready for sampling.
|
|
@ -199,6 +199,7 @@ Classes
|
||||||
machine.Pin.rst
|
machine.Pin.rst
|
||||||
machine.Signal.rst
|
machine.Signal.rst
|
||||||
machine.ADC.rst
|
machine.ADC.rst
|
||||||
|
machine.ADCBlock.rst
|
||||||
machine.PWM.rst
|
machine.PWM.rst
|
||||||
machine.UART.rst
|
machine.UART.rst
|
||||||
machine.SPI.rst
|
machine.SPI.rst
|
||||||
|
|
Loading…
Reference in New Issue