mirror of https://github.com/ARMmbed/mbed-os.git
				
				
				
			Merge pull request #2923 from bcostm/adcintch_F1
STM32F1xx - Add support of ADC internal channel (Temperature, VRef)pull/2958/head
						commit
						483d3fd277
					
				| 
						 | 
				
			
			@ -55,6 +55,8 @@ const PinMap PinMap_ADC[] = {
 | 
			
		|||
    {PC_3, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 13, 0)}, // ADC_IN13
 | 
			
		||||
    {PC_4, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 14, 0)}, // ADC_IN14
 | 
			
		||||
    {PC_5, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 15, 0)}, // ADC_IN15
 | 
			
		||||
    {ADC_TEMP, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 16, 0)}, // ADC_IN16
 | 
			
		||||
    {ADC_VREF, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 17, 0)}, // ADC_IN17
 | 
			
		||||
    {NC,   NC,    0}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -43,14 +43,14 @@ extern "C" {
 | 
			
		|||
#define STM_PIN_DATA_EXT(MODE, PUPD, AFNUM, CHANNEL, INVERTED)  ((int)(((MODE     & 0x0F) <<  0) |\
 | 
			
		||||
                                                                       ((PUPD     & 0x07) <<  4) |\
 | 
			
		||||
                                                                       ((AFNUM    & 0x0F) <<  7) |\
 | 
			
		||||
                                                                       ((CHANNEL  & 0x0F) << 11) |\
 | 
			
		||||
                                                                       ((INVERTED & 0x01) << 15)))
 | 
			
		||||
                                                                       ((CHANNEL  & 0x1F) << 11) |\
 | 
			
		||||
                                                                       ((INVERTED & 0x01) << 16)))
 | 
			
		||||
 | 
			
		||||
#define STM_PIN_MODE(X)   (((X) >> 0) & 0x0F)
 | 
			
		||||
#define STM_PIN_PUPD(X)   (((X) >> 4) & 0x07)
 | 
			
		||||
#define STM_PIN_AFNUM(X)  (((X) >> 7) & 0x0F)
 | 
			
		||||
#define STM_PIN_CHANNEL(X)  (((X) >> 11) & 0x0F)
 | 
			
		||||
#define STM_PIN_INVERTED(X) (((X) >> 15) & 0x01)
 | 
			
		||||
#define STM_PIN_MODE(X)     (((X) >>  0) & 0x0F)
 | 
			
		||||
#define STM_PIN_PUPD(X)     (((X) >>  4) & 0x07)
 | 
			
		||||
#define STM_PIN_AFNUM(X)    (((X) >>  7) & 0x0F)
 | 
			
		||||
#define STM_PIN_CHANNEL(X)  (((X) >> 11) & 0x1F)
 | 
			
		||||
#define STM_PIN_INVERTED(X) (((X) >> 16) & 0x01)
 | 
			
		||||
 | 
			
		||||
#define STM_MODE_INPUT              (0)
 | 
			
		||||
#define STM_MODE_OUTPUT_PP          (1)
 | 
			
		||||
| 
						 | 
				
			
			@ -130,6 +130,10 @@ typedef enum {
 | 
			
		|||
 | 
			
		||||
    PD_2  = 0x32,
 | 
			
		||||
 | 
			
		||||
    // ADC internal channels
 | 
			
		||||
    ADC_TEMP = 0xF0,
 | 
			
		||||
    ADC_VREF = 0xF1,
 | 
			
		||||
 | 
			
		||||
    // PCB printout
 | 
			
		||||
    A0          = PA_0,
 | 
			
		||||
    A1          = PA_1,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -55,6 +55,8 @@ const PinMap PinMap_ADC[] = {
 | 
			
		|||
    {PC_3, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 13, 0)}, // ADC_IN13
 | 
			
		||||
    {PC_4, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 14, 0)}, // ADC_IN14
 | 
			
		||||
    {PC_5, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 15, 0)}, // ADC_IN15
 | 
			
		||||
    {ADC_TEMP, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 16, 0)}, // ADC_IN16
 | 
			
		||||
    {ADC_VREF, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 17, 0)}, // ADC_IN17
 | 
			
		||||
    {NC,   NC,    0}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -43,14 +43,14 @@ extern "C" {
 | 
			
		|||
#define STM_PIN_DATA_EXT(MODE, PUPD, AFNUM, CHANNEL, INVERTED)  ((int)(((MODE     & 0x0F) <<  0) |\
 | 
			
		||||
                                                                       ((PUPD     & 0x07) <<  4) |\
 | 
			
		||||
                                                                       ((AFNUM    & 0x0F) <<  7) |\
 | 
			
		||||
                                                                       ((CHANNEL  & 0x0F) << 11) |\
 | 
			
		||||
                                                                       ((INVERTED & 0x01) << 15)))
 | 
			
		||||
                                                                       ((CHANNEL  & 0x1F) << 11) |\
 | 
			
		||||
                                                                       ((INVERTED & 0x01) << 16)))
 | 
			
		||||
 | 
			
		||||
