mirror of https://github.com/ARMmbed/mbed-os.git
[NUCLEO_F303RE] Corrections in ADC
- remove unavailable ADCs and channels - correct initialization routinepull/872/head
parent
2c2ab2cb06
commit
46317484f7
|
@ -38,9 +38,7 @@ extern "C" {
|
|||
|
||||
typedef enum {
|
||||
ADC_1 = (int)ADC1_BASE,
|
||||
ADC_2 = (int)ADC2_BASE,
|
||||
ADC_3 = (int)ADC3_BASE,
|
||||
ADC_4 = (int)ADC4_BASE
|
||||
ADC_2 = (int)ADC2_BASE
|
||||
} ADCName;
|
||||
|
||||
typedef enum {
|
||||
|
|
|
@ -44,18 +44,12 @@ const PinMap PinMap_ADC[] = {
|
|||
{PA_2, ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN3
|
||||
{PA_3, ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC1_IN4
|
||||
{PA_4, ADC_2, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC2_IN1 - ARDUINO A2
|
||||
{PA_5, ADC_2, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC2_IN2 - Warning: LED1 is connected on this pin
|
||||
{PA_5, ADC_2, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC2_IN2 - Warning: LED1 is also connected to this pin
|
||||
{PA_6, ADC_2, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC2_IN3
|
||||
{PA_7, ADC_2, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC2_IN4
|
||||
|
||||
{PB_0, ADC_3, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC3_IN12 - ARDUINO A3
|
||||
{PB_1, ADC_3, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC3_IN1
|
||||
{PB_2, ADC_2, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC2_IN12
|
||||
{PB_11, ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC12_IN14
|
||||
{PB_12, ADC_4, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC4_IN3
|
||||
{PB_13, ADC_3, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC3_IN5
|
||||
{PB_14, ADC_4, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC4_IN4
|
||||
{PB_15, ADC_4, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC4_IN5
|
||||
|
||||
{PC_0, ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC12_IN6 - ARDUINO A5
|
||||
{PC_1, ADC_1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)}, // ADC12_IN7 - ARDUINO A4
|
||||
|
|
|
@ -41,8 +41,6 @@ void analogin_init(analogin_t *obj, PinName pin)
|
|||
{
|
||||
static int adc1_inited = 0;
|
||||
static int adc2_inited = 0;
|
||||
static int adc3_inited = 0;
|
||||
static int adc4_inited = 0;
|
||||
|
||||
// Get the peripheral name from the pin and assign it to the object
|
||||
obj->adc = (ADCName)pinmap_peripheral(pin, PinMap_ADC);
|
||||
|
@ -57,8 +55,6 @@ void analogin_init(analogin_t *obj, PinName pin)
|
|||
// Check if ADC is already initialized
|
||||
if ((obj->adc == ADC_1) && adc1_inited) return;
|
||||
if ((obj->adc == ADC_2) && adc2_inited) return;
|
||||
if ((obj->adc == ADC_3) && adc3_inited) return;
|
||||
if ((obj->adc == ADC_4) && adc4_inited) return;
|
||||
|
||||
if (obj->adc == ADC_1) {
|
||||
__ADC12_CLK_ENABLE();
|
||||
|
@ -70,23 +66,13 @@ void analogin_init(analogin_t *obj, PinName pin)
|
|||
adc2_inited = 1;
|
||||
}
|
||||
|
||||
if (obj->adc == ADC_3) {
|
||||
__ADC34_CLK_ENABLE();
|
||||
adc3_inited = 1;
|
||||
}
|
||||
|
||||
if (obj->adc == ADC_4) {
|
||||
__ADC34_CLK_ENABLE();
|
||||
adc4_inited = 1;
|
||||
}
|
||||
|
||||
// Configure ADC
|
||||
AdcHandle.Instance = (ADC_TypeDef *)(obj->adc);
|
||||
AdcHandle.Init.ClockPrescaler = ADC_CLOCKPRESCALER_PCLK_DIV2;
|
||||
AdcHandle.Init.Resolution = ADC_RESOLUTION12b;
|
||||
AdcHandle.Init.DataAlign = ADC_DATAALIGN_RIGHT;
|
||||
AdcHandle.Init.ScanConvMode = DISABLE;
|
||||
AdcHandle.Init.EOCSelection = DISABLE;
|
||||
AdcHandle.Init.EOCSelection = EOC_SINGLE_CONV;
|
||||
AdcHandle.Init.LowPowerAutoWait = DISABLE;
|
||||
AdcHandle.Init.ContinuousConvMode = DISABLE;
|
||||
AdcHandle.Init.NbrOfConversion = 1;
|
||||
|
@ -114,51 +100,22 @@ static inline uint16_t adc_read(analogin_t *obj)
|
|||
|
||||
switch (obj->pin) {
|
||||
case PA_0:
|
||||
sConfig.Channel = ADC_CHANNEL_1;
|
||||
break;
|
||||
case PA_1:
|
||||
sConfig.Channel = ADC_CHANNEL_2;
|
||||
break;
|
||||
case PA_2:
|
||||
sConfig.Channel = ADC_CHANNEL_3;
|
||||
break;
|
||||
case PA_3:
|
||||
sConfig.Channel = ADC_CHANNEL_4;
|
||||
break;
|
||||
case PA_4:
|
||||
sConfig.Channel = ADC_CHANNEL_1;
|
||||
break;
|
||||
case PA_1:
|
||||
case PA_5:
|
||||
sConfig.Channel = ADC_CHANNEL_2;
|
||||
break;
|
||||
case PA_2:
|
||||
case PA_6:
|
||||
sConfig.Channel = ADC_CHANNEL_3;
|
||||
break;
|
||||
case PA_3:
|
||||
case PA_7:
|
||||
sConfig.Channel = ADC_CHANNEL_4;
|
||||
break;
|
||||
case PB_0:
|
||||
sConfig.Channel = ADC_CHANNEL_12;
|
||||
break;
|
||||
case PB_1:
|
||||
sConfig.Channel = ADC_CHANNEL_1;
|
||||
break;
|
||||
case PB_2:
|
||||
sConfig.Channel = ADC_CHANNEL_12;
|
||||
break;
|
||||
case PB_11:
|
||||
sConfig.Channel = ADC_CHANNEL_14;
|
||||
break;
|
||||
case PB_12:
|
||||
sConfig.Channel = ADC_CHANNEL_3;
|
||||
break;
|
||||
case PB_13:
|
||||
sConfig.Channel = ADC_CHANNEL_5;
|
||||
break;
|
||||
case PB_14:
|
||||
sConfig.Channel = ADC_CHANNEL_4;
|
||||
break;
|
||||
case PB_15:
|
||||
case PC_4:
|
||||
sConfig.Channel = ADC_CHANNEL_5;
|
||||
break;
|
||||
case PC_0:
|
||||
|
@ -173,12 +130,15 @@ static inline uint16_t adc_read(analogin_t *obj)
|
|||
case PC_3:
|
||||
sConfig.Channel = ADC_CHANNEL_9;
|
||||
break;
|
||||
case PC_4:
|
||||
sConfig.Channel = ADC_CHANNEL_5;
|
||||
break;
|
||||
case PC_5:
|
||||
sConfig.Channel = ADC_CHANNEL_11;
|
||||
break;
|
||||
case PB_2:
|
||||
sConfig.Channel = ADC_CHANNEL_12;
|
||||
break;
|
||||
case PB_11:
|
||||
sConfig.Channel = ADC_CHANNEL_14;
|
||||
break;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue