From 8421c4e389f9becc9e5574505c95e60465ac5f4e Mon Sep 17 00:00:00 2001 From: gdisirio Date: Fri, 6 Aug 2010 13:55:32 +0000 Subject: [PATCH] git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@2115 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/hal/platforms/STM32/adc_lld.c | 12 +++++------- os/hal/platforms/STM32/adc_lld.h | 4 ++-- 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