|
80 | 80 | #define ADC_SAMPLETIME_DEFAULT ADC_SAMPLETIME_12CYCLES_5
|
81 | 81 | #define ADC_SAMPLETIME_DEFAULT_INT ADC_SAMPLETIME_160CYCLES_5
|
82 | 82 | #elif defined(STM32L1)
|
83 |
| -#define ADC_SAMPLETIME_DEFAULT ADC_SAMPLETIME_384CYCLES |
| 83 | +#define ADC_SAMPLETIME_DEFAULT ADC_SAMPLETIME_16CYCLES |
84 | 84 | #define ADC_SAMPLETIME_DEFAULT_INT ADC_SAMPLETIME_384CYCLES
|
85 | 85 | #elif defined(STM32L4) || defined(STM32WB)
|
86 | 86 | #define ADC_SAMPLETIME_DEFAULT ADC_SAMPLETIME_12CYCLES_5
|
@@ -225,6 +225,8 @@ void adc_config(ADC_TypeDef *adc, uint32_t bits) {
|
225 | 225 | ADC3_COMMON->CCR = 3 << ADC_CCR_CKMODE_Pos;
|
226 | 226 | #elif defined(STM32L0)
|
227 | 227 | ADC1_COMMON->CCR = 0; // ADCPR=PCLK/2
|
| 228 | + #elif defined(STM32L1) |
| 229 | + ADC1_COMMON->CCR = 1 << ADC_CCR_ADCPRE_Pos; // ADCPRE=2 |
228 | 230 | #elif defined(STM32WB)
|
229 | 231 | ADC1_COMMON->CCR = 0 << ADC_CCR_PRESC_Pos | 0 << ADC_CCR_CKMODE_Pos; // PRESC=1, MODE=ASYNC
|
230 | 232 | #elif defined(STM32WL)
|
@@ -385,6 +387,31 @@ static void adc_config_channel(ADC_TypeDef *adc, uint32_t channel, uint32_t samp
|
385 | 387 | }
|
386 | 388 | *smpr = (*smpr & ~(7 << (channel * 3))) | sample_time << (channel * 3); // select sample time
|
387 | 389 |
|
| 390 | + #elif defined(STM32L1) |
| 391 | + |
| 392 | + ADC_Common_TypeDef *adc_common = ADC1_COMMON; |
| 393 | + if (channel == ADC_CHANNEL_VREFINT || channel == ADC_CHANNEL_TEMPSENSOR) { |
| 394 | + adc_common->CCR |= ADC_CCR_TSVREFE; |
| 395 | + if (channel == ADC_CHANNEL_TEMPSENSOR) { |
| 396 | + adc_stabilisation_delay_us(ADC_TEMPSENSOR_DELAY_US); |
| 397 | + } |
| 398 | + } |
| 399 | + |
| 400 | + adc->SQR1 = (1 - 1) << ADC_SQR1_L_Pos; |
| 401 | + adc->SQR5 = (channel & 0x1f) << ADC_SQR5_SQ1_Pos; |
| 402 | + |
| 403 | + __IO uint32_t *smpr; |
| 404 | + if (channel >= 20) { |
| 405 | + smpr = &adc->SMPR1; |
| 406 | + channel -= 20; |
| 407 | + } else if (channel >= 10) { |
| 408 | + smpr = &adc->SMPR2; |
| 409 | + channel -= 10; |
| 410 | + } else { |
| 411 | + smpr = &adc->SMPR3; |
| 412 | + } |
| 413 | + *smpr = (*smpr & ~(7 << (channel * 3))) | sample_time << (channel * 3); // select sample time |
| 414 | + |
388 | 415 | #elif defined(STM32G4) || defined(STM32H5) || defined(STM32H7) || defined(STM32L4) || defined(STM32WB)
|
389 | 416 |
|
390 | 417 | #if defined(STM32G4) || defined(STM32H5) || defined(STM32H7A3xx) || defined(STM32H7A3xxQ) || defined(STM32H7B3xx) || defined(STM32H7B3xxQ)
|
|
0 commit comments