#define STM_PIN_MODE(X)   (((X) >> 0) & 0x0F)
 | 
			
		||||
#define STM_PIN_PUPD(X)   (((X) >> 4) & 0x07)
 | 
			
		||||
#define STM_PIN_AFNUM(X)  (((X) >> 7) & 0x0F)
 | 
			
		||||
#define STM_PIN_CHANNEL(X)  (((X) >> 11) & 0x0F)
 | 
			
		||||
#define STM_PIN_INVERTED(X) (((X) >> 15) & 0x01)
 | 
			
		||||
#define STM_PIN_MODE(X)     (((X) >>  0) & 0x0F)
 | 
			
		||||
#define STM_PIN_PUPD(X)     (((X) >>  4) & 0x07)
 | 
			
		||||
#define STM_PIN_AFNUM(X)    (((X) >>  7) & 0x0F)
 | 
			
		||||
#define STM_PIN_CHANNEL(X)  (((X) >> 11) & 0x1F)
 | 
			
		||||
#define STM_PIN_INVERTED(X) (((X) >> 16) & 0x01)
 | 
			
		||||
 | 
			
		||||
#define STM_MODE_INPUT              (0)
 | 
			
		||||
#define STM_MODE_OUTPUT_PP          (1)
 | 
			
		||||
| 
						 | 
				
			
			@ -132,6 +132,10 @@ typedef enum {
 | 
			
		|||
    PD_1  = 0x31,
 | 
			
		||||
    PD_2  = 0x32,
 | 
			
		||||
 | 
			
		||||
    // ADC internal channels
 | 
			
		||||
    ADC_TEMP = 0xF0,
 | 
			
		||||
    ADC_VREF = 0xF1,
 | 
			
		||||
 | 
			
		||||
    // Arduino connector namings
 | 
			
		||||
    PA0          = PA_0,
 | 
			
		||||
    PA1          = PA_1,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -55,6 +55,8 @@ const PinMap PinMap_ADC[] = {
 | 
			
		|||
    {PC_3, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 13, 0)}, // ADC_IN13
 | 
			
		||||
    {PC_4, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 14, 0)}, // ADC_IN14
 | 
			
		||||
    {PC_5, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 15, 0)}, // ADC_IN15
 | 
			
		||||
    {ADC_TEMP, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 16, 0)}, // ADC_IN16
 | 
			
		||||
    {ADC_VREF, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 17, 0)}, // ADC_IN17
 | 
			
		||||
    {NC,   NC,    0}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -43,14 +43,14 @@ extern "C" {
 | 
			
		|||
#define STM_PIN_DATA_EXT(MODE, PUPD, AFNUM, CHANNEL, INVERTED)  ((int)(((MODE     & 0x0F) <<  0) |\
 | 
			
		||||
                                                                       ((PUPD     & 0x07) <<  4) |\
 | 
			
		||||
                                                                       ((AFNUM    & 0x0F) <<  7) |\
 | 
			
		||||
                                                                       ((CHANNEL  & 0x0F) << 11) |\
 | 
			
		||||
                                                                       ((INVERTED & 0x01) << 15)))
 | 
			
		||||
                                                                       ((CHANNEL  & 0x1F) << 11) |\
 | 
			
		||||
                                                                       ((INVERTED & 0x01) << 16)))
 | 
			
		||||
 | 
			
		||||
