diff options
-rw-r--r-- | os/hal/platforms/STM32/adc_lld.c | 12 | ||||
-rw-r--r-- | os/hal/platforms/STM32/adc_lld.h | 4 | ||||
-rw-r--r-- | readme.txt | 1 |
3 files changed, 8 insertions, 9 deletions
diff --git a/os/hal/platforms/STM32/adc_lld.c b/os/hal/platforms/STM32/adc_lld.c index 203eff7d4..908966ac7 100644 --- a/os/hal/platforms/STM32/adc_lld.c +++ b/os/hal/platforms/STM32/adc_lld.c @@ -61,8 +61,7 @@ CH_IRQ_HANDLER(DMA1_Ch1_IRQHandler) { CH_IRQ_PROLOGUE();
isr = DMA1->ISR;
- DMA1->IFCR = DMA_IFCR_CGIF1 | DMA_IFCR_CTCIF1 |
- DMA_IFCR_CHTIF1 | DMA_IFCR_CTEIF1;
+ dmaClearChannel(STM32_DMA1, STM32_DMA_CHANNEL_1);
if ((isr & DMA_ISR_HTIF1) != 0) {
/* Half transfer processing.*/
if (ADCD1.ad_callback != NULL) {
@@ -120,7 +119,7 @@ void adc_lld_init(void) { /* Driver initialization.*/
adcObjectInit(&ADCD1);
ADCD1.ad_adc = ADC1;
- ADCD1.ad_dma = DMA1_Channel1;
+ ADCD1.ad_dmap = STM32_DMA1;
ADCD1.ad_dmaprio = STM32_ADC1_DMA_PRIORITY << 12;
/* Temporary activation.*/
@@ -201,7 +200,6 @@ void adc_lld_start_conversion(ADCDriver *adcp) { const ADCConversionGroup *grpp = adcp->ad_grpp;
/* DMA setup.*/
- adcp->ad_dma->CMAR = (uint32_t)adcp->ad_samples;
ccr = adcp->ad_dmaprio | DMA_CCR1_EN | DMA_CCR1_MSIZE_0 | DMA_CCR1_PSIZE_0 |
DMA_CCR1_MINC | DMA_CCR1_TCIE | DMA_CCR1_TEIE;
if (grpp->acg_circular)
@@ -214,8 +212,8 @@ void adc_lld_start_conversion(ADCDriver *adcp) { }
else
n = (uint32_t)grpp->acg_num_channels;
- adcp->ad_dma->CNDTR = n;
- adcp->ad_dma->CCR = ccr;
+ dmaSetupChannel(adcp->ad_dmap, STM32_DMA_CHANNEL_1,
+ n, adcp->ad_samples, ccr);
/* ADC setup.*/
adcp->ad_adc->SMPR1 = grpp->acg_smpr1;
@@ -237,7 +235,7 @@ void adc_lld_start_conversion(ADCDriver *adcp) { */
void adc_lld_stop_conversion(ADCDriver *adcp) {
- adcp->ad_dma->CCR = 0;
+ adcp->ad_dmap->channels[STM32_DMA_CHANNEL_1].CCR = 0;
adcp->ad_adc->CR2 = 0;
}
diff --git a/os/hal/platforms/STM32/adc_lld.h b/os/hal/platforms/STM32/adc_lld.h index 599acf69c..426ae7924 100644 --- a/os/hal/platforms/STM32/adc_lld.h +++ b/os/hal/platforms/STM32/adc_lld.h @@ -213,9 +213,9 @@ typedef struct { */
ADC_TypeDef *ad_adc;
/**
- * @brief Pointer to the DMA channel registers block.
+ * @brief Pointer to the DMA registers block.
*/
- DMA_Channel_TypeDef *ad_dma;
+ stm32_dma_t *ad_dmap;
/**
* @brief DMA priority bit mask.
*/
diff --git a/readme.txt b/readme.txt index 8b1e64b6a..376919e1b 100644 --- a/readme.txt +++ b/readme.txt @@ -72,6 +72,7 @@ - NEW: Added a generic BaseFileStream interface for future File System
implementations or integrations (untested and not sure if it will stay or
change).
+- CHANGE: Modified the STM32 ADC driver to use the new DMA infrastructure.
*** 2.1.1 ***
- FIX: Fixed insufficient stack size for idle thread (bug 3033624)(backported
|