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

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 пользователей онлайн

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

    • Почитай описание функции, к тому, что там написано я не знаю, что еще добавить
    • Очередной шаг. Т.к. 60Вт (12В 5А) пока хватает собираю в кучу то, что есть. На фото: осциллограммы - уровни включения (3,52В) и отключения  (0,86В) компаратора; вид 3Д модели и фото того, что собрано (пока без вентилятора, силовых клемм, разъёма питания).  
    • Поникли "басы" левого канала, заскакали источники звука между колонками - пора менять регуляторы. А они там системы Сп3-33 и не хотелось бы менять на дискретный регулятор (читал, есть тут такая тема  - идея хорошая, но...),  или колхозить что-то иное. Итак, есть усилитель Радиотехника У-101, разве что УНЧ-П в нём как из У-7101, поэтому схемы будут от него. Обратите внимание - в верхнем правом углу схемы УНЧ-П обозначены VD1-VD2, как стабилитроны Д814Д1, но на схеме они были обозначены как резисторы  R31-R32, по 680 Ом, а на самом  деле там с завода стоят конденсаторы - см. рисунок (исправление моё).  Я проверял - в реальности есть все три схемы. Но не это главное.  Вопрос: в УНЧ-П стоят потенциометры номиналом 470 Ком (только баланс с отводом - 100 Ком)... Что будет с сигналом, если все регуляторы поставить по 100 Ком? На входе - 175 мв (условно), с выходов коммутаторов входа, на микросхемах К190КТ2П,  с выходом на 50мА (max) и нагрузка в 100 Ком им навредить не должна. А вот что с цепями всякой НЧ коррекции, для тонкомпенсации, и падением напряжения входа? Ну, какбе, 470 и 100 ком - разница есть... А с другой стороны - 100 ком это тоже огромная величина, для такого рода сигналов. Кто менял, что скажете? Просто цена дискретного около 300р, а Сп3-33 - от 10 рублей, для баланса и тембра, и  150-200 для громкости... Но на 100Ком. И в догонку - цена аутентичного регулятора Сп3-33 на 470Ком с "кривой" для громкости - за 500 р... И больше. Ваши мысли? Резисторы уже выпаял, если что       
    • @korsaj У меня вариантов вообще не осталось. Всё что я нашёл уже перепробовал, но ничего не заработало. И как с помощью данной функции перевести число из hex в dec. Числа от плеера приходят в таком формате 00000C2E.
    • ссылку дайте, есть подозрение, что это не электролиты интересно, почему?
    • И все же, вы хоть что-то собираетесь делать кроме ждать?
×
×
  • Создать...