Skip to content

Commit 1757f6a

Browse files
author
gdisirio
committed
#1117 #4.
git-svn-id: http://svn.osdn.net/svnroot/chibios/trunk@13781 27425a3e-05d8-49a3-a47f-9c15f0e5edd8
1 parent 19ef39a commit 1757f6a

2 files changed

Lines changed: 38 additions & 1 deletion

File tree

os/hal/ports/STM32/LLD/ADCv4/hal_adc_lld.h

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -350,7 +350,42 @@
350350
#error "Invalid IRQ priority assigned to ADC3"
351351
#endif
352352

353+
#if !defined(STM32_ENFORCE_H7_REV_XY)
353354
/* ADC clock source checks.*/
355+
#if (STM32_D1HPRE == STM32_D1HPRE_DIV1)
356+
#define STM32_ADC_SCLK STM32_SYSCLK
357+
#else
358+
#define STM32_ADC_SCLK (STM32_SYSCLK / 2)
359+
#endif
360+
361+
#if STM32_ADC_ADC12_CLOCK_MODE == ADC_CCR_CKMODE_ADCCK
362+
/* CHTODO: also check ADC_CCR_PRESC.*/
363+
#define STM32_ADC12_CLOCK (STM32_ADCCLK / 2)
364+
#elif STM32_ADC_ADC12_CLOCK_MODE == ADC_CCR_CKMODE_AHB_DIV1
365+
#define STM32_ADC12_CLOCK (STM32_ADC_SCLK / 1 / 2)
366+
#elif STM32_ADC_ADC12_CLOCK_MODE == ADC_CCR_CKMODE_AHB_DIV2
367+
#define STM32_ADC12_CLOCK (STM32_ADC_SCLK / 2 / 2)
368+
#elif STM32_ADC_ADC12_CLOCK_MODE == ADC_CCR_CKMODE_AHB_DIV4
369+
#define STM32_ADC12_CLOCK (STM32_ADC_SCLK / 4 / 2)
370+
#else
371+
#error "invalid clock mode selected for STM32_ADC_ADC12_CLOCK_MODE"
372+
#endif
373+
374+
#if STM32_ADC_ADC3_CLOCK_MODE == ADC_CCR_CKMODE_ADCCK
375+
/* CHTODO: also check ADC_CCR_PRESC.*/
376+
#define STM32_ADC3_CLOCK (STM32_ADCCLK / 2)
377+
#elif STM32_ADC_ADC3_CLOCK_MODE == ADC_CCR_CKMODE_AHB_DIV1
378+
#define STM32_ADC3_CLOCK (STM32_ADC_SCLK / 1 / 2)
379+
#elif STM32_ADC_ADC3_CLOCK_MODE == ADC_CCR_CKMODE_AHB_DIV2
380+
#define STM32_ADC3_CLOCK (STM32_ADC_SCLK / 2 / 2)
381+
#elif STM32_ADC_ADC3_CLOCK_MODE == ADC_CCR_CKMODE_AHB_DIV4
382+
#define STM32_ADC3_CLOCK (STM32_ADC_SCLK / 4 / 2)
383+
#else
384+
#error "invalid clock mode selected for STM32_ADC_ADC3_CLOCK_MODE"
385+
#endif
386+
387+
#else /* defined(STM32_ENFORCE_H7_REV_XY) */
388+
354389
#if STM32_ADC_ADC12_CLOCK_MODE == ADC_CCR_CKMODE_ADCCK
355390
#define STM32_ADC12_CLOCK STM32_ADCCLK
356391
#elif STM32_ADC_ADC12_CLOCK_MODE == ADC_CCR_CKMODE_AHB_DIV1
@@ -375,6 +410,8 @@
375410
#error "invalid clock mode selected for STM32_ADC_ADC3_CLOCK_MODE"
376411
#endif
377412

413+
#endif /* defined(STM32_ENFORCE_H7_REV_XY) */
414+
378415
#if STM32_ADC12_CLOCK > STM32_ADCCLK_MAX
379416
#error "STM32_ADC12_CLOCK exceeding maximum frequency (STM32_ADCCLK_MAX)"
380417
#endif

os/hal/ports/STM32/STM32H7xx/hal_lld.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@
212212
/**
213213
* @brief Maximum ADC clock frequency.
214214
*/
215-
#define STM32_ADCCLK_MAX 100000000
215+
#define STM32_ADCCLK_MAX 50000000
216216
/** @} */
217217

218218
#else /* defined(STM32_ENFORCE_H7_REV_XY) */

0 commit comments

Comments
 (0)