| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| Работа с ADC канали в STM32F4xx http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=19278 |
Страница 1 от 2 |
| Автор: | RM [ Сря Сеп 25, 2024 8:33 pm ] |
| Заглавие: | Работа с ADC канали в STM32F4xx |
Имам конфигурирани 4 канала в ADC-то. Каналите са sConfig.Channel=ADC0-4 sConfig.Rank =Rank1-4 и sConfig.SamplingTime Линкнал съм ги през DMA към буфер [12000] по 2 баита(12 бит адц) и 4 канала ... Работи както трябва. За нов канал имат HAL_ADC_ConfigChannel(.... Но когато искам да намаля каналите, преиницялизирам наново ADC-то с клонинг на MX_ADC1_Init(void)... Друг начин не намерих!!! Въпроса ми де ... има ли друг начин? времето смятам по датата. ADCCLK = 42 MHz and a sampling time of 3 cycles: Tconv = 3 + 12.5 = 15,5 cycles = 0.369 µs μs Мисля после да вдигна APB2 на 84МHz. |
|
| Автор: | VPavlov [ Чет Сеп 26, 2024 9:08 am ] |
| Заглавие: | Re: Работа с ADC канали в STM32F4xx |
Здрасти, имам съвсем малко опит, но все пак ще споделя: При инициализацията се извършват множество конфигурации и чак в края й се активира АДЦ и ДМА потокът. Тоест АДЦ и ДМА не работят докато биват конфигурирани, така че ако се интересуваш за друг начин (освен тяхната повторна инициализация) мисля че е малко вероятно да има. Иначе редът на конфигурация е следния: Пуска се сигнал до портовете на пиновете, поставят се съответните пинове в "analog mode". Пуска се сигнал до АДЦ и се конфигурира броят на преобразуванията. После конфигурираме последователността на изпълнение, mod на работа и работа с ДМА. След това се конфигурира ДМА и на края се пускат и двете да работят. Ако те интересува по-подробно ще ти опиша кои регистри се ползват. Циклите броиш много точно с DWT. Ако търсиш да става по-бързо. Би могъл да преконфигурираш само регистрите, които се отнасят за броя на конверсии и редът на отчитане, след като си инициализирал един път АДЦ-то. Отново ще трябва да спреш и пуснеш АДЦ и ДМА, както и да промениш броя на каналите. |
|
| Автор: | RM [ Чет Сеп 26, 2024 9:51 am ] |
| Заглавие: | Re: Работа с ADC канали в STM32F4xx |
Трябва да почета по подробно документите. Има правила ... В биб. има и функций за Init и DeInit ... Ще опитам първо да променя само броя на каналите. |
|
| Автор: | VPavlov [ Чет Сеп 26, 2024 10:10 am ] |
| Заглавие: | Re: Работа с ADC канали в STM32F4xx |
Просто ги спираш, преправяш някоя настройка и пускаш. Ако го деинициализираш сигурно ще върне всички ползвани регистри в стойностите им по подразбиране, което няма да ти спести цикли, тъй като отново ще трябва да се направят всички конфигурации. ADC то се пуска (enable) от ADC1->CR2 първия бит, и стартира с 30тия от същия регистър. За съжаление нямам опит с HAL. |
|
| Автор: | RM [ Нед Окт 06, 2024 7:56 am ] | |||||||||
| Заглавие: | Re: Работа с ADC канали в STM32F4xx | |||||||||
Трябва ми да изследвам един синусоидален сигнал, който отива на майка си в г--а и се връща. Генерирам го с AD9834. Имам всички сметки които трябва да направя. Поне така си мисля. Нещо такова.
Най-вероятно ще махна резултатите със запетайките където е възможно. Нямам си на идея как да извлеча от буфера шума насложен върху синусоидата. Шума не е симетрично насложен върху синусоидалния сигнал. Имам някакви фантазии, да изчисля допълнително спрямо реалния период на сигнала и по реалното семплиране на всяка точка от предполагаемата вярна синусоида и да сравнявам със реалната от ADC-то. |
||||||||||
| Автор: | VPavlov [ Нед Окт 06, 2024 10:28 pm ] |
| Заглавие: | Re: Работа с ADC канали в STM32F4xx |
Разбирам си уловил сигналът, изчислил си му параметри, филтрирал си шума, така че вече разполагаш с търсената синусоида и сега се интересуваш от амплитудата на шума. Не разбирам какво правят (calculate_rms, и calculate_snr). Ако те разбирам правилно, то можеш да извадиш замерената моментна стойност на сензора, от филтрираната амплитуда. Ще се получи положително или отрицателно число, в зависимост от коя страна е шумът. След като е несиметрично разположен, можеш да ги третираш отделно и да сметнеш средно аритметично за амплитудата на шума. |
|
| Автор: | TheWizard [ Нед Окт 06, 2024 10:56 pm ] |
| Заглавие: | Re: Работа с ADC канали в STM32F4xx |
пускаш сигнал мериш амплитудата спираш сигнала мериш шума ... общо взето с 12 битово ADC нищо няма да премериш SNR = 10 log (S ÷ N) за напрежение. за мощност е 20 log... теоретично 72 db е без да бараш усилване или опорно |
|
| Автор: | RM [ Сря Окт 09, 2024 4:38 pm ] | |||||||||
| Заглавие: | Re: Работа с ADC канали в STM32F4xx | |||||||||
Като за начало, без да съм тествал е това ... разделям ги на по малки стъпки за да мога да дебъгвам. Иначе ми е трудно. Това долното не знам дали изобщо ще работи.
не съм много сигурен но ще опитам да мине буфера през медианен филтър или LP филтър |
||||||||||
| Автор: | TheWizard [ Сря Окт 09, 2024 4:49 pm ] | |||||||||
| Заглавие: | Re: Работа с ADC канали в STM32F4xx | |||||||||
ако не е - няма да се научиш какви точности гониш с това "чудо" |
||||||||||
| Автор: | RM [ Сря Окт 09, 2024 5:15 pm ] |
| Заглавие: | Re: Работа с ADC канали в STM32F4xx |
Сега като изпратя чиста синусоида 70000Hz от изхода на DDS (само единия изход, сигнала е от 2 пина за диференциален инструментален операционен) и го прекарам през 12 битовия ADC1 през DMA канал с най-бързото семплиране, данните са направо отчайващо лоши. Трябва ми да изследвам един датчик. С мерене с обикновени уреди не става. Трябва да хвана шумове и изкривявания. Сега не искам да хардуерно да правя нищо за подобряване на сигнала. Лошия сигнал на този етап ми е добре дошъл. "ако не е - няма да се научиш" Нямам никакви напъни да се уча защото не ставам за това, но понякога се налага. Е това с 20 log10 дали не съм го объркал ??? Отношението на амплитуди наистина ли е така. |
|
| Автор: | ToHu [ Сря Окт 09, 2024 5:33 pm ] |
| Заглавие: | Re: Работа с ADC канали в STM32F4xx |
Дай при ер за отчайващо лоши, дай картинка на синусуида възстановена само по точки, без фурие, или просто файл с 300-400 семпъла. |
|
| Автор: | TheWizard [ Сря Окт 09, 2024 5:35 pm ] |
| Заглавие: | Re: Работа с ADC канали в STM32F4xx |
70000Hz тактова или синусоида |
|
| Автор: | itso.t [ Сря Окт 09, 2024 6:16 pm ] |
| Заглавие: | Re: Работа с ADC канали в STM32F4xx |
Да не се бъркам в проекта, но на пазара отдавна има звукови карти семплиращи на 384 или 768 кила, 24 бита. Няма да се учудя ако има и с 32 бита, най-вече "на хартия". Ако картата е по-лачена, има балансни (диференциални) входове и изходи. Софтуери за измерване на шумове, изкривявания и куп други параметри също не е като да няма. Че и добре направени, безплатни... Отделно има анализатори за аудио работещи до 250 кила или мегахерц, но за тях трябва малко по-сериозен бюджет. |
|
| Автор: | RM [ Сря Окт 09, 2024 7:03 pm ] |
| Заглавие: | Re: Работа с ADC канали в STM32F4xx |
примерно при 105kHz шумовете са около 5-10% от сигнала. Изобразявам синусоидата на цветно дисплейче 3,2 инчово ILI9341, само информативно. Сигнала ми идва от AD9834. Искам да хвана отделно от генератора, въпреки че знам винаги каква честота пускам- честотата, дефазирането, амплитудата и по натам ще сложа серийно и активно за да хвана и реактивното от импеданса . Трябва ми възможно най верен сигнал поне от 2 честоти, за да хвана достатъчно точно шумовете и да сметна и индуктивността. Сега съм още в началото. Сега на точно 105kHz , 70kHz ..35kHz изчислява честотата със 100% точност. Но чета ADC-то непрекъснато, хващам буфера в прекъсването при изчетени всички зададени броя семпли. Ще преправя четенето от адц-то да бъде само когато другата периферия мълчи - USB , SPI и предполагам всичко ще си дойде на място. |
|
| Автор: | TheWizard [ Сря Окт 09, 2024 7:28 pm ] |
| Заглавие: | Re: Работа с ADC канали в STM32F4xx |
шума ли ще мериш или изкривяването на сигнала |
|
| Страница 1 от 2 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|