#define STM_PIN_MODE(X)   (((X) >> 0) & 0x0F)
 | 
			
		||||
#define STM_PIN_PUPD(X)   (((X) >> 4) & 0x07)
 | 
			
		||||
#define STM_PIN_AFNUM(X)  (((X) >> 7) & 0x0F)
 | 
			
		||||
#define STM_PIN_CHANNEL(X)  (((X) >> 11) & 0x0F)
 | 
			
		||||
#define STM_PIN_INVERTED(X) (((X) >> 15) & 0x01)
 | 
			
		||||
#define STM_PIN_MODE(X)     (((X) >>  0) & 0x0F)
 | 
			
		||||
#define STM_PIN_PUPD(X)     (((X) >>  4) & 0x07)
 | 
			
		||||
#define STM_PIN_AFNUM(X)    (((X) >>  7) & 0x0F)
 | 
			
		||||
#define STM_PIN_CHANNEL(X)  (((X) >> 11) & 0x1F)
 | 
			
		||||
#define STM_PIN_INVERTED(X) (((X) >> 16) & 0x01)
 | 
			
		||||
 | 
			
		||||
#define STM_MODE_INPUT              (0)
 | 
			
		||||
#define STM_MODE_OUTPUT_PP          (1)
 | 
			
		||||
| 
						 | 
				
			
			@ -130,6 +130,10 @@ typedef enum {
 | 
			
		|||
 | 
			
		||||
    PD_2  = 0x32,
 | 
			
		||||
 | 
			
		||||
    // ADC internal channels
 | 
			
		||||
    ADC_TEMP = 0xF0,
 | 
			
		||||
    ADC_VREF = 0xF1,
 | 
			
		||||
 | 
			
		||||
    // Arduino connector namings
 | 
			
		||||
    A0          = PA_0,
 | 
			
		||||
    A1          = PA_1,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,5 +1,5 @@
 | 
			
		|||
/* mbed Microcontroller Library
 | 
			
		||||
 * Copyright (c) 2014, STMicroelectronics
 | 
			
		||||
 * Copyright (c) 2016, STMicroelectronics
 | 
			
		||||
 * All rights reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * Redistribution and use in source and binary forms, with or without
 | 
			
		||||
| 
						 | 
				
			
			@ -52,8 +52,10 @@ void analogin_init(analogin_t *obj, PinName pin)
 | 
			
		|||
    MBED_ASSERT(function != (uint32_t)NC);
 | 
			
		||||
    obj->channel = STM_PIN_CHANNEL(function);
 | 
			
		||||
 | 
			
		||||
    // Configure GPIO
 | 
			
		||||
    pinmap_pinout(pin, PinMap_ADC);
 | 
			
		||||
    // Configure GPIO excepted for internal channels (Temperature, Vref)
 | 
			
		||||
    if ((obj->channel != 16) && (obj->channel != 17)) {
 | 
			
		||||
        pinmap_pinout(pin, PinMap_ADC);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Save pin number for the read function
 | 
			
		||||
    obj->pin = pin;
 | 
			
		||||
| 
						 | 
				
			
			@ -147,6 +149,12 @@ static inline uint16_t adc_read(analogin_t *obj)
 | 
			
		|||
        case 15:
 | 
			
		||||
            sConfig.Channel = ADC_CHANNEL_15;
 | 
			
		||||
            break;
 | 
			
		||||
        case 16:
 | 
			
		||||
            sConfig.Channel = ADC_CHANNEL_TEMPSENSOR;
 | 
			
		||||
            break;
 | 
			
		||||
        case 17:
 | 
			
		||||
            sConfig.Channel = ADC_CHANNEL_VREFINT;
 | 
			
		||||
            break;
 | 
			
		||||
        default:
 | 
			
		||||
            return 0;
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue