Отговори на тема  [ 56 мнения ]  Отиди на страница 1, 2, 3, 4  Следваща
Проблем с АЦП на STM32 Cortex M3 
Автор Съобщение
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Май 27, 2006 12:37 pm
Мнения: 647
Местоположение: с. Згалево
Мнение Проблем с АЦП на STM32 Cortex M3
Здравейте.
Мъча се вече трети или четвърти ден с това и няма оправия!
Проблема е следния.
Имам вече доста напреднала програма за конкретно устройство - в което ми се налага да добавя АЦП. Просто мерене на един единствен канал. Нищо особено. Оказа се обаче, че имам голям проблем.
Процесора е STM32F103RBT6.
АЦП-то, което е по принцип 12 битово, при тоя звяр има нужда от калибрация след power on.
От тук идва и проблема.
Само да уточня. Меря външен пин и той е вързан на маса през 2.2к, което е достатъчно за входно съпротивление на АЦП-то.
Така - ето проблема:
- При пускане или рестарт на устройството - разбирай преминаване през калибрация - някой път вместо да показва 0 почва да показва 38-40 - и резултата играе яко. При това положение се разиграват и всички други канали - ако ползвам и такива. Ако калибрацията мине успешно - след това вече резултата е какъвто очаквам и мърда най-много с 1-2 бита, което за това АЦП може да се приеме за нормално, защото при тоя корпус, референса на АЦП-то е вързан направо за аналоговото захранване и го няма изведен на отделен пин. Аналоговото захранване пък е свързано през бобинка само към дигиталното и от там може да се очаква някое и друго смущение...
Какво съм проверил - тоест от какво не е проблема.
- захранванията са ми стъбилни - проверено със скоп.
- клока на АЦПто е в рамките 72/6 = 12мХз, което е в рамките 0.6-14мХз.
- промяна във времената за конвертиране - все тая.
- инициализацията е по книга - в много различни примери е точно така дадена.
- пробвано е инициализацията да се мести на различни места - преди включване на някои вътрешни модули - не помага.
- АЦП-то има вграден референсен източник, който може да се мери на вътрешен канал. Ако меря него вместо външен пин - същите признаци.
- Четенето от АЦП-то, с полиране, с прекъсване, с ДМА - никаква промяна.
- още много проби дето ми идваха на ум - без промяна.

Какви са ми съмненията:
Проблема сякаш не е от към хардуер - имам в предвид платки захранвания и т.н., защото щом веднъж калибрацията мине добре - после няма проблеми. Явно нещо става с калибрацията - обаче какво - идея си нямам вече.
За дебъгер - късно е вече. Устройството е почти готово - пиновете за дебъг са заети с друго.
Имам съмнения някакви в натвореното от компилатора - обаче всеки път когато се стигне да мисля така - все аз излизам кривия...

Та някой сблъсквал ли се е с такъв проблем с АДЦ-то на тоя вид процесори или подобни?
Просто съм учуден, че тук срещнах проблем - защото останалата част от програмата е с много-много по-голяма сложност - а там не срещнах никъде някакви особени проблеми...


Вто Фев 23, 2010 11:39 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение 
Конкретно с ST нямам никакъв опит и изобщо не съм запознат...

Но от опита ми с другите АРМ-чета всеки втори чип има проблем с ресета, особено ако пък има и дебъгер (макар че ти казваш че нямаш).

Тъй че на твое място бих сложил още един ресет - виж App. Int & Reset Control Reg. Пробвай да ресетнеш софтуерно, все пак при powerup някое от напреженията може да изостава или да не нараства достатъчно бързо и нещо да се латчва не както трябва...


Вто Фев 23, 2010 11:57 pm
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Май 27, 2006 12:37 pm
Мнения: 647
Местоположение: с. Згалево
Мнение 
Имаш в предвид ресет на целия чип - не на АЦП-то самo?
Може да има някаква връзка с лош ресет - защото имам боотлоадер и при всяко пускане първо пали той - след това отива в главната програма и може да има някаква омазване - което до момента да не се е проявило...
Какво е "App. Int & Reset Control Reg", че нещо не стоплям? :?


