Analog to Digital Converter

There are 10-bit analog ports available on GSM modules based on MT6261 or MT2503. Input voltage range from 0-2.8v gives digital output of 0-1023. On RDA8955 based modules, Input voltage range is from 0-1.8v gives digital output of 0 - 1023.

However analog ports on NBIoT module are 12-but and input voltage range from 0-1.4v with digital output of 0-4095.

Example Usage

#include <hw/adc.h>

/* init ADC */
adc_config(ADC_CH0);

/* ADC Read raw */
raw_value = adc_read(ADC_CH0);

/* ADC Read voltage in millivolts */
mv_value = adc_read_mv(ADC_CH0);

Application Example

waybyte/example-adc

4G LTE Module ADC Channel Mapping

ADC Channel

EC600U

EC200U

N58

N716

L610

EG915U

ADC CH 0

Pin 19

Pin 45

Pin 89

Pin 31

Pin 45

Pin 24

ADC CH 1

Pin 20

Pin 44

Pin 88

Pin 30

Pin 44

Pin 2

ADC CH 2

Pin 133

Pin 43

Pin 43

ADC CH 3

Pin 114

GSM/NB-IoT Module ADC Channel Mapping

RDA8955 based modules

ADC Channel

M590 Pin

MC65 Pin

A9 Pin

ADC CH 0

Pin 16

Pin 6

Pin 15

ADC CH 1

Pin 17

Pin 47

Pin 16

MT2503/MT6261/MT2625 based modules

ADC Channel

MC20U Pin

M56 Pin

MC60 Pin
MC20 Pin

M66 Pin

BC20 Pin

SIM868 Pin

ADC CH 0

Pin 6

Pin 61

Pin 6

Pin 9

Pin 6

Pin 38

ADC CH 1

Pin 47

Pin 12

Pin 47

Pin 16

Pin 54

ADC CH 2

Pin 66

Pin 3

Pin 30

Pin 28

ADC CH 3

Pin 30

Pin 2

Pin 29

Pin 29

ADC CH 4

Pin 29

Pin 13

ADC CH 5

Pin 33

Header File

Source: include/hw/adc.h

#include <hw/adc.h>

Functions

int adc_config(int ch)

Configure ADC channel and setup pin-muxing

Parameters:

ch – [in] ADC Channel to use adcch_e

Returns:

0 on success, negative error otherwise

unsigned int adc_read(int ch)

Read ADC Channel

Note

8910 has 12-bit ADC, whereas MT6261 has 10-bit ADC resolution

Parameters:

ch – [in] ADC Channel to read adcch_e

Returns:

ADC raw value, If ADC channel is not configured prior to calling this function, return value is unreliable.

unsigned int adc_read_mv(int ch)

Read adc channel value in mV.

Parameters:

ch – [in] ADC Channel to read adcch_e

Returns:

ADC value in millivolts, If ADC channel is not configured prior to calling this function, return value is unreliable.

Note

Please refer header file for actual number of channels available for respective board.

Header File

Source: include/plat/def_adc.h

#include <plat/def_adc.h>

Enumerations

enum adcch_e

ADC channels

Values:

enumerator ADC_CH0

ADC channel 0 - Pin 61

enumerator ADC_CH1

ADC channel 1 - Pin 12

enumerator ADC_CH2

ADC channel 2 - Pin 3

enumerator ADC_CH3

ADC channel 3 - Pin 2

enumerator ADC_CH4

ADC channel 4 - Pin 13

enumerator ADC_CH5

ADC channel 5 - Pin 33