|
STM32F4 ADC DMA ? |
|
|
|
Jul 22 2012, 14:14
|
Профессионал
    
Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763

|
Помогите пожалуйста. Хочу запустить АЦД непрерывно на оцифровку последовательно 12 каналов, чтобы складывало с массив. Вот код. Не могу понять - после инициализации DMA, в его регисторах все нули. Пробовал заускать программу - в массиве тоже все нули. Код //volatile u16 ADCConvertedValue[12]; <- the results are here void adc_init(void){ ADC_InitTypeDef ADC_InitStruct; ADC_CommonInitTypeDef ADC_CommonInitStruct; DMA_InitTypeDef DMA_InitStructure; // ports are already configured RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE); // enable clocking of ADC1 RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_DMA2,ENABLE); // enable clocking of DMA2 //==Configure DMA2 - Channel0 Stream 4== DMA_InitStructure.DMA_Channel = DMA_Channel_0; DMA_InitStructure.DMA_PeripheralBaseAddr = (u32)&ADC1->DR; DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t) &ADCConvertedValue; DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory; DMA_InitStructure.DMA_BufferSize = 12; DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord; DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord; DMA_InitStructure.DMA_Mode = DMA_Mode_Circular; DMA_InitStructure.DMA_Priority = DMA_Priority_High; DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable; DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_HalfFull; DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single; DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single; DMA_Init(DMA2_Stream4, &DMA_InitStructure); DMA_Cmd( DMA2_Stream4, ENABLE); // ADC: ADC_DeInit(); // turn ADC off ADC_CommonInitStruct.ADC_Mode =ADC_Mode_Independent; ADC_CommonInitStruct.ADC_Prescaler =ADC_Prescaler_Div4; ADC_CommonInitStruct.ADC_DMAAccessMode =ADC_DMAAccessMode_Disabled; ADC_CommonInitStruct.ADC_TwoSamplingDelay =ADC_TwoSamplingDelay_5Cycles; ADC_CommonInit(&ADC_CommonInitStruct); ADC_StructInit(&ADC_InitStruct); ADC_InitStruct.ADC_Resolution =ADC_Resolution_12b; ADC_InitStruct.ADC_ScanConvMode =ENABLE; ADC_InitStruct.ADC_ContinuousConvMode =ENABLE; ADC_InitStruct.ADC_DataAlign =ADC_DataAlign_Right;//Left; ADC_InitStruct.ADC_NbrOfConversion =12; ADC_Init(ADC1,&ADC_InitStruct); //----channels order ADC_RegularChannelConfig(ADC1, ADC_Channel_10, 1,ADC_SampleTime_480Cycles);// PC0 ADC_RegularChannelConfig(ADC1, ADC_Channel_11, 2,ADC_SampleTime_480Cycles);// PC1 ADC_RegularChannelConfig(ADC1, ADC_Channel_12, 3,ADC_SampleTime_480Cycles);// PC2 ADC_RegularChannelConfig(ADC1, ADC_Channel_13, 4,ADC_SampleTime_480Cycles);// PC3 ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 5,ADC_SampleTime_480Cycles);// PA0 ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 6,ADC_SampleTime_480Cycles);// PA1 ADC_RegularChannelConfig(ADC1, ADC_Channel_2, 7,ADC_SampleTime_480Cycles);// PA2 ADC_RegularChannelConfig(ADC1, ADC_Channel_3, 8,ADC_SampleTime_480Cycles);// PA3 ADC_RegularChannelConfig(ADC1, ADC_Channel_6, 9,ADC_SampleTime_480Cycles);// PA6 ADC_RegularChannelConfig(ADC1, ADC_Channel_7, 10,ADC_SampleTime_480Cycles);// PA7 ADC_RegularChannelConfig(ADC1, ADC_Channel_14,11,ADC_SampleTime_480Cycles);// PC4 ADC_RegularChannelConfig(ADC1, ADC_Channel_15,12,ADC_SampleTime_480Cycles);// PC5 // enable ADC and DMA: ADC_DMARequestAfterLastTransferCmd(ADC1, ENABLE); ADC_DMACmd(ADC1, ENABLE); //Enable ADC1 DMA ADC_Cmd(ADC1, ENABLE); //Enable ADC1 ADC_SoftwareStartConv(ADC1); // start ADC conversions } //----------------------------- Проц stm32f407, J-Link, Keil 4.23
|
|
|
|
Сообщений в этой теме
Allregia STM32F4 ADC DMA ? Jul 22 2012, 14:14 Allregia Ошибка была чисто механическая:
RCC_AHB1PeriphRe... Jul 23 2012, 07:27 ViKo Цитата(Allregia @ Jul 23 2012, 10:27) Оши... Jul 23 2012, 07:44  kan35 Цитата(ViKo @ Jul 23 2012, 11:44) А не на... Jul 23 2012, 08:02   ViKo Цитата(kan35 @ Jul 23 2012, 11:02) Вы про... Jul 23 2012, 08:11  Allregia Цитата(ViKo @ Jul 23 2012, 09:44) А не на... Jul 23 2012, 10:32 kan35 Allregia,
абсолютно правильный подход. Еще добавлю... Jul 23 2012, 10:42 ViKo Цитата(kan35 @ Jul 23 2012, 13:42) Allreg... Jul 23 2012, 11:15  Allregia Цитата(ViKo @ Jul 23 2012, 13:15) Так-так... Jul 23 2012, 11:51   ViKo Цитата(Allregia @ Jul 23 2012, 14:51) Мож... Jul 23 2012, 12:10    Allregia Цитата(ViKo @ Jul 23 2012, 14:10) А на эт... Jul 23 2012, 12:46     ViKo Цитата(Allregia @ Jul 23 2012, 15:46) Кон... Jul 23 2012, 12:58 kan35 Не преувеличивайте. Инициализация периферии занима... Jul 23 2012, 11:47 ViKo Цитата(kan35 @ Jul 23 2012, 14:47) за иде... Jul 23 2012, 11:49  Allregia Цитата(ViKo @ Jul 23 2012, 13:49) За нее.... Jul 23 2012, 12:34   ViKo Цитата(Allregia @ Jul 23 2012, 15:34) Сра... Jul 23 2012, 12:37 kan35 ViKo,
Оптимизация ради оптимизации приносит только... Jul 23 2012, 12:48 kan35 Это плюс несомненно.
А вообще, вы задавались вопро... Jul 23 2012, 13:30 ViKo Цитата(kan35 @ Jul 23 2012, 16:30) Это ко... Jul 23 2012, 19:38 AlexandrY Цитата(kan35 @ Jul 23 2012, 16:30) Это пл... Jul 23 2012, 20:04  VslavX Цитата(AlexandrY @ Jul 23 2012, 23:04) А ... Jul 24 2012, 03:50  kan35 Цитата(AlexandrY @ Jul 24 2012, 00:04) Дл... Jul 24 2012, 04:10   demiurg_spb Я использую библиотеки и могу сказать, что они сле... Jul 24 2012, 06:51 Сергей Борщ А почему все зациклились на инициализации? Разве б... Jul 24 2012, 09:48 demiurg_spb Цитата(Сергей Борщ @ Jul 24 2012, 13:48) ... Jul 24 2012, 16:16 Allregia Цитата(Сергей Борщ @ Jul 24 2012, 11:48) ... Jul 24 2012, 17:42  demiurg_spb Цитата(Allregia @ Jul 24 2012, 21:42) Код... Jul 24 2012, 17:47   _Артём_ Цитата(demiurg_spb @ Jul 24 2012, 20:47) ... Jul 24 2012, 18:51    demiurg_spb Тот кто привык щи лаптем хлебать того уже более пр... Jul 24 2012, 19:05     _Артём_ Цитата(demiurg_spb @ Jul 24 2012, 22:05) ... Jul 24 2012, 19:57      Allregia Цитата(_Артём_ @ Jul 24 2012, 21:57) Да к... Jul 25 2012, 05:24      demiurg_spb Цитата(_Артём_ @ Jul 24 2012, 23:57) Чем ... Jul 25 2012, 05:47       Allregia Цитата(demiurg_spb @ Jul 25 2012, 07:47) ... Jul 25 2012, 07:18        ViKo Цитата(Allregia @ Jul 25 2012, 10:18) Пом... Jul 25 2012, 07:30         Allregia Цитата(ViKo @ Jul 25 2012, 09:30) Но, вид... Jul 25 2012, 11:48          ViKo Цитата(Allregia @ Jul 25 2012, 14:48) 99.... Jul 25 2012, 11:57           Allregia Цитата(ViKo @ Jul 25 2012, 13:57) Верю. Д... Jul 25 2012, 14:46   Allregia Цитата(demiurg_spb @ Jul 24 2012, 19:47) ... Jul 24 2012, 19:42 kan35 ViKo,
никто не отрицает, что работа через библиоте... Jul 25 2012, 12:26 ViKo Цитата(kan35 @ Jul 25 2012, 15:26) никто ... Jul 25 2012, 12:50  kan35 Цитата(ViKo @ Jul 25 2012, 16:50) Еще нед... Jul 26 2012, 05:52   ViKo Цитата(kan35 @ Jul 26 2012, 08:52) Viko, ... Jul 26 2012, 07:58 kan35 То, что по DMA работа (пусть даже внешняя память--... Jul 26 2012, 08:36 ViKo Цитата(kan35 @ Jul 26 2012, 11:36) То, чт... Jul 26 2012, 08:45 kan35 Действитеьлно, флаг ловить лучше в прерывании. DMA... Jul 26 2012, 08:58 ViKo Цитата(kan35 @ Jul 26 2012, 11:58) Действ... Jul 26 2012, 10:41 kan35 В основной программе ждать семафора, в прерывании ... Jul 26 2012, 12:00 Allregia Вопрос немного в сторону, про М4 и настройки Кейла... Jul 26 2012, 20:29 ViKo На все ваши вопросы здесь уже были ответы. Поищите... Jul 31 2012, 09:35 Allregia Цитата(ViKo @ Jul 31 2012, 11:35) На все ... Aug 2 2012, 14:03 сарматъ помогите пожалуйста, пытаюсь запустить ацп вот так... Nov 19 2012, 05:34 сарматъ конкретно не работает непрерывное преобразование п... Nov 19 2012, 09:03 сарматъ все равно надо каждый раз делать
ADC1->CR2... Nov 19 2012, 12:40 Flexz Перепишите на обычные (regular) каналы, injected н... Nov 19 2012, 15:28 сарматъ упс... а в f100 работали...
спасибо Nov 19 2012, 15:37 Haamu Необходимо измерить сигнал с нескольких каналов по... Jan 9 2014, 08:17
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|