Перейти к содержанию

stm32f4+adc+dma+tim


Гость Руслан

Рекомендуемые сообщения

Может кто-нибудь помочь разобраться или поделиться кодом (если кто уже писал) для работы adc+dma+tim? Я использую камень stm32f405vgt6. И не как не могу разобраться как запустить adc+dma+tim. Программа попадает какое-то время в прерывания от dma, а потом перестаёт туда попадать, то всё работает нормально но с ацп идут неправильные данные (я подаю с генератора синус частотой 400Гц)

				//Enable ADC2 clock
				RCC->APB2ENR    |= RCC_APB2ENR_ADC1EN;
				__NOP();
				GPIOA->MODER    |= GPIO_MODER_MODER1;        //ADC1 CH1 PA1				
				
				ADC2->CR2 = 0;	//off ADC
				
        ADC1->CR1       |=ADC_CR1_SCAN;               // Scan mode!
				ADC1->CR2       |=ADC_CR2_EXTEN_0;            //01: Trigger detection on the rising edge!
        ADC1->CR2       |=(ADC_CR2_EXTSEL_3);        	//tim 3 (TRGO)!
				ADC1->CR2       |= ADC_CR2_EOCS;            	//razreshem prerivanie!
				ADC1->CR2       |=ADC_CR2_DDS;                //DMA disable selection (for single ADC mode)!
				ADC1->CR2       |=ADC_CR2_DMA;                //razreshem rabotu DMA!	
        ADC1->SQR3       =1;                          //PA1
        ADC1->CR2       |=ADC_CR2_ADON;               //vkluchet preobrazovanie
				
				//Enable DMA2 clock
				RCC->AHB1ENR    |= RCC_AHB1ENR_DMA2EN;
				__NOP();
				
				//Disable DMA before enable
				DMA2_Stream2->CR = 0;
				while (DMA2_Stream2->CR & DMA_SxCR_EN) continue;
				
				//DMA low interrupt flag clear register
				DMA2->LIFCR = 0x0F7D0F7D;
				//DMA high interrupt flag clear register
				DMA2->HIFCR = 0x0F7D0F7D;
				
				//DMA2_Stream4->CR|= DMA_SxCR_CHSEL;           // 001: channel 1 selected
        DMA2_Stream4->CR|= DMA_SxCR_PL;                // 11: Very high prioritet
        DMA2_Stream4->CR|= DMA_SxCR_MSIZE_0;       		 // 16 bit
        DMA2_Stream4->CR|= DMA_SxCR_PSIZE_0;        	 // 16 bit
				DMA2_Stream4->CR|= DMA_SxCR_MINC;           	 // inkrement adresa
				DMA2_Stream4->CR|= DMA_SxCR_CIRC;            	 // neprerivni rejim
				DMA2_Stream4->CR|= DMA_SxCR_TCIE;            	 // Transfer complete interrupt enable
				DMA2_Stream4->CR&=~ DMA_SxCR_DIR;            	 // 01: peripheral-to-Memory
				DMA2_Stream4->NDTR=1;                       	 // dlinna
        DMA2_Stream4->PAR= (uint32_t)&ADC1->DR;     
        DMA2_Stream4->M0AR=(uint32_t)&BUFF;       		 // massiv
				DMA2_Stream4->FCR = 3;												 //Full FIFO
				DMA2_Stream4->CR|= DMA_SxCR_EN;                // vkluchit peredachu
				NVIC_SetPriority(DMA2_Stream4_IRQn,5);
        NVIC_EnableIRQ(DMA2_Stream4_IRQn);
        

        RCC->APB1ENR    |= RCC_APB1ENR_TIM3EN;       
        TIM3->PSC        = 84-1;                     // PSC
        TIM3->ARR        = 50-1;                  	 // ARR
				TIM3->CR1       |= TIM_CR1_URS;							 //Only counter overflow/underflow generates an update interrupt or DMA request if enabled
        TIM3->CR2       |= TIM_CR2_MMS_1;            // output (TRGO)
				//TIM3->DIER      |= TIM_DIER_UIE;           //prerivanie po perepolneniu
        //TIM3->DIER      |= TIM_DIER_UDE;
        TIM3->CR1       |= TIM_CR1_CEN;              //zapusk scheta
				//NVIC_EnableIRQ(TIM3_IRQn); 
				//NVIC_SetPriority(TIM3_IRQn,16);

 

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

4 часа назад, Гость Руслан сказал:

как запустить adc+dma+tim.

Сначала надо запустить adc+tim то есть без DMA, если даже это не получится то зачем так себя перегружать!

Можно сделать все! Но чем больше можно, тем больше нельзя!

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
  • Сообщения

    • И что тут я должен сравнивать ? На последнем фото моя плата, сравните с видеороликом. В однофазной мотор подключается непосредственно к плате, в трёхфазной версии мотор подключается через контактор, а реле контактора подключаются к out motor (на L/S и N/R)  Если вы не верите, то я могу запустить плату и сделать фото загрузки блока, где на экране будет видна модель устройства... Или вы будете утверждать ещё и факт перепрошивки ?
    • Собственно вопрос - как увеличить выходной ток заряда? Вот в этой схеме какой именно резистор нужно подобрать для изменения тока заряда?  
    • @Ашот Чобанян Мда.... 1. Вы серьезно считаете что все частотники одинаковые и все вам отвечающие обладают экстрасенсорными способностями что бы узнать их модели через экран? 2. У частотников (ВНЕЗАПНО!!!) есть в комплекте такая вещь как инструкция. Говорят что в них открывают тайны их монтажа и подключения. 3. Если вы не смогли сами, поищите в ближнем своем окружении человека, который сможет. Есть большая вероятность что вам это будет стоить дешевле, чем несколько поломанных частотников, или поломанное оборудование.
    • Там же написано, при токе 1 ампер и 7 ампер. Практически, на токах до пары ампер 90 - 120
    • Вроде оригинал на вид но я не эксперт в распознании оригиналов и подделок,ещё не встречал что бы на СССР микросхемы поделки были современные  Можете этот пост разместить в тему где распознают оригинал запчасти от подделок,вроде называеться "Подделки на которые нарвались",там быстрее ответят 
    • А слушать ты  предлагаешь тоже через симулятор? Симулятор, дружок, не инструмент и даже не прибор для измерения чего-либо. Симулятор - это всего лишь помощник при/для выявлении кривизны схем, при расчёте их параметров и предположительных желаемых характеристик, и только. Окончательный результат, как и вывод - удачной ли получилась схема, можно сделать только после прослушивания в сравнении с референсным изделием, а также при изучении реально полученных при измерении по приборам характеристик исследуемого прибора.  Кстати, по поводу ОУ.на одном из аудио-сайтов некто Бока, многим известный Александр Бокарёв, дал определение оперу 4558, как слега улучшенной версии небезызвестного LM358. Что он этим хотел сказать утверждать не могу, не берусь, так как сам эти два опера в лоб не сравнивал не отслушивал. Однако учитывая то , что у 358-го ВК работает в режиме, близком к В-классу, могу предположить, что при усилении слабых сигналов и у 4558 будет повышенный уровень гармоник. В общем, как мне думается, нужно всё собранное измерять и отслушивать.  
    • Какой нормальный коэффициент усиления считается для 2sc5200? В даташите почему то 2 строки даны, не понял на что ориентироваться  
×
×
  • Создать...