mbed library sources. Supersedes mbed-src.

Fork of mbed-dev by mbed official

Committer:
fwndz
Date:
Thu Dec 22 05:12:40 2016 +0000
Revision:
153:9398a535854b
Parent:
149:156823d33999
device target maximize

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 15:a81a8d6c1dfe 1 /* mbed Microcontroller Library
mbed_official 15:a81a8d6c1dfe 2 * Copyright (c) 2006-2015 ARM Limited
mbed_official 15:a81a8d6c1dfe 3 *
mbed_official 15:a81a8d6c1dfe 4 * Licensed under the Apache License, Version 2.0 (the "License");
mbed_official 15:a81a8d6c1dfe 5 * you may not use this file except in compliance with the License.
mbed_official 15:a81a8d6c1dfe 6 * You may obtain a copy of the License at
mbed_official 15:a81a8d6c1dfe 7 *
mbed_official 15:a81a8d6c1dfe 8 * http://www.apache.org/licenses/LICENSE-2.0
mbed_official 15:a81a8d6c1dfe 9 *
mbed_official 15:a81a8d6c1dfe 10 * Unless required by applicable law or agreed to in writing, software
mbed_official 15:a81a8d6c1dfe 11 * distributed under the License is distributed on an "AS IS" BASIS,
mbed_official 15:a81a8d6c1dfe 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
mbed_official 15:a81a8d6c1dfe 13 * See the License for the specific language governing permissions and
mbed_official 15:a81a8d6c1dfe 14 * limitations under the License.
mbed_official 15:a81a8d6c1dfe 15 */
mbed_official 15:a81a8d6c1dfe 16 #include "mbed_assert.h"
mbed_official 15:a81a8d6c1dfe 17 #include "analogin_api.h"
mbed_official 15:a81a8d6c1dfe 18
mbed_official 15:a81a8d6c1dfe 19 #include "cmsis.h"
mbed_official 15:a81a8d6c1dfe 20 #include "pinmap.h"
mbed_official 15:a81a8d6c1dfe 21 #include "PeripheralPins.h"
mbed_official 15:a81a8d6c1dfe 22 #include "adc.h"
mbed_official 15:a81a8d6c1dfe 23 #include "status_codes.h"
mbed_official 15:a81a8d6c1dfe 24
mbed_official 15:a81a8d6c1dfe 25 extern uint8_t g_sys_init;
mbed_official 15:a81a8d6c1dfe 26 struct adc_module adc_instance;
mbed_official 15:a81a8d6c1dfe 27
mbed_official 15:a81a8d6c1dfe 28 void adc_configure_ain_pin(uint32_t pin)
mbed_official 15:a81a8d6c1dfe 29 {
mbed_official 15:a81a8d6c1dfe 30 #define PIN_INVALID_ADC_AIN 0xFFFFUL
mbed_official 15:a81a8d6c1dfe 31
mbed_official 15:a81a8d6c1dfe 32 /* Pinmapping table for AINxx -> GPIO pin number */
mbed_official 15:a81a8d6c1dfe 33 const uint32_t pinmapping[] = {
mbed_official 15:a81a8d6c1dfe 34 #if (SAMD20E | SAMD21E)
mbed_official 15:a81a8d6c1dfe 35 PIN_PA02B_ADC_AIN0, PIN_PA03B_ADC_AIN1,
mbed_official 15:a81a8d6c1dfe 36 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 37 PIN_PA04B_ADC_AIN4, PIN_PA05B_ADC_AIN5,
mbed_official 15:a81a8d6c1dfe 38 PIN_PA06B_ADC_AIN6, PIN_PA07B_ADC_AIN7,
mbed_official 15:a81a8d6c1dfe 39 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 40 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 41 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 42 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 43 PIN_PA08B_ADC_AIN16, PIN_PA09B_ADC_AIN17,
mbed_official 15:a81a8d6c1dfe 44 PIN_PA10B_ADC_AIN18, PIN_PA11B_ADC_AIN19,
mbed_official 15:a81a8d6c1dfe 45 #elif (SAMD20G | SAMD21G)
mbed_official 15:a81a8d6c1dfe 46 PIN_PA02B_ADC_AIN0, PIN_PA03B_ADC_AIN1,
mbed_official 15:a81a8d6c1dfe 47 PIN_PB08B_ADC_AIN2, PIN_PB09B_ADC_AIN3,
mbed_official 15:a81a8d6c1dfe 48 PIN_PA04B_ADC_AIN4, PIN_PA05B_ADC_AIN5,
mbed_official 15:a81a8d6c1dfe 49 PIN_PA06B_ADC_AIN6, PIN_PA07B_ADC_AIN7,
mbed_official 15:a81a8d6c1dfe 50 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 51 PIN_PB02B_ADC_AIN10, PIN_PB03B_ADC_AIN11,
mbed_official 15:a81a8d6c1dfe 52 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 53 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 54 PIN_PA08B_ADC_AIN16, PIN_PA09B_ADC_AIN17,
mbed_official 15:a81a8d6c1dfe 55 PIN_PA10B_ADC_AIN18, PIN_PA11B_ADC_AIN19,
mbed_official 15:a81a8d6c1dfe 56 #elif (SAMD20J | SAMD21J)
mbed_official 15:a81a8d6c1dfe 57 PIN_PA02B_ADC_AIN0, PIN_PA03B_ADC_AIN1,
mbed_official 15:a81a8d6c1dfe 58 PIN_PB08B_ADC_AIN2, PIN_PB09B_ADC_AIN3,
mbed_official 15:a81a8d6c1dfe 59 PIN_PA04B_ADC_AIN4, PIN_PA05B_ADC_AIN5,
mbed_official 15:a81a8d6c1dfe 60 PIN_PA06B_ADC_AIN6, PIN_PA07B_ADC_AIN7,
mbed_official 15:a81a8d6c1dfe 61 PIN_PB00B_ADC_AIN8, PIN_PB01B_ADC_AIN9,
mbed_official 15:a81a8d6c1dfe 62 PIN_PB02B_ADC_AIN10, PIN_PB03B_ADC_AIN11,
mbed_official 15:a81a8d6c1dfe 63 PIN_PB04B_ADC_AIN12, PIN_PB05B_ADC_AIN13,
mbed_official 15:a81a8d6c1dfe 64 PIN_PB06B_ADC_AIN14, PIN_PB07B_ADC_AIN15,
mbed_official 15:a81a8d6c1dfe 65 PIN_PA08B_ADC_AIN16, PIN_PA09B_ADC_AIN17,
mbed_official 15:a81a8d6c1dfe 66 PIN_PA10B_ADC_AIN18, PIN_PA11B_ADC_AIN19,
mbed_official 15:a81a8d6c1dfe 67 #elif SAMR21E
mbed_official 15:a81a8d6c1dfe 68 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 69 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 70 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 71 PIN_PA06B_ADC_AIN6, PIN_PA07B_ADC_AIN7,
mbed_official 15:a81a8d6c1dfe 72 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 73 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 74 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 75 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 76 PIN_PA08B_ADC_AIN16, PIN_PA09B_ADC_AIN17,
mbed_official 15:a81a8d6c1dfe 77 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 78 #elif SAMR21G
mbed_official 15:a81a8d6c1dfe 79 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 80 PIN_PB08B_ADC_AIN2, PIN_PB09B_ADC_AIN3,
mbed_official 15:a81a8d6c1dfe 81 PIN_PA04B_ADC_AIN4, PIN_PA05B_ADC_AIN5,
mbed_official 15:a81a8d6c1dfe 82 PIN_PA06B_ADC_AIN6, PIN_PA07B_ADC_AIN7,
mbed_official 15:a81a8d6c1dfe 83 PIN_PB00B_ADC_AIN8, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 84 PIN_PB02B_ADC_AIN10, PIN_PB03B_ADC_AIN11,
mbed_official 15:a81a8d6c1dfe 85 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 86 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 87 PIN_PA08B_ADC_AIN16, PIN_PA09B_ADC_AIN17,
mbed_official 15:a81a8d6c1dfe 88 PIN_PA10B_ADC_AIN18, PIN_PA11B_ADC_AIN19,
mbed_official 15:a81a8d6c1dfe 89 #elif (SAMD10C | SAMD11C)
mbed_official 15:a81a8d6c1dfe 90 PIN_PA02B_ADC_AIN0, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 91 PIN_PA04B_ADC_AIN2, PIN_PA05B_ADC_AIN3,
mbed_official 15:a81a8d6c1dfe 92 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 93 PIN_PA14B_ADC_AIN6, PIN_PA15B_ADC_AIN7,
mbed_official 15:a81a8d6c1dfe 94 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 95 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 96 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 97 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 98 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 99 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 100 #elif (SAMD10DS | SAMD11DS)
mbed_official 15:a81a8d6c1dfe 101 PIN_PA02B_ADC_AIN0, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 102 PIN_PA04B_ADC_AIN2, PIN_PA05B_ADC_AIN3,
mbed_official 15:a81a8d6c1dfe 103 PIN_PA06B_ADC_AIN4, PIN_PA07B_ADC_AIN5,
mbed_official 15:a81a8d6c1dfe 104 PIN_PA14B_ADC_AIN6, PIN_PA15B_ADC_AIN7,
mbed_official 15:a81a8d6c1dfe 105 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 106 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 107 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 108 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 109 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 110 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 111 #elif (SAMD10DM | SAMD11DM)
mbed_official 15:a81a8d6c1dfe 112 PIN_PA02B_ADC_AIN0, PIN_PA03B_ADC_AIN1,
mbed_official 15:a81a8d6c1dfe 113 PIN_PA04B_ADC_AIN2, PIN_PA05B_ADC_AIN3,
mbed_official 15:a81a8d6c1dfe 114 PIN_PA06B_ADC_AIN4, PIN_PA07B_ADC_AIN5,
mbed_official 15:a81a8d6c1dfe 115 PIN_PA14B_ADC_AIN6, PIN_PA15B_ADC_AIN7,
mbed_official 15:a81a8d6c1dfe 116 PIN_PA10B_ADC_AIN8, PIN_PA11B_ADC_AIN9,
mbed_official 15:a81a8d6c1dfe 117 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 118 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 119 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 120 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 121 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 18:da299f395b9e 122 #elif (SAML21E)
mbed_official 18:da299f395b9e 123 PIN_PA02B_ADC_AIN0, PIN_PA03B_ADC_AIN1,
mbed_official 18:da299f395b9e 124 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 18:da299f395b9e 125 PIN_PA04B_ADC_AIN4, PIN_PA05B_ADC_AIN5,
mbed_official 18:da299f395b9e 126 PIN_PA06B_ADC_AIN6, PIN_PA07B_ADC_AIN7,
mbed_official 18:da299f395b9e 127 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 18:da299f395b9e 128 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 18:da299f395b9e 129 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 18:da299f395b9e 130 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 18:da299f395b9e 131 PIN_PA08B_ADC_AIN16, PIN_PA09B_ADC_AIN17,
mbed_official 18:da299f395b9e 132 PIN_PA10B_ADC_AIN18, PIN_PA11B_ADC_AIN19,
mbed_official 18:da299f395b9e 133 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 18:da299f395b9e 134 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 18:da299f395b9e 135 #elif (SAML21G)
mbed_official 18:da299f395b9e 136 PIN_PA02B_ADC_AIN0, PIN_PA03B_ADC_AIN1,
mbed_official 18:da299f395b9e 137 PIN_PB08B_ADC_AIN2, PIN_PB09B_ADC_AIN3,
mbed_official 18:da299f395b9e 138 PIN_PA04B_ADC_AIN4, PIN_PA05B_ADC_AIN5,
mbed_official 18:da299f395b9e 139 PIN_PA06B_ADC_AIN6, PIN_PA07B_ADC_AIN7,
mbed_official 18:da299f395b9e 140 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 18:da299f395b9e 141 PIN_PB02B_ADC_AIN10, PIN_PB03B_ADC_AIN11,
mbed_official 18:da299f395b9e 142 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 18:da299f395b9e 143 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 18:da299f395b9e 144 PIN_PA08B_ADC_AIN16, PIN_PA09B_ADC_AIN17,
mbed_official 18:da299f395b9e 145 PIN_PA10B_ADC_AIN18, PIN_PA11B_ADC_AIN19,
mbed_official 18:da299f395b9e 146 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 18:da299f395b9e 147 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 18:da299f395b9e 148 #elif (SAML21J)
mbed_official 18:da299f395b9e 149 PIN_PA02B_ADC_AIN0, PIN_PA03B_ADC_AIN1,
mbed_official 18:da299f395b9e 150 PIN_PB08B_ADC_AIN2, PIN_PB09B_ADC_AIN3,
mbed_official 18:da299f395b9e 151 PIN_PA04B_ADC_AIN4, PIN_PA05B_ADC_AIN5,
mbed_official 18:da299f395b9e 152 PIN_PA06B_ADC_AIN6, PIN_PA07B_ADC_AIN7,
mbed_official 18:da299f395b9e 153 PIN_PB00B_ADC_AIN8, PIN_PB01B_ADC_AIN9,
mbed_official 18:da299f395b9e 154 PIN_PB02B_ADC_AIN10, PIN_PB03B_ADC_AIN11,
mbed_official 18:da299f395b9e 155 PIN_PB04B_ADC_AIN12, PIN_PB05B_ADC_AIN13,
mbed_official 18:da299f395b9e 156 PIN_PB06B_ADC_AIN14, PIN_PB07B_ADC_AIN15,
mbed_official 18:da299f395b9e 157 PIN_PA08B_ADC_AIN16, PIN_PA09B_ADC_AIN17,
mbed_official 18:da299f395b9e 158 PIN_PA10B_ADC_AIN18, PIN_PA11B_ADC_AIN19,
mbed_official 18:da299f395b9e 159 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 18:da299f395b9e 160 PIN_INVALID_ADC_AIN, PIN_INVALID_ADC_AIN,
mbed_official 15:a81a8d6c1dfe 161 #else
mbed_official 15:a81a8d6c1dfe 162 # error ADC pin mappings are not defined for this device.
mbed_official 15:a81a8d6c1dfe 163 #endif
mbed_official 15:a81a8d6c1dfe 164 };
mbed_official 15:a81a8d6c1dfe 165
mbed_official 15:a81a8d6c1dfe 166 uint32_t pin_map_result = PIN_INVALID_ADC_AIN;
mbed_official 15:a81a8d6c1dfe 167
mbed_official 15:a81a8d6c1dfe 168 if (pin <= ADC_EXTCHANNEL_MSB) {
mbed_official 15:a81a8d6c1dfe 169 pin_map_result = pinmapping[pin >> ADC_INPUTCTRL_MUXPOS_Pos];
mbed_official 15:a81a8d6c1dfe 170
mbed_official 15:a81a8d6c1dfe 171 Assert(pin_map_result != PIN_INVALID_ADC_AIN);
mbed_official 15:a81a8d6c1dfe 172
mbed_official 15:a81a8d6c1dfe 173 struct system_pinmux_config config;
mbed_official 15:a81a8d6c1dfe 174 system_pinmux_get_config_defaults(&config);
mbed_official 15:a81a8d6c1dfe 175
mbed_official 15:a81a8d6c1dfe 176 /* Analog functions are all on MUX setting B */
mbed_official 15:a81a8d6c1dfe 177 config.input_pull = SYSTEM_PINMUX_PIN_PULL_NONE;
mbed_official 15:a81a8d6c1dfe 178 config.mux_position = 1;
mbed_official 15:a81a8d6c1dfe 179
mbed_official 15:a81a8d6c1dfe 180 system_pinmux_pin_set_config(pin_map_result, &config);
mbed_official 15:a81a8d6c1dfe 181 }
mbed_official 15:a81a8d6c1dfe 182 }
mbed_official 15:a81a8d6c1dfe 183
mbed_official 15:a81a8d6c1dfe 184 void analogin_init(analogin_t *obj, PinName pin)
mbed_official 15:a81a8d6c1dfe 185 {
mbed_official 15:a81a8d6c1dfe 186 MBED_ASSERT(obj);
mbed_official 15:a81a8d6c1dfe 187 if (g_sys_init == 0) {
mbed_official 15:a81a8d6c1dfe 188 system_init();
mbed_official 15:a81a8d6c1dfe 189 g_sys_init = 1;
mbed_official 15:a81a8d6c1dfe 190 }
mbed_official 15:a81a8d6c1dfe 191 uint32_t pos_input;
mbed_official 15:a81a8d6c1dfe 192 static uint8_t init_flag = 0;
mbed_official 15:a81a8d6c1dfe 193
mbed_official 15:a81a8d6c1dfe 194 pos_input = pinmap_find_peripheral(pin, PinMap_ADC);
mbed_official 64:41a834223ea3 195 MBED_ASSERT(pos_input != (uint32_t)NC);
mbed_official 15:a81a8d6c1dfe 196
mbed_official 15:a81a8d6c1dfe 197 adc_get_config_defaults(&(obj->config_adc));
mbed_official 64:41a834223ea3 198 obj->config_adc.positive_input = (enum adc_positive_input)pos_input;
mbed_official 15:a81a8d6c1dfe 199 if (init_flag == 0) { // ADC init and enable to be done only once.
mbed_official 15:a81a8d6c1dfe 200 adc_init(&adc_instance, ADC, &(obj->config_adc));
mbed_official 15:a81a8d6c1dfe 201 adc_enable(&adc_instance);
mbed_official 15:a81a8d6c1dfe 202 init_flag = 1;
mbed_official 15:a81a8d6c1dfe 203 }
mbed_official 15:a81a8d6c1dfe 204 adc_configure_ain_pin(obj->config_adc.positive_input);
mbed_official 15:a81a8d6c1dfe 205 adc_configure_ain_pin(obj->config_adc.negative_input);
mbed_official 15:a81a8d6c1dfe 206 }
mbed_official 15:a81a8d6c1dfe 207
mbed_official 15:a81a8d6c1dfe 208 uint16_t analogin_read_u16(analogin_t *obj)
mbed_official 15:a81a8d6c1dfe 209 {
mbed_official 15:a81a8d6c1dfe 210 MBED_ASSERT(obj);
mbed_official 15:a81a8d6c1dfe 211 uint16_t result;
mbed_official 15:a81a8d6c1dfe 212 adc_set_positive_input(&adc_instance, obj->config_adc.positive_input);
mbed_official 15:a81a8d6c1dfe 213 adc_set_negative_input(&adc_instance, obj->config_adc.negative_input);
mbed_official 15:a81a8d6c1dfe 214 adc_start_conversion(&adc_instance);
mbed_official 15:a81a8d6c1dfe 215 do {
mbed_official 15:a81a8d6c1dfe 216 } while(adc_read(&(adc_instance), &result) == STATUS_BUSY); // 12 bit value
mbed_official 15:a81a8d6c1dfe 217
mbed_official 15:a81a8d6c1dfe 218 return (uint16_t)(((uint32_t)result * 0xFFFF) / 0x0FFF); // for normalizing to 16 bit value
mbed_official 15:a81a8d6c1dfe 219 }
mbed_official 15:a81a8d6c1dfe 220
mbed_official 15:a81a8d6c1dfe 221 float analogin_read(analogin_t *obj)
mbed_official 15:a81a8d6c1dfe 222 {
mbed_official 15:a81a8d6c1dfe 223 MBED_ASSERT(obj);
mbed_official 15:a81a8d6c1dfe 224 uint16_t value = analogin_read_u16(obj);
mbed_official 15:a81a8d6c1dfe 225 return (float)value * (1.0f / (float)0xFFFF);
mbed_official 15:a81a8d6c1dfe 226 }
mbed_official 15:a81a8d6c1dfe 227