Skip to content

Commit c6a6d04

Browse files
committed
Set nRF51 default ADC to 1/3 prescaler and 1/3 ref
So that the ADC input range is configured from 0 to Vdd instead of the current 0 to 3.6V.
1 parent 6418b19 commit c6a6d04

File tree

1 file changed

+10
-10
lines changed

1 file changed

+10
-10
lines changed

cores/nRF5/wiring_analog_nRF51.c

+10-10
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ static struct PWMContext pwmContext[PWM_COUNT] = {
4747

4848
static int timerEnabled = 0;
4949

50-
static uint32_t adcReference = ADC_CONFIG_REFSEL_VBG;
50+
static uint32_t adcReference = ADC_CONFIG_REFSEL_SupplyOneThirdPrescaling;
5151
static uint32_t adcPrescaling = ADC_CONFIG_INPSEL_AnalogInputOneThirdPrescaling;
5252

5353
static uint32_t readResolution = 10;
@@ -89,10 +89,8 @@ static inline uint32_t mapResolution( uint32_t value, uint32_t from, uint32_t to
8989
*/
9090
void analogReference( eAnalogReference ulMode )
9191
{
92-
switch ( ulMode ) {
93-
case AR_DEFAULT:
92+
switch ( ulMode ) {
9493
case AR_VBG:
95-
default:
9694
// 1.2 Reference, 1/3 prescaler = 0 V - 3.6 V range
9795
// Minimum VDD for full range in safe operation = 3.3V
9896
adcReference = ADC_CONFIG_REFSEL_VBG;
@@ -105,12 +103,6 @@ void analogReference( eAnalogReference ulMode )
105103
adcPrescaling = ADC_CONFIG_INPSEL_AnalogInputTwoThirdsPrescaling;
106104
break;
107105

108-
case AR_SUPPLY_ONE_THIRD:
109-
// 1/3 VDD Reference, 1/3 prescaler = 0 V - VDD range
110-
adcReference = ADC_CONFIG_REFSEL_SupplyOneThirdPrescaling;
111-
adcPrescaling = ADC_CONFIG_INPSEL_AnalogInputOneThirdPrescaling;
112-
break;
113-
114106
case AR_EXT0:
115107
// ARF0 reference, 2/3 prescaler = 0 V - 1.5 ARF0
116108
adcReference = ADC_CONFIG_REFSEL_External | (ADC_CONFIG_EXTREFSEL_AnalogReference0 << ADC_CONFIG_EXTREFSEL_Pos);
@@ -122,6 +114,14 @@ void analogReference( eAnalogReference ulMode )
122114
adcReference = (ADC_CONFIG_REFSEL_External | ADC_CONFIG_EXTREFSEL_AnalogReference1 << ADC_CONFIG_EXTREFSEL_Pos);
123115
adcPrescaling = ADC_CONFIG_INPSEL_AnalogInputTwoThirdsPrescaling;
124116
break;
117+
118+
case AR_SUPPLY_ONE_THIRD:
119+
case AR_DEFAULT:
120+
default:
121+
// 1/3 VDD Reference, 1/3 prescaler = 0 V - VDD range
122+
adcReference = ADC_CONFIG_REFSEL_SupplyOneThirdPrescaling;
123+
adcPrescaling = ADC_CONFIG_INPSEL_AnalogInputOneThirdPrescaling;
124+
break;
125125
}
126126
}
127127

0 commit comments

Comments
 (0)