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,

0 commit comments

Comments
 (0)