Page 1 of 1

STM32F302 error:#error invalid DMA stream associated to ADC2

Posted: Mon May 30, 2016 12:02 pm
by dotaviper
the configure of my project is as follows,after compiling,i find error:#error invalid DMA stream associated to ADC2

Code: Select all

/*
 * ADC driver system settings.
 */
#define STM32_ADC_DUAL_MODE                 FALSE
#define STM32_ADC_COMPACT_SAMPLES           FALSE
#define STM32_ADC_USE_ADC1                  TRUE
#define STM32_ADC_ADC1_DMA_STREAM           STM32_DMA_STREAM_ID(1, 1)
#define STM32_ADC_ADC1_DMA_PRIORITY         2
#define STM32_ADC_ADC12_IRQ_PRIORITY        6
#define STM32_ADC_ADC1_DMA_IRQ_PRIORITY     5
#define STM32_ADC_ADC12_CLOCK_MODE          ADC_CCR_CKMODE_AHB_DIV1

#define STM32_ADC_USE_ADC2                  TRUE
#define STM32_ADC_ADC2_DMA_STREAM           STM32_DMA_STREAM_ID(1, 1)
#define STM32_ADC_ADC2_DMA_PRIORITY         2
#define STM32_ADC_ADC2_DMA_IRQ_PRIORITY     5

i want to use PA4 and PA5 as AD ports, and the configure of the ports as follows:

Code: Select all

#define VAL_GPIOA_MODER             (PIN_MODE_INPUT(GPIOA_PIN0) |           \
                                     PIN_MODE_INPUT(GPIOA_PIN1) |           \
                                     PIN_MODE_ALTERNATE(GPIOA_PIN2) |   \
                                     PIN_MODE_ALTERNATE(GPIOA_PIN3) |   \
                                     PIN_MODE_ANALOG(GPIOA_PIN4) |           \
                                     PIN_MODE_ANALOG(GPIOA_PIN5) |           \
                                     PIN_MODE_INPUT(GPIOA_PIN6) |           \
                                     PIN_MODE_INPUT(GPIOA_PIN7) |           \
                                     PIN_MODE_INPUT(GPIOA_PIN8) |           \
                                     PIN_MODE_ALTERNATE(GPIOA_I2C2_SCL) |           \
                                     PIN_MODE_ALTERNATE(GPIOA_I2C2_SDA) |          \
                                     PIN_MODE_INPUT(GPIOA_USB_DM) |          \
                                     PIN_MODE_INPUT(GPIOA_USB_DP) |          \
                                     PIN_MODE_ALTERNATE(GPIOA_SWDIO) |      \
                                     PIN_MODE_ALTERNATE(GPIOA_SWCLK) |      \
                                     PIN_MODE_INPUT(GPIOA_PIN15))
#define VAL_GPIOA_OTYPER            (PIN_OTYPE_PUSHPULL(GPIOA_PIN0) |       \
                                     PIN_OTYPE_PUSHPULL(GPIOA_PIN1) |       \
                                     PIN_OTYPE_PUSHPULL(GPIOA_PIN2) |   \
                                     PIN_OTYPE_PUSHPULL(GPIOA_PIN3) |   \
                                     PIN_OTYPE_PUSHPULL(GPIOA_PIN4) |       \
                                     PIN_OTYPE_PUSHPULL(GPIOA_PIN5) |       \
                                     PIN_OTYPE_PUSHPULL(GPIOA_PIN6) |       \
                                     PIN_OTYPE_PUSHPULL(GPIOA_PIN7) |       \
                                     PIN_OTYPE_PUSHPULL(GPIOA_PIN8) |       \
                                     PIN_OTYPE_OPENDRAIN(GPIOA_I2C2_SCL) |       \
                                     PIN_OTYPE_OPENDRAIN(GPIOA_I2C2_SDA) |      \
                                     PIN_OTYPE_PUSHPULL(GPIOA_USB_DM) |      \
                                     PIN_OTYPE_PUSHPULL(GPIOA_USB_DP) |      \
                                     PIN_OTYPE_PUSHPULL(GPIOA_SWDIO) |      \
                                     PIN_OTYPE_PUSHPULL(GPIOA_SWCLK) |      \
                                     PIN_OTYPE_PUSHPULL(GPIOA_PIN15))
#define VAL_GPIOA_OSPEEDR           (PIN_OSPEED_HIGH(GPIOA_PIN0) |          \
                                     PIN_OSPEED_HIGH(GPIOA_PIN1) |          \
                                     PIN_OSPEED_LOW(GPIOA_PIN2) |       \
                                     PIN_OSPEED_LOW(GPIOA_PIN3) |       \
                                     PIN_OSPEED_HIGH(GPIOA_PIN4) |          \
                                     PIN_OSPEED_HIGH(GPIOA_PIN5) |           \
                                     PIN_OSPEED_HIGH(GPIOA_PIN6) |          \
                                     PIN_OSPEED_HIGH(GPIOA_PIN7) |          \
                                     PIN_OSPEED_HIGH(GPIOA_PIN8) |          \
                                     PIN_OSPEED_HIGH(GPIOA_I2C2_SCL) |          \
                                     PIN_OSPEED_HIGH(GPIOA_I2C2_SDA) |         \
                                     PIN_OSPEED_HIGH(GPIOA_USB_DM) |         \
                                     PIN_OSPEED_HIGH(GPIOA_USB_DP) |         \
                                     PIN_OSPEED_HIGH(GPIOA_SWDIO) |         \
                                     PIN_OSPEED_HIGH(GPIOA_SWCLK) |         \
                                     PIN_OSPEED_VERYLOW(GPIOA_PIN15))
