@@ -31,6 +31,8 @@ extern "C" {
31
31
static uint32_t saadcReference = SAADC_CH_CONFIG_REFSEL_Internal ;
32
32
static uint32_t saadcGain = SAADC_CH_CONFIG_GAIN_Gain1_6 ;
33
33
34
+ static bool saadcBurst = SAADC_CH_CONFIG_BURST_Disabled ;
35
+
34
36
#if 0 // Note: Adafruit use seperated HardwarePWM class
35
37
#define PWM_COUNT 3
36
38
@@ -124,6 +126,44 @@ void analogReference( eAnalogReference ulMode )
124
126
}
125
127
}
126
128
129
+ void analogOversampling ( uint32_t ulOversampling )
130
+ {
131
+ saadcBurst = SAADC_CH_CONFIG_BURST_Enabled ;
132
+
133
+ switch (ulOversampling ) {
134
+ case 0 :
135
+ case 1 :
136
+ saadcBurst = SAADC_CH_CONFIG_BURST_Disabled ;
137
+ NRF_SAADC -> OVERSAMPLE = SAADC_OVERSAMPLE_OVERSAMPLE_Bypass ;
138
+ return ;
139
+ break ;
140
+ case 2 :
141
+ NRF_SAADC -> OVERSAMPLE = SAADC_OVERSAMPLE_OVERSAMPLE_Over2x ;
142
+ break ;
143
+ case 4 :
144
+ NRF_SAADC -> OVERSAMPLE = SAADC_OVERSAMPLE_OVERSAMPLE_Over4x ;
145
+ break ;
146
+ case 8 :
147
+ NRF_SAADC -> OVERSAMPLE = SAADC_OVERSAMPLE_OVERSAMPLE_Over8x ;
148
+ break ;
149
+ case 16 :
150
+ NRF_SAADC -> OVERSAMPLE = SAADC_OVERSAMPLE_OVERSAMPLE_Over16x ;
151
+ break ;
152
+ case 32 :
153
+ NRF_SAADC -> OVERSAMPLE = SAADC_OVERSAMPLE_OVERSAMPLE_Over32x ;
154
+ break ;
155
+ case 64 :
156
+ NRF_SAADC -> OVERSAMPLE = SAADC_OVERSAMPLE_OVERSAMPLE_Over64x ;
157
+ break ;
158
+ case 128 :
159
+ NRF_SAADC -> OVERSAMPLE = SAADC_OVERSAMPLE_OVERSAMPLE_Over128x ;
160
+ break ;
161
+ case 256 :
162
+ NRF_SAADC -> OVERSAMPLE = SAADC_OVERSAMPLE_OVERSAMPLE_Over256x ;
163
+ break ;
164
+ }
165
+ }
166
+
127
167
uint32_t analogRead ( uint32_t ulPin )
128
168
{
129
169
uint32_t pin = SAADC_CH_PSELP_PSELP_NC ;
@@ -200,7 +240,8 @@ uint32_t analogRead( uint32_t ulPin )
200
240
| ((saadcGain << SAADC_CH_CONFIG_GAIN_Pos ) & SAADC_CH_CONFIG_GAIN_Msk )
201
241
| ((saadcReference << SAADC_CH_CONFIG_REFSEL_Pos ) & SAADC_CH_CONFIG_REFSEL_Msk )
202
242
| ((SAADC_CH_CONFIG_TACQ_3us << SAADC_CH_CONFIG_TACQ_Pos ) & SAADC_CH_CONFIG_TACQ_Msk )
203
- | ((SAADC_CH_CONFIG_MODE_SE << SAADC_CH_CONFIG_MODE_Pos ) & SAADC_CH_CONFIG_MODE_Msk );
243
+ | ((SAADC_CH_CONFIG_MODE_SE << SAADC_CH_CONFIG_MODE_Pos ) & SAADC_CH_CONFIG_MODE_Msk )
244
+ | ((saadcBurst << SAADC_CH_CONFIG_BURST_Pos ) & SAADC_CH_CONFIG_BURST_Msk );
204
245
NRF_SAADC -> CH [0 ].PSELN = pin ;
205
246
NRF_SAADC -> CH [0 ].PSELP = pin ;
206
247
0 commit comments