Сря Фев 24, 2010 9:37 am
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение 
Ами аз ползвам АЦП-то и то точно на осакатения чип, дето референса е на захранване.

Честно казано никога не съм имал проблем. Пускам си калибрацията отначало и даже не чета резултата след нея. После АЦП-то ми се върти автоматично през таймерите, при това ползвам и нормални и инжектирани канали, прекъсване, че май и DMA. И аналоговото куче и то е включено. Въобще почти всичко дето се сещам е пуснато около АЦП-то. И не съм забелязал никакви проблеми. Ако искаш да ти постна инициализиращия код да видиш да не бъркаш нещо в последователността?

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.


Сря Фев 24, 2010 9:49 am
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение 
Значи кортекса е с уникален ресет. В смисъл всеки друг контролер може да го "рестартираш" като му инициализираш регистрите с ресет стойностите. При кортекса това не е достатъчно, защото има вътрешни състояния на ядрото, които не са достъпни чрез регистри. Примерно стека за текущите ексепшъни. Така ако от ексепшън рестартираш и отидеш на ресет вектора някои ексепшъни като PendSV няма да работят, а ако извикаш други като SVCall ще получиш hard fault.
Та затова в NVIC има специален регистър, чрез който ресетваш ядрото и/или периферии.... Намира се на адрес 0xE000ED0C и го има описан в CortexM3_TRM

Това е единствения начин за ресет, който съм открил... Лошото е, че и при мен (с Луминари) понякога ресета не минава като хората, но не ми работи дебъга само като хората. И не се оправя дори с този регистър, само с истински ресет. Не знам моя проблем може и да не е от чипа от емулатора... ще открия някой ден причината надявам се ;-)


Сря Фев 24, 2010 10:12 am
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Май 27, 2006 12:37 pm
Мнения: 647
Местоположение: с. Згалево
Мнение 
Ами няма да е лошо да видя код - въпреки че предполагам, че и моя ще е верен.
Нещо ме мъчи от вътре, че това има нещо общо с вътрешното подравняването на масиви и структори. Уж може да подравнява и на по-малко - ама не винаги се справя добре сякаш...

Има и една друга "малка" странност.
Имам една картинка дето се рисува по дисплея - и то доста след като е минала калибрацията на АЦП-то.
Въпреки това - ако я рисувам - процента на калпавите инициализации на АЦП-то става поне 3 пъти по голяма от ако я прескоча. Проблема не е в самото рисуване, щото някой път наистина става. Май на калпав ресет ще отидат нещата - ама как ще го изловя без дебъгер...
Ще се правят капанчета явно - додето излезе... :D


Последна промяна juzisound на Сря Фев 24, 2010 10:53 am, променена общо 1 път



Сря Фев 24, 2010 10:13 am
Профил WWW
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Чет Окт 06, 2005 2:06 pm
Мнения: 194
Местоположение: Sofia
Мнение 
Пускал съм АЦП-то на STM32F103C6T6 и не съм забелязал никакви проблеми. Референса също е на захранването. Единствено на платката имам ресет чип на 3V, а захранването е 3.3V. Забелязъл съм само че показанията се променят с два три отчета в зависимост от това дали след стартиране на меренето, което е по няколко канала с DMA, спирам процесора или той работи по време на меренето. Стабилизатора храни само процесора и явно промяната на неговата консумация, променя захранването и от там референса в тези граници. Но аз изчислявам входните спрямо измереното вътрешно опорно и резултата е постоянен. За това виж докато трае калибрацията, да нямаш много големи промени в консумацията от други периферни схеми ,които още не са се установили, и от там да ти се променя напрежението.


Сря Фев 24, 2010 10:50 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение 
Ето го.


Прикачени файлове:
hardware.c [18.71 KiB]
274 пъти

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.
Сря Фев 24, 2010 12:19 pm
Профил ICQ
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Май 27, 2006 12:37 pm
Мнения: 647
Местоположение: с. Згалево
Мнение 
Благодаря!
Що се отнася до АЦП-то - същото е. Явно не е от това...


