|
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