#define VAL_GPIOA_PUPDR             (PIN_PUPDR_PULLUP(GPIOA_PIN0) |         \
                                     PIN_PUPDR_PULLUP(GPIOA_PIN1) |         \
                                     PIN_PUPDR_FLOATING(GPIOA_PIN2) |   \
                                     PIN_PUPDR_FLOATING(GPIOA_PIN3) |   \
                                     PIN_PUPDR_FLOATING(GPIOA_PIN4) |         \
                                     PIN_PUPDR_FLOATING(GPIOA_PIN5) |         \
                                     PIN_PUPDR_PULLUP(GPIOA_PIN6) |         \
                                     PIN_PUPDR_PULLUP(GPIOA_PIN7) |         \
                                     PIN_PUPDR_PULLUP(GPIOA_PIN8) |         \
                                     PIN_PUPDR_FLOATING(GPIOA_I2C2_SCL) |         \
                                     PIN_PUPDR_FLOATING(GPIOA_I2C2_SDA) |        \
                                     PIN_PUPDR_FLOATING(GPIOA_USB_DM) |        \
                                     PIN_PUPDR_FLOATING(GPIOA_USB_DP) |        \
                                     PIN_PUPDR_PULLUP(GPIOA_SWDIO) |        \
                                     PIN_PUPDR_PULLDOWN(GPIOA_SWCLK) |      \
                                     PIN_PUPDR_PULLUP(GPIOA_PIN15))
#define VAL_GPIOA_ODR               (PIN_ODR_HIGH(GPIOA_PIN0) |             \
                                     PIN_ODR_HIGH(GPIOA_PIN1) |             \
                                     PIN_ODR_HIGH(GPIOA_PIN2) |         \
                                     PIN_ODR_HIGH(GPIOA_PIN3) |         \
                                     PIN_ODR_LOW(GPIOA_PIN4) |             \
                                     PIN_ODR_LOW(GPIOA_PIN5) |              \
                                     PIN_ODR_HIGH(GPIOA_PIN6) |             \
                                     PIN_ODR_HIGH(GPIOA_PIN7) |             \
                                     PIN_ODR_HIGH(GPIOA_PIN8) |             \
                                     PIN_ODR_HIGH(GPIOA_I2C2_SCL) |             \
                                     PIN_ODR_HIGH(GPIOA_I2C2_SDA) |            \
                                     PIN_ODR_HIGH(GPIOA_USB_DM) |            \
                                     PIN_ODR_HIGH(GPIOA_USB_DP) |            \
                                     PIN_ODR_HIGH(GPIOA_SWDIO) |            \
                                     PIN_ODR_HIGH(GPIOA_SWCLK) |            \
                                     PIN_ODR_HIGH(GPIOA_PIN15))
#define VAL_GPIOA_AFRL              (PIN_AFIO_AF(GPIOA_PIN0, 0) |           \
                                     PIN_AFIO_AF(GPIOA_PIN1, 0) |           \
                                     PIN_AFIO_AF(GPIOA_PIN2, 7) |       \
                                     PIN_AFIO_AF(GPIOA_PIN3, 0) |       \
                                     PIN_AFIO_AF(GPIOA_PIN4, 0) |           \
                                     PIN_AFIO_AF(GPIOA_PIN5, 0) |           \
                                     PIN_AFIO_AF(GPIOA_PIN6, 0) |           \
                                     PIN_AFIO_AF(GPIOA_PIN7, 0))
#define VAL_GPIOA_AFRH              (PIN_AFIO_AF(GPIOA_PIN8, 6) |           \
                                     PIN_AFIO_AF(GPIOA_I2C2_SCL, 4) |           \
                                     PIN_AFIO_AF(GPIOA_I2C2_SDA, 4) |          \
                                     PIN_AFIO_AF(GPIOA_USB_DM, 14) |          \
                                     PIN_AFIO_AF(GPIOA_USB_DP, 14) |          \
                                     PIN_AFIO_AF(GPIOA_SWDIO, 0) |          \
                                     PIN_AFIO_AF(GPIOA_SWCLK, 0) |          \
                                     PIN_AFIO_AF(GPIOA_PIN15, 0))
                                     

Looking forward to your reply,ty.

Re: STM32F302 error:#error invalid DMA stream associated to ADC2

Posted: Mon May 30, 2016 12:22 pm
by Giovanni
Hi,

You are using an invalid DMA for ADC2, not all DMAs can be used, see the STM32 Reference Manual for compatible DMA channels.

Board files should not be modified manually, better change the pin modes at runtime using the PAL driver, see the various ADC demo applications.

Giovanni