Сря Фев 24, 2010 12:44 pm
Профил WWW
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Май 27, 2006 12:37 pm
Мнения: 647
Местоположение: с. Згалево
Мнение 
Все още не се оправя това АЦП. Вече почвам да си мисля, че проблема е или в самия процесор - или в развойната платка "ET-STM32 Stamp", понеже и друг колега се оплаква от същото...

Цецо!
Казваш, че даже след калибрацията не четеш резултата от нея. Какъв е смисъла да се чете - щото аз не съм разбрал до сега? Пропуснал ли съм нещо?

Минава ми и друга идея.
Да пусна АДЦ1 и 2 едновременно - като единия чете само референсния източник - а другия аналоговия канал.
Решавам си колко трябва да дава референсния източник - и АКО смущенията са еднакви и за двата канала - ДАНО ДА Е ТАКА - то трябва да имам разлика и в референсния източник. Тази разлика си ползвам за компенсация в измерването на другия канал на и то при всяко измерване.
Лошото е, че днес имам друга задача - и няма да мога да пробвам - а така ме мъчи това...
Как ви се струва идеята?


Чет Фев 25, 2010 11:49 am
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Сеп 15, 2009 10:44 am
Мнения: 1034
Мнение 
Какво подаваш към аналоговите входове? Има ли вероятност в определен момент напрежението на някой от входовете, (независимо кой) да надхвърля захранването - включително преди и по време на подаване на захранването на чипа?


Чет Фев 25, 2010 12:21 pm
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Май 27, 2006 12:37 pm
Мнения: 647
Местоположение: с. Згалево
Мнение 
Да! Има такава вероятност!
Има един вход - който обаче в случая не е конфигуруран като аналогов - а като цифров. Това е RX на USART2, на който нивата са ТТЛ.
Освен него - има 4 пина които са изхди и управляват външен ЦАП работещ на 5V, и 4 пина - пак изходи управляващи аналогов мултиплексор 4053 отново работещ на 5V.

Това е снимка на графиката на проблема с шумовете на АЦП-то. Получен е като резултата от канала на АЦП-то се подава направо на аудио ЦАП, с цел да се види характера на смущенията. Измерванията са на 2 милисекунди. Напълно са чуваеми. Нали съм по аудиото - по подобен начин прослушах и захранването. Там няма подобни проблеми.[/quote]


Прикачени файлове:
ACP Problem.jpg
ACP Problem.jpg [ 181.18 KiB | Прегледано 4181 пъти ]
Чет Фев 25, 2010 1:13 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Сеп 15, 2009 10:44 am
Мнения: 1034
Мнение 
Провери този RX вход дали е 5V-толерантен. Ако не е - задължително подаваш сигнала през сериен резистор, 1к примерно, и добавяш шотки диод паралелно на входа към захранване. Ако има вероятност за отрицателно напрежение - втори шотки диод към маса.
Изходите към входове на 5V чипове не са проблем.


Чет Фев 25, 2010 1:35 pm
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Май 27, 2006 12:37 pm
Мнения: 647
Местоположение: с. Згалево
Мнение 
Мамка му - НЕ Е! 8O
Поне не го пише че е - което би трябвалода означава че не е!
Голямо съм магаре :cry: - ама и те са го написали в съвсем отделен ПДФ
А дано да е от това - че голяма зор. :o
Дали да не му направя делител направо?


Чет Фев 25, 2010 2:07 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Сеп 15, 2009 10:44 am
Мнения: 1034
Мнение 
Може и с делител, ама само ако е сигурно, че захранването на 5V-чип не се включва преди захранването на контролера (и микросекунди изпреварване могат да направят фал). С шотки диод ще работи винаги.
Всъщност, ако резисторите са достатъчно големи да ограничат тока под максимално допустимия за конкретния пин при всяка ситуация, няма да има проблем и с делител. По време на работа обаче напрежението на входа задължително трябва да е по-ниско от захранването.


Последна промяна 741 на Чет Фев 25, 2010 2:51 pm, променена общо 1 път



Чет Фев 25, 2010 2:41 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 56 мнения ]  Отиди на страница 1, 2, 3, 4  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 3 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни