If you need urgent consulting help click here
Analog-to-Digital Converter (ADC)
Overview
This sample demonstrates how to use the ADC driver API.
Depending on the target board, it reads ADC samples from one or more channels and prints the readings on the console. If voltage of the used reference can be obtained, the raw readings are converted to millivolts.
The pins of the ADC channels are board-specific. Please refer to the board or MCU datasheet for further details.
Building and Running
The ADC peripheral and pinmux is configured in the board’s .dts
file. Make
sure that the ADC is enabled (status = "okay";
).
In addition to that, this sample requires an ADC channel specified in the
io-channels
property of the zephyr,user
node. This is usually done with
a devicetree overlay. The example overlay in the boards
subdirectory for
the nucleo_l073rz
board can be easily adjusted for other boards.
Configuration of channels (settings like gain, reference, or acquisition time) can be specified in devicetree, in ADC controller child nodes. Also the ADC resolution and oversampling setting to be used for particular channels can be specified there. See boards/nrf52840dk_nrf52840.overlay for an example of such setup. If these parameters are not specified in devicetree, default values, supposed to be supported by most ADCs, are used instead.
Building and Running for ST Nucleo L073RZ
The sample can be built and executed for the ST Nucleo L073RZ as follows:
west build -b nucleo_l073rz samples/drivers/adc
west flash
To build for another board, change “nucleo_l073rz” above to that board’s name and provide a corresponding devicetree overlay.
Sample output
You should get a similar output as below, repeated every second:
ADC reading(s): 42 (raw)
Note
If the ADC is not supported, the output will be an error message.