| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| STM32f4-discovery http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=14208 |
Страница 1 от 4 |
| Автор: | bobi13 [ Съб Дек 05, 2015 9:12 am ] | |||||||||
| Заглавие: | STM32f4-discovery | |||||||||
Здравейте, Искам да си направя генератор на три сигнала - полусинусиодален, триъгълен и правоъгълен ползвайки вътрешния ЦАП на development board STM32f4-discovery. Искам да променям честотата и амплитудата на сигналите. Проблемът, е че немога да разбера дали е възможно да променям опорното напрежение между 100mV - 2V със стъпка 100mV и ако е възможно как става. В момента съм пуснал само триъгълния сигнал, който се генерира вътрешно от контролера и на него се опитах да му променям амплитудата чрез натискане на бутон, но не се получи нищо.
|
||||||||||
| Автор: | ToHu [ Съб Дек 05, 2015 1:07 pm ] |
| Заглавие: | Re: STM32f4-discovery |
Че може може, през ЦАП-а може всякакъв сигнал да го мениш както искаш със стъпката на ЦАП-а но друго не мога да ти кажа, идея си нямам от тоя проц какъв му е цапа, как се конфигурира и нямам време да го разследвам, други колеги със сигурност ще помогнат. |
|
| Автор: | miro_atc [ Съб Дек 05, 2015 2:47 pm ] | ||||||||||||||||||
| Заглавие: | Re: STM32f4-discovery | ||||||||||||||||||
По принцип DAC работи с Vref, който може да се задава от външен източник, обаче ти едва ли имаш такъв, а и да имаш може да се променя само в тесни граници. За подробности референс мануала и чаршафа, но с една дума не е добра идея. На генератора на триъгълното може да задаваш долната и горната точка, така че това е малко по-добър вариант. Но за другите форми няма скалиране до колкото помня, така че каквото зададеш това излиза като амплитуда. Ако не ти харесва амплитудата - не я задавай такава
Не се отчайвай, нормално е Бих те посъветвал да започнеш с лек прочит на перифериите, да се запознаеш с възможностите им и след това да прецениш как да ги ползваш. Ако ще правиш различни форми, може би най-добре да не ползваш триъгълника (щото е само триъгълник), а всичи форми да си ги подготвиш в различни таблички. Така само с избор на табличка ще определяш формата. Ако искаш скалиране/офсет може от текущата табличка да си преизчислиш и да получиш офсетнатата и скалирана форма в нова табличка. След това преценяваш как ще наливаш тая табличка в DAC-a. Вариантите са софтуерно без прекъсвания, т.е. нещо като DDS генератор. Другия вариант е пак софтуерно, но с прекъсвания примерно на таймерче. И последния вариант е изцяло хардуерен - пускаш едно таймерче, което ти определя стъпката в рамките на периода (от там и честотата). Това таймерче трябва да генерира евенти, които пък задействат DMA, което път от своя страна копва една стойност от последната табличка към DAC-a... Не е толкова сложно... просто документациите не са удобни, но ако ги прочетеш няколко пъти ще ти светне |
|||||||||||||||||||
| Автор: | bobi13 [ Съб Дек 05, 2015 7:12 pm ] | |||||||||
| Заглавие: | Re: STM32f4-discovery | |||||||||
Това което разбрах от datasheet-a, е че може да го настроиш от 0 до Vref, но още не съм рабрал как и дали въобще е възможно само с вътрешния източник ( сега гледам борда дали е възможно да сложа външен източник ). Аз искам да управлявам амплитудата и честота чрез тъчскрийн ( бутони ) и в краен случай ще сложа външен ЦАП и чрез I2C ще го управлявам, поне това което съм чел досега, не съм пускал външен ЦАП, така че ако съм в грешка ме поправете. За формите в таблицата ми е ясно, аз вече съм пуснал една такава, но в библиотеката никъде не виждам да управлявам амплитуда, на осцилоскопа виждам че е колкото Vref по подразбиране. |
||||||||||
| Автор: | ToHu [ Съб Дек 05, 2015 7:30 pm ] |
| Заглавие: | Re: STM32f4-discovery |
Без да засягаме изобщо самият процесор и конкретният DAC като че ли малко теорията как това работи ти се губи. DAC не прави нищо друго освен да обърне това което му подаваш като число в напрежение или ток. Да речем имаш 8 битов DAC с опорно напрежение 2.54 V, в този случай ако му подадеш число 100, на изхода му ще имаш точно 1 V, а ако му подадеш 1 ще имаш 10 mV, т.е. Vref/2^8 , ако е 10 битов ще е Vref/2^10 и т.н. От тук това което трябва да правиш е дамениш стойността на DAC в зависимост от формата на сигнала който искаш да имаш, разбира се и с нужната дискретност, т.е. на колко да ти е разделен сигнала. Примерно ако си решил да апроксимираш синусуида то тя ще се получи на стъпълца, като колкото по точно искаш да я апроксимираш, толков аповече стъпълца ти трябват. Тук идва лимитацията от самият DAC защото времето му за установяване не е безкрайно малко, примерно можеш да го зареждаш 1.000.000 пъти в секунда. Така ако искаш да имаш синусуида със 100 стъпълца, максималната ти честота която можеш да изкараш е 1000000/100 = 10000 или 10 kHz. от тук нататък самият ти софт трябва да се погрижи през точните интервали от време да зарежда DAC със съответната стойност. Та така най-общо работи DAC, това е съвсем опростено, има един куп неща свързани както с линейността, така и с точността и с това колко стъпълца да имаш, също така как може ефективно да се генерират нужните данни, и къде и как може да са ти от полза разните екстри които предлага съответното контролерче. |
|
| Автор: | bobi13 [ Съб Дек 05, 2015 8:00 pm ] |
| Заглавие: | Re: STM32f4-discovery |
Благодаря за обяснението |
|
| Автор: | Цецо [ Съб Дек 05, 2015 9:50 pm ] |
| Заглавие: | Re: STM32f4-discovery |
DAC-a на STM-a работи като DAC на всеки друг процесор. Vref ти го подаваш отвън или както е в случая с дискавърито Vref=VCC. И не може да скалира. Ако искаш да правиш променлива амплитуда на изхода на DAC-a единствения ти вариант е да променяш старшите битове на данните които подаваш (реципрочно да си намалиш резолюцията). Ако можеш да варираш с хардуер - вариант е да вържеш отвън един цифров потенциометър и да си направиш 256 или колкокото там искаш "степени на усилването", което точно за сигнал генератор е по-добро решение според мен. Така амплитудата ти става независимо регулируема и си имаш пълната резолюция на DAC-a. |
|
| Автор: | 4040 [ Нед Дек 06, 2015 1:06 pm ] |
| Заглавие: | Re: STM32f4-discovery |
На Vref-а може да подадеш DC от PWM . Така формата си я правиш с ЦАП-а, а амплитудата с ПВМ-а. Ако буташ амплитудата с ЦАП-а, ще ти се влошава формата. |
|
| Автор: | bobi13 [ Нед Дек 06, 2015 1:15 pm ] | |||||||||
| Заглавие: | Re: STM32f4-discovery | |||||||||
Moжеш ли да го обясниш малко по- подробно, че немога да рзбера как чрез PWM ще променям амплитудата на сигнала. Пак разгледах схемата на борда и не виждам Vref да е изведен на пин, той е директно закачен за Vdd. |
||||||||||
| Автор: | 4040 [ Нед Дек 06, 2015 1:22 pm ] |
| Заглавие: | Re: STM32f4-discovery |
Важи по принцип , конкретния проц не го знам ,но едва ли е без ПВМ. Пина от ПВМ-а го прекарваш през 2 RC-филтъра и го подаваш на Vref. Обикновено има опция опорното на ЦАП-а да идва от външен пин, виж си даташита. Другото е директно да променяш Vdd в някакви граници, ама това е доста извратено. |
|
| Автор: | bobi13 [ Нед Дек 06, 2015 1:34 pm ] |
| Заглавие: | Re: STM32f4-discovery |
Процесора си има пин за PWM, но проблема, e че на development board-a пина който е за Vref на ЦАП-а е директно закачен на Vdd и неможе да се променя. |
|
| Автор: | miro_atc [ Нед Дек 06, 2015 1:45 pm ] |
| Заглавие: | Re: STM32f4-discovery |
Vref си има изисквания като долната граница мисля беше 1.8V. Проверете чаршафите, от самото начало казах че това не е добра идея. |
|
| Автор: | bobi13 [ Нед Дек 06, 2015 1:52 pm ] | |||||||||
| Заглавие: | Re: STM32f4-discovery | |||||||||
Долната граница е 1,8V. |
||||||||||
| Автор: | 4040 [ Нед Дек 06, 2015 1:54 pm ] |
| Заглавие: | Re: STM32f4-discovery |
Някои ЦАП-ове са си дефакто цифрови потенциометри и позволяват всякакви напрежения за Vref в границите до Vdd. Случая явно не е такъв. Тогава остава само цифрово скалиране - сиреч повече сметки и по-начупена форма. |
|
| Автор: | Цецо [ Нед Дек 06, 2015 4:10 pm ] |
| Заглавие: | Re: STM32f4-discovery |
Стига сте обсъждали Vref, конкретния процесор няма такава екстра. Тоест има, ама е забита в чипа на VDD |
|
| Страница 1 от 4 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|