fixed drive strength

Dependents:   capstone_i2c

Fork of mbed-dev by mbed official

Committer:
cpadua
Date:
Tue Apr 11 20:39:24 2017 +0000
Revision:
163:1d4c9d0af1e9
Parent:
149:156823d33999
fixed i2c-api.c

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 107:414e9c822e99 1 /* mbed Microcontroller Library
mbed_official 107:414e9c822e99 2 * Copyright (c) 2006-2015 ARM Limited
mbed_official 107:414e9c822e99 3 *
mbed_official 107:414e9c822e99 4 * Licensed under the Apache License, Version 2.0 (the "License");
mbed_official 107:414e9c822e99 5 * you may not use this file except in compliance with the License.
mbed_official 107:414e9c822e99 6 * You may obtain a copy of the License at
mbed_official 107:414e9c822e99 7 *
mbed_official 107:414e9c822e99 8 * http://www.apache.org/licenses/LICENSE-2.0
mbed_official 107:414e9c822e99 9 *
mbed_official 107:414e9c822e99 10 * Unless required by applicable law or agreed to in writing, software
mbed_official 107:414e9c822e99 11 * distributed under the License is distributed on an "AS IS" BASIS,
mbed_official 107:414e9c822e99 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
mbed_official 107:414e9c822e99 13 * See the License for the specific language governing permissions and
mbed_official 107:414e9c822e99 14 * limitations under the License.
mbed_official 107:414e9c822e99 15 */
mbed_official 107:414e9c822e99 16 #include "mbed_assert.h"
mbed_official 107:414e9c822e99 17 #include "analogin_api.h"
mbed_official 107:414e9c822e99 18 #include "cmsis.h"
mbed_official 107:414e9c822e99 19 #include "adc2.h"
mbed_official 107:414e9c822e99 20 #include "PeripheralPins.h"
mbed_official 107:414e9c822e99 21
mbed_official 107:414e9c822e99 22 extern uint8_t g_sys_init;
mbed_official 107:414e9c822e99 23 static uint8_t adc_inited = 0;
mbed_official 107:414e9c822e99 24
mbed_official 107:414e9c822e99 25 void analogin_init(analogin_t *obj, PinName pin)
mbed_official 107:414e9c822e99 26 {
mbed_official 107:414e9c822e99 27 MBED_ASSERT(obj);
mbed_official 107:414e9c822e99 28 if (g_sys_init == 0) {
mbed_official 107:414e9c822e99 29 sysclk_init();
mbed_official 107:414e9c822e99 30 system_board_init();
mbed_official 107:414e9c822e99 31 g_sys_init = 1;
mbed_official 107:414e9c822e99 32 }
mbed_official 107:414e9c822e99 33 obj->channel = (enum adc_channel_num)pinmap_peripheral(pin, PinMap_ADC);
mbed_official 107:414e9c822e99 34 MBED_ASSERT(obj->channel != NC);
mbed_official 107:414e9c822e99 35 if(!adc_inited) { /*ADC hardare to be initialised only once*/
mbed_official 107:414e9c822e99 36 adc_enable();
mbed_official 107:414e9c822e99 37 #if SAMG55
mbed_official 107:414e9c822e99 38 adc_select_clock_source_mck(ADC);
mbed_official 107:414e9c822e99 39 #endif
mbed_official 107:414e9c822e99 40 struct adc_config adc_cfg;
mbed_official 107:414e9c822e99 41 adc_get_config_defaults(&adc_cfg);
mbed_official 107:414e9c822e99 42 adc_cfg.resolution = ADC_16_BITS;
mbed_official 107:414e9c822e99 43 adc_init(ADC, &adc_cfg);
mbed_official 107:414e9c822e99 44 adc_average_on_single_trigger(ADC);
mbed_official 107:414e9c822e99 45 adc_set_trigger(ADC, ADC_TRIG_SW);
mbed_official 107:414e9c822e99 46 adc_start_calibration(ADC);
mbed_official 107:414e9c822e99 47 adc_inited = 1;
mbed_official 107:414e9c822e99 48 }
mbed_official 107:414e9c822e99 49 adc_channel_enable(ADC, obj->channel);
mbed_official 107:414e9c822e99 50 }
mbed_official 107:414e9c822e99 51
mbed_official 107:414e9c822e99 52 uint16_t analogin_read_u16(analogin_t *obj)
mbed_official 107:414e9c822e99 53 {
mbed_official 107:414e9c822e99 54 MBED_ASSERT(obj);
mbed_official 107:414e9c822e99 55 adc_channel_get_value(ADC, obj->channel); /*Dummy read of current value*/
mbed_official 107:414e9c822e99 56 adc_start_software_conversion(ADC);
mbed_official 107:414e9c822e99 57 while (adc_get_interrupt_status(ADC) & (1 << obj->channel));
mbed_official 107:414e9c822e99 58 return (uint16_t)adc_channel_get_value(ADC, obj->channel);
mbed_official 107:414e9c822e99 59 }
mbed_official 107:414e9c822e99 60
mbed_official 107:414e9c822e99 61 float analogin_read(analogin_t *obj)
mbed_official 107:414e9c822e99 62 {
mbed_official 107:414e9c822e99 63 MBED_ASSERT(obj);
mbed_official 107:414e9c822e99 64 uint16_t value = analogin_read_u16(obj);
mbed_official 107:414e9c822e99 65 return (float)value * (1.0f / (float)0xFFFF);
mbed_official 107:414e9c822e99 66 }