Skip to content

Commit 4a65580

Browse files
authored
Merge pull request #2814 from bcostm/adcintch_F3
STM32F3xx - Add support of ADC internal channels
2 parents f22d5a7 + e1d169e commit 4a65580

File tree

15 files changed

+176
-45
lines changed

15 files changed

+176
-45
lines changed

hal/targets/hal/TARGET_STM/TARGET_STM32F3/TARGET_DISCO_F303VC/PeripheralPins.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,18 @@ const PinMap PinMap_ADC[] = {
6363

6464
{PF_2, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 10, 0)}, // ADC1_IN10
6565
{PF_4, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 5, 0)}, // ADC1_IN5
66+
67+
{ADC_TEMP, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 16, 0)}, // ADC1_IN16
68+
{ADC_VREF1, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 18, 0)}, // ADC1_IN18
69+
{ADC_VREF2, ADC_2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 18, 0)}, // ADC2_IN18
70+
{ADC_VREF3, ADC_3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 18, 0)}, // ADC3_IN18
71+
{ADC_VREF4, ADC_4, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 18, 0)}, // ADC4_IN18
72+
{ADC_VBAT, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 17, 0)}, // ADC1_IN17
73+
{ADC_VOPAMP1, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 15, 0)}, // ADC1_IN15
74+
{ADC_VOPAMP2, ADC_2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 17, 0)}, // ADC2_IN17
75+
{ADC_VOPAMP3, ADC_3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 17, 0)}, // ADC3_IN17
76+
{ADC_VOPAMP4, ADC_4, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 17, 0)}, // ADC4_IN17
77+
6678
{NC, NC, 0}
6779
};
6880

hal/targets/hal/TARGET_STM/TARGET_STM32F3/TARGET_DISCO_F303VC/PinNames.h

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/* mbed Microcontroller Library
22
*******************************************************************************
3-
* Copyright (c) 2015, STMicroelectronics
3+
* Copyright (c) 2016, STMicroelectronics
44
* All rights reserved.
55
*
66
* Redistribution and use in source and binary forms, with or without
@@ -43,14 +43,14 @@ extern "C" {
4343
#define STM_PIN_DATA_EXT(MODE, PUPD, AFNUM, CHANNEL, INVERTED) ((int)(((MODE & 0x0F) << 0) |\
4444
((PUPD & 0x07) << 4) |\
4545
((AFNUM & 0x0F) << 7) |\
46-
((CHANNEL & 0x0F) << 11) |\
47-
((INVERTED & 0x01) << 15)))
46+
((CHANNEL & 0x1F) << 11) |\
47+
((INVERTED & 0x01) << 16)))
4848

4949
#define STM_PIN_MODE(X) (((X) >> 0) & 0x0F)
5050
#define STM_PIN_PUPD(X) (((X) >> 4) & 0x07)
5151
#define STM_PIN_AFNUM(X) (((X) >> 7) & 0x0F)
52-
#define STM_PIN_CHANNEL(X) (((X) >> 11) & 0x0F)
53-
#define STM_PIN_INVERTED(X) (((X) >> 15) & 0x01)
52+
#define STM_PIN_CHANNEL(X) (((X) >> 11) & 0x1F)
53+
#define STM_PIN_INVERTED(X) (((X) >> 16) & 0x01)
5454

5555
#define STM_MODE_INPUT (0)
5656
#define STM_MODE_OUTPUT_PP (1)
@@ -179,6 +179,18 @@ typedef enum {
179179
PF_14 = 0x5E,
180180
PF_15 = 0x5F,
181181

182+
// ADC internal channels
183+
ADC_TEMP = 0xF0,
184+
ADC_VREF1 = 0xF1,
185+
ADC_VREF2 = 0xF2,
186+
ADC_VREF3 = 0xF3,
187+
ADC_VREF4 = 0xF4,
188+
ADC_VBAT = 0xF5,
189+
ADC_VOPAMP1 = 0xF6,
190+
ADC_VOPAMP2 = 0xF7,
191+
ADC_VOPAMP3 = 0xF8,
192+
ADC_VOPAMP4 = 0xF9,
193+
182194
// Arduino connector namings
183195
A0 = PA_0,
184196
A1 = PA_1,

hal/targets/hal/TARGET_STM/TARGET_STM32F3/TARGET_DISCO_F334C8/PeripheralPins.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,12 @@ const PinMap PinMap_ADC[] = {
5656
{PB_14, ADC_2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 14, 0)}, // ADC2_IN14
5757
{PB_15, ADC_2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 15, 0)}, // ADC2_IN15
5858

59+
{ADC_TEMP, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 16, 0)}, // ADC1_IN16
60+
{ADC_VREF1, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 18, 0)}, // ADC1_IN18
61+
{ADC_VREF2, ADC_2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 18, 0)}, // ADC2_IN18
62+
{ADC_VBAT, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 17, 0)}, // ADC1_IN17
63+
{ADC_VOPAMP2, ADC_2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 17, 0)}, // ADC2_IN17
64+
5965
{NC, NC, 0}
6066
};
6167

hal/targets/hal/TARGET_STM/TARGET_STM32F3/TARGET_DISCO_F334C8/PinNames.h

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/* mbed Microcontroller Library
22
*******************************************************************************
3-
* Copyright (c) 2015, STMicroelectronics
3+
* Copyright (c) 2016, STMicroelectronics
44
* All rights reserved.
55
*
66
* Redistribution and use in source and binary forms, with or without
@@ -43,14 +43,14 @@ extern "C" {
4343
#define STM_PIN_DATA_EXT(MODE, PUPD, AFNUM, CHANNEL, INVERTED) ((int)(((MODE & 0x0F) << 0) |\
4444
((PUPD & 0x07) << 4) |\
4545
((AFNUM & 0x0F) << 7) |\
46-
((CHANNEL & 0x0F) << 11) |\
47-
((INVERTED & 0x01) << 15)))
46+
((CHANNEL & 0x1F) << 11) |\
47+
((INVERTED & 0x01) << 16)))
4848

4949
#define STM_PIN_MODE(X) (((X) >> 0) & 0x0F)
5050
#define STM_PIN_PUPD(X) (((X) >> 4) & 0x07)
5151
#define STM_PIN_AFNUM(X) (((X) >> 7) & 0x0F)
52-
#define STM_PIN_CHANNEL(X) (((X) >> 11) & 0x0F)
53-
#define STM_PIN_INVERTED(X) (((X) >> 15) & 0x01)
52+
#define STM_PIN_CHANNEL(X) (((X) >> 11) & 0x1F)
53+
#define STM_PIN_INVERTED(X) (((X) >> 16) & 0x01)
5454

5555
#define STM_MODE_INPUT (0)
5656
#define STM_MODE_OUTPUT_PP (1)
@@ -118,6 +118,13 @@ typedef enum {
118118
PF_0 = 0x50,
119119
PF_1 = 0x51,
120120

121+
// ADC internal channels
122+
ADC_TEMP = 0xF0,
123+
ADC_VREF1 = 0xF1,
124+
ADC_VREF2 = 0xF2,
125+
ADC_VBAT = 0xF3,
126+
ADC_VOPAMP2 = 0xF4,
127+
121128
// Arduino connector namings
122129
// Note: The Arduino connector is not present on this board.
123130
// We keep these definitions for compatibility with Nucleo code examples.

hal/targets/hal/TARGET_STM/TARGET_STM32F3/TARGET_NUCLEO_F302R8/PeripheralPins.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,11 @@ const PinMap PinMap_ADC[] = {
5656
{PC_1, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 7, 0)}, // ADC1_IN7 - ARDUINO A4
5757
{PC_2, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 8, 0)}, // ADC1_IN8
5858
{PC_3, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 9, 0)}, // ADC1_IN9
59+
60+
{ADC_TEMP, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 16, 0)}, // ADC1_IN16
61+
{ADC_VBAT, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 17, 0)}, // ADC1_IN17
62+
{ADC_VREF, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 18, 0)}, // ADC1_IN18
63+
5964
{NC, NC, 0}
6065
};
6166

hal/targets/hal/TARGET_STM/TARGET_STM32F3/TARGET_NUCLEO_F302R8/PinNames.h

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/* mbed Microcontroller Library
22
*******************************************************************************
3-
* Copyright (c) 2015, STMicroelectronics
3+
* Copyright (c) 2016, STMicroelectronics
44
* All rights reserved.
55
*
66
* Redistribution and use in source and binary forms, with or without
@@ -43,14 +43,14 @@ extern "C" {
4343
#define STM_PIN_DATA_EXT(MODE, PUPD, AFNUM, CHANNEL, INVERTED) ((int)(((MODE & 0x0F) << 0) |\
4444
((PUPD & 0x07) << 4) |\
4545
((AFNUM & 0x0F) << 7) |\
46-
((CHANNEL & 0x0F) << 11) |\
47-
((INVERTED & 0x01) << 15)))
46+
((CHANNEL & 0x1F) << 11) |\
47+
((INVERTED & 0x01) << 16)))
4848

4949
#define STM_PIN_MODE(X) (((X) >> 0) & 0x0F)
5050
#define STM_PIN_PUPD(X) (((X) >> 4) & 0x07)
5151
#define STM_PIN_AFNUM(X) (((X) >> 7) & 0x0F)
52-
#define STM_PIN_CHANNEL(X) (((X) >> 11) & 0x0F)
53-
#define STM_PIN_INVERTED(X) (((X) >> 15) & 0x01)
52+
#define STM_PIN_CHANNEL(X) (((X) >> 11) & 0x1F)
53+
#define STM_PIN_INVERTED(X) (((X) >> 16) & 0x01)
5454

5555
#define STM_MODE_INPUT (0)
5656
#define STM_MODE_OUTPUT_PP (1)
@@ -133,6 +133,11 @@ typedef enum {
133133
PF_0 = 0x50,
134134
PF_1 = 0x51,
135135

136+
// ADC internal channels
137+
ADC_TEMP = 0xF0,
138+
ADC_VREF = 0xF1,
139+
ADC_VBAT = 0xF2,
140+
136141
// Arduino connector namings
137142
A0 = PA_0,
138143
A1 = PA_1,

hal/targets/hal/TARGET_STM/TARGET_STM32F3/TARGET_NUCLEO_F303K8/PeripheralPins.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,13 @@ const PinMap PinMap_ADC[] = {
5050

5151
{PB_0, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 11, 0)}, // ADC1_IN11 - ARDUINO D3
5252
{PB_1, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 12, 0)}, // ADC1_IN12 - ARDUINO D6
53+
54+
{ADC_TEMP, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 16, 0)}, // ADC1_IN16
55+
{ADC_VREF1, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 18, 0)}, // ADC1_IN18
56+
{ADC_VREF2, ADC_2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 18, 0)}, // ADC2_IN18
57+
{ADC_VBAT, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 17, 0)}, // ADC1_IN17
58+
{ADC_VOPAMP2, ADC_2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 17, 0)}, // ADC2_IN17
59+
5360
{NC, NC, 0}
5461
};
5562

hal/targets/hal/TARGET_STM/TARGET_STM32F3/TARGET_NUCLEO_F303K8/PinNames.h

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/* mbed Microcontroller Library
22
*******************************************************************************
3-
* Copyright (c) 2015, STMicroelectronics
3+
* Copyright (c) 2016, STMicroelectronics
44
* All rights reserved.
55
*
66
* Redistribution and use in source and binary forms, with or without
@@ -43,14 +43,14 @@ extern "C" {
4343
#define STM_PIN_DATA_EXT(MODE, PUPD, AFNUM, CHANNEL, INVERTED) ((int)(((MODE & 0x0F) << 0) |\
4444
((PUPD & 0x07) << 4) |\
4545
((AFNUM & 0x0F) << 7) |\
46-
((CHANNEL & 0x0F) << 11) |\
47-
((INVERTED & 0x01) << 15)))
46+
((CHANNEL & 0x1F) << 11) |\
47+
((INVERTED & 0x01) << 16)))
4848

4949
#define STM_PIN_MODE(X) (((X) >> 0) & 0x0F)
5050
#define STM_PIN_PUPD(X) (((X) >> 4) & 0x07)
5151
#define STM_PIN_AFNUM(X) (((X) >> 7) & 0x0F)
52-
#define STM_PIN_CHANNEL(X) (((X) >> 11) & 0x0F)
53-
#define STM_PIN_INVERTED(X) (((X) >> 15) & 0x01)
52+
#define STM_PIN_CHANNEL(X) (((X) >> 11) & 0x1F)
53+
#define STM_PIN_INVERTED(X) (((X) >> 16) & 0x01)
5454

5555
#define STM_MODE_INPUT (0)
5656
#define STM_MODE_OUTPUT_PP (1)
@@ -105,6 +105,13 @@ typedef enum {
105105
PF_0 = 0x50,
106106
PF_1 = 0x51,
107107

108+
// ADC internal channels
109+
ADC_TEMP = 0xF0,
110+
ADC_VREF1 = 0xF1,
111+
ADC_VREF2 = 0xF2,
112+
ADC_VBAT = 0xF3,
113+
ADC_VOPAMP2 = 0xF4,
114+
108115
// Arduino connector namings
109116
A0 = PA_0,
110117
A1 = PA_1,

hal/targets/hal/TARGET_STM/TARGET_STM32F3/TARGET_NUCLEO_F303RE/PeripheralPins.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,18 @@ const PinMap PinMap_ADC[] = {
5757
{PC_3, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 9, 0)}, // ADC12_IN9
5858
{PC_4, ADC_2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 5, 0)}, // ADC2_IN5
5959
{PC_5, ADC_2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 11, 0)}, // ADC2_IN11
60+
61+
{ADC_TEMP, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 16, 0)}, // ADC1_IN16
62+
{ADC_VREF1, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 18, 0)}, // ADC1_IN18
63+
{ADC_VREF2, ADC_2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 18, 0)}, // ADC2_IN18
64+
{ADC_VREF3, ADC_3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 18, 0)}, // ADC3_IN18
65+
{ADC_VREF4, ADC_4, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 18, 0)}, // ADC4_IN18
66+
{ADC_VBAT, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 17, 0)}, // ADC1_IN17
67+
{ADC_VOPAMP1, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 15, 0)}, // ADC1_IN15
68+
{ADC_VOPAMP2, ADC_2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 17, 0)}, // ADC2_IN17
69+
{ADC_VOPAMP3, ADC_3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 17, 0)}, // ADC3_IN17
70+
{ADC_VOPAMP4, ADC_4, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 17, 0)}, // ADC4_IN17
71+
6072
{NC, NC, 0}
6173
};
6274

hal/targets/hal/TARGET_STM/TARGET_STM32F3/TARGET_NUCLEO_F303RE/PinNames.h

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/* mbed Microcontroller Library
22
*******************************************************************************
3-
* Copyright (c) 2015, STMicroelectronics
3+
* Copyright (c) 2016, STMicroelectronics
44
* All rights reserved.
55
*
66
* Redistribution and use in source and binary forms, with or without
@@ -43,14 +43,14 @@ extern "C" {
4343
#define STM_PIN_DATA_EXT(MODE, PUPD, AFNUM, CHANNEL, INVERTED) ((int)(((MODE & 0x0F) << 0) |\
4444
((PUPD & 0x07) << 4) |\
4545
((AFNUM & 0x0F) << 7) |\
46-
((CHANNEL & 0x0F) << 11) |\
47-
((INVERTED & 0x01) << 15)))
46+
((CHANNEL & 0x1F) << 11) |\
47+
((INVERTED & 0x01) << 16)))
4848

4949
#define STM_PIN_MODE(X) (((X) >> 0) & 0x0F)
5050
#define STM_PIN_PUPD(X) (((X) >> 4) & 0x07)
5151
#define STM_PIN_AFNUM(X) (((X) >> 7) & 0x0F)
52-
#define STM_PIN_CHANNEL(X) (((X) >> 11) & 0x0F)
53-
#define STM_PIN_INVERTED(X) (((X) >> 15) & 0x01)
52+
#define STM_PIN_CHANNEL(X) (((X) >> 11) & 0x1F)
53+
#define STM_PIN_INVERTED(X) (((X) >> 16) & 0x01)
5454

5555
#define STM_MODE_INPUT (0)
5656
#define STM_MODE_OUTPUT_PP (1)
@@ -133,6 +133,18 @@ typedef enum {
133133
PF_0 = 0x50,
134134
PF_1 = 0x51,
135135

136+
// ADC internal channels
137+
ADC_TEMP = 0xF0,
138+
ADC_VREF1 = 0xF1,
139+
ADC_VREF2 = 0xF2,
140+
ADC_VREF3 = 0xF3,
141+
ADC_VREF4 = 0xF4,
142+
ADC_VBAT = 0xF5,
143+
ADC_VOPAMP1 = 0xF6,
144+
ADC_VOPAMP2 = 0xF7,
145+
ADC_VOPAMP3 = 0xF8,
146+
ADC_VOPAMP4 = 0xF9,
147+
136148
// Arduino connector namings
137149
A0 = PA_0,
138150
A1 = PA_1,

hal/targets/hal/TARGET_STM/TARGET_STM32F3/TARGET_NUCLEO_F303ZE/PeripheralPins.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,18 @@ const PinMap PinMap_ADC[] = {
9191
//{PF_2, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 10, 0)}, // ADC1_IN10
9292
{PF_2, ADC_2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 10, 0)}, // ADC2_IN10
9393
{PF_4, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 5, 0)}, // ADC1_IN5
94+
95+
{ADC_TEMP, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 16, 0)}, // ADC1_IN16
96+
{ADC_VREF1, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 18, 0)}, // ADC1_IN18
97+
{ADC_VREF2, ADC_2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 18, 0)}, // ADC2_IN18
98+
{ADC_VREF3, ADC_3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 18, 0)}, // ADC3_IN18
99+
{ADC_VREF4, ADC_4, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 18, 0)}, // ADC4_IN18
100+
{ADC_VBAT, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 17, 0)}, // ADC1_IN17
101+
{ADC_VOPAMP1, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 15, 0)}, // ADC1_IN15
102+
{ADC_VOPAMP2, ADC_2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 17, 0)}, // ADC2_IN17
103+
{ADC_VOPAMP3, ADC_3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 17, 0)}, // ADC3_IN17
104+
{ADC_VOPAMP4, ADC_4, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 17, 0)}, // ADC4_IN17
105+
94106
{NC, NC, 0}
95107
};
96108

hal/targets/hal/TARGET_STM/TARGET_STM32F3/TARGET_NUCLEO_F303ZE/PinNames.h

Lines changed: 30 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/* mbed Microcontroller Library
22
*******************************************************************************
3-
* Copyright (c) 2014, STMicroelectronics
3+
* Copyright (c) 2016, STMicroelectronics
44
* All rights reserved.
55
*
66
* Redistribution and use in source and binary forms, with or without
@@ -36,14 +36,22 @@
3636
extern "C" {
3737
#endif
3838

39-
// See stm32f4xx_hal_gpio.h and stm32f4xx_hal_gpio_ex.h for values of MODE, PUPD and AFNUM
40-
#define STM_PIN_DATA(MODE, PUPD, AFNUM) ((int)(((AFNUM) << 7) | ((PUPD) << 4) | ((MODE) << 0)))
41-
#define STM_PIN_DATA_EXT(MODE, PUPD, AFNUM, CHANNEL, INVERTED) ((int)(((INVERTED & 0x01) << 15) | ((CHANNEL & 0x0F) << 11) | ((AFNUM & 0x0F) << 7) | ((PUPD & 0x07) << 4) | ((MODE & 0x0F) << 0)))
42-
#define STM_PIN_MODE(X) (((X) >> 0) & 0x0F)
43-
#define STM_PIN_PUPD(X) (((X) >> 4) & 0x07)
44-
#define STM_PIN_AFNUM(X) (((X) >> 7) & 0x0F)
45-
#define STM_PIN_CHANNEL(X) (((X) >> 11) & 0x0F)
46-
#define STM_PIN_INVERTED(X) (((X) >> 15) & 0x01)
39+
#define STM_PIN_DATA(MODE, PUPD, AFNUM) ((int)(((MODE & 0x0F) << 0) |\
40+
((PUPD & 0x07) << 4) |\
41+
((AFNUM & 0x0F) << 7)))
42+
43+
#define STM_PIN_DATA_EXT(MODE, PUPD, AFNUM, CHANNEL, INVERTED) ((int)(((MODE & 0x0F) << 0) |\
44+
((PUPD & 0x07) << 4) |\
45+
((AFNUM & 0x0F) << 7) |\
46+
((CHANNEL & 0x1F) << 11) |\
47+
((INVERTED & 0x01) << 16)))
48+
49+
#define STM_PIN_MODE(X) (((X) >> 0) & 0x0F)
50+
#define STM_PIN_PUPD(X) (((X) >> 4) & 0x07)
51+
#define STM_PIN_AFNUM(X) (((X) >> 7) & 0x0F)
52+
#define STM_PIN_CHANNEL(X) (((X) >> 11) & 0x1F)
53+
#define STM_PIN_INVERTED(X) (((X) >> 16) & 0x01)
54+
4755
#define STM_MODE_INPUT (0)
4856
#define STM_MODE_OUTPUT_PP (1)
4957
#define STM_MODE_OUTPUT_OD (2)
@@ -192,13 +200,25 @@ typedef enum {
192200
PH_1 = 0x71,
193201
PH_2 = 0x72,
194202

203+
// ADC internal channels
204+
ADC_TEMP = 0xF0,
205+
ADC_VREF1 = 0xF1,
206+
ADC_VREF2 = 0xF2,
207+
ADC_VREF3 = 0xF3,
208+
ADC_VREF4 = 0xF4,
209+
ADC_VBAT = 0xF5,
210+
ADC_VOPAMP1 = 0xF6,
211+
ADC_VOPAMP2 = 0xF7,
212+
ADC_VOPAMP3 = 0xF8,
213+
ADC_VOPAMP4 = 0xF9,
214+
195215
// Arduino connector namings
196216
A0 = PA_3,
197217
A1 = PC_0,
198218
A2 = PC_3,
199219
A3 = PC_1,
200220
A4 = PC_4,
201-
A5 = PC_5,
221+
A5 = PC_5,
202222
D0 = PG_9,
203223
D1 = PG_14,
204224
D2 = PF_15,
@@ -246,8 +266,6 @@ typedef enum {
246266
PullDefault = PullNone
247267
} PinMode;
248268

249-
250-
251269
#ifdef __cplusplus
252270
}
253271
#endif

hal/targets/hal/TARGET_STM/TARGET_STM32F3/TARGET_NUCLEO_F334R8/PeripheralPins.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,13 @@ const PinMap PinMap_ADC[] = {
6262
{PC_3, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 9, 0)}, // ADC1_IN9
6363
{PC_4, ADC_2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 5, 0)}, // ADC2_IN5
6464
{PC_5, ADC_2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 11, 0)}, // ADC2_IN11
65+
66+
{ADC_TEMP, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 16, 0)}, // ADC1_IN16
67+
{ADC_VREF1, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 18, 0)}, // ADC1_IN18
68+
{ADC_VREF2, ADC_2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 18, 0)}, // ADC2_IN18
69+
{ADC_VBAT, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 17, 0)}, // ADC1_IN17
70+
{ADC_VOPAMP2, ADC_2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 17, 0)}, // ADC2_IN17
71+
6572
{NC, NC, 0}
6673
};
6774

0 commit comments

Comments
 (0)