Jump to content

    
Sign in to follow this  
Scuby_Du

треск АЦП LPC1768

Recommended Posts

про наводки уже который раз говорю-нет наводок. глючит явно внутри процессора.

Все включено согласно даташиту как на моей плате, так и на покупной отладочной. LC фильтры присутствуют.

наводки которые могут измерится АЦП как 2-3 вольта я бы заметил 200мгц осциллографом.

питание, землю, референсное, входа, все измерял-все идеально. вход на землю замкнут.

в измерениях АЦП якобы помехи в 2-3 вольта показывает

Осталось только накрыть микроконтроллер экраном (заземленным), и с другой стороны платы тоже.

А если у вас от мобильника наводится? :)

Если ничего не помогает, то, похоже, NXP лоханулись в дизайне.

Share this post


Link to post
Share on other sites

а у меня даже экран не помогает, достаточно включить внутренний блок работающий с высокой частотой, например Motor Control на пару мегагерц, даже если к чипу ничего кроме питания не подключено а питание сделано грамотно с минимальным расстоянием и сопротивлением полигонами и стоять ESR кондёры минимального форм фактора с минимальным растоянием до ножек

Edited by Porty

Share this post


Link to post
Share on other sites
Осталось только накрыть микроконтроллер экраном (заземленным), и с другой стороны платы тоже.

А если у вас от мобильника наводится? :)

Если ничего не помогает, то, похоже, NXP лоханулись в дизайне.

экранировать от самого себя не получится. глюки наводятся даже при процессах ввода вывода если ничего не подключено

похоже придется делать внешний АЦП. неохота лепить костыли из-за которых у клиентов могут глюки всплыть

кстати при определенных низких значениях частот оцифровки глюков вроде бы нет, но для моей задачи такие частоты не подходят

порылся на западных форумах-глюки присутствуют у многих на разных отладках. похоже действительно NXP косячнулись с железом или библиотеками

 

на мегах ничего похожего не было. жаль что мега не подходит под нашу задачу

Edited by Scuby

Share this post


Link to post
Share on other sites
похоже придется делать внешний АЦП

Глушить в микроконтроллере все, что можно, на время измерения встроенным АЦП. :01:

Share this post


Link to post
Share on other sites

Ну попробуйте 2368, они вроде по ногам совместимы с 1768. Я при беглом просмотре особых отличий не увидел, разве что минус опоры у 2368 это общий питания.

Share this post


Link to post
Share on other sites
Глушить в микроконтроллере все, что можно, на время измерения встроенным АЦП. :01:

а ничего что ацп портит выборки так что они изменяются от GND до AVCC и в среднем имеют размах в половину аналогового питания? Даже когда контроллер заэкранирован, введён в слип, вся остальная переферия выключена и все каналы ацп к земле припаяны через НУЛЬ ОМ, другого обвеса вообще нет, питание берётся от батарейки которая тоже экранированна и косячят даже все примеры из комплекта поставки?

 

Подобная проблема была у многих

например

http://gvworks.blogspot.com/2011/03/lpc176...y-glitches.html

Edited by Porty

Share this post


Link to post
Share on other sites

Если есть возможность поднять дискретизацию в 2-4 раза, то с этим можно справится чисто программными методами. Хотя косяк неприятный.

Share this post


Link to post
Share on other sites
Если есть возможность поднять дискретизацию в 2-4 раза, то с этим можно справится чисто программными методами. Хотя косяк неприятный.

ниже 88.2кГц делать нереал - ибо сейчас идёт доработка уже существуещего устройства, желательно все 200к получить и не потерять ниодной выборки иначе будет шило на мыло и доработку, не станут брать и соответственно бонусы не пойдут нам.

Клиенты вообще просят 300кГц + 16 бит АЦП и выше =)

Share this post


Link to post
Share on other sites

удалось заставить работать ацп без треска но с ощутимыми помехами (так будто ацп стал 5-6 битным) путём повышения частоты АЦП до 50Мгц:

    LPC_SC->PCLKSEL0&=~(1<<24);     //
    LPC_SC->PCLKSEL0|=  1<<24;      //ADC clock pclk/1; pclk=100Mhz ADC clock = 100Mhz
...
#define ADC_START_TIMER(V)  {LPC_ADC->ADCR=(V) | (1<<8) | (7<<24) | (1<<21) | (0<<27);}  //ADC clock div=2. 50Mhz

Edited by IgorKossak
[code]

Share this post


Link to post
Share on other sites

Какая-то у вас скорость АЦП нереальная. Есть ещё такая мысль: если помеха идет по всем каналам, то на один канал завести постоянный уровень и если там изменение - отбрасывать показания. Если помеха идет по одному каналу, то завести источник на несколько каналов и сравнивать показания. Если есть разница, то отбрасывать.

Share this post


Link to post
Share on other sites
Есть ещё такая мысль: если помеха идет по всем каналам, то на один канал завести постоянный уровень и если там изменение - отбрасывать показания. Если помеха идет по одному каналу, то завести источник на несколько каналов и сравнивать показания. Если есть разница, то отбрасывать.

Так ведь каналы преобразуются не одновременно, а последовательно. Я понимаю так, что там выскакивают одиночные ошибочные измерения.

Share this post


Link to post
Share on other sites
Так ведь каналы преобразуются не одновременно, а последовательно. Я понимаю так, что там выскакивают одиночные ошибочные измерения.

да вы правы. последовательно можно и на одном канале намерять ничего не припаивая

Share this post


Link to post
Share on other sites
Может, там есть что-то полезное.

http://www.ru.nxp.com/documents/applicatio..._guidelines.zip

И еще - медианный фильтр.

в этом документе описывается процедура минимизации шума, и мало сказано про глитч только про его возможность при подключенном программаторе.

Медианный фильтр не помогает. да он почти полностью удаляет все иголки, но приводит к сильному фазовому биению (джиттинг в плюс минус несколько семплов) и уменьшает частотку и изменяет звук значительно (становиться жутко глухим будто звук играют динамики сотика заглушоного подушкой). Фильтры ренджирования, гауса и прочие тоже не особо помогают. Битые выборки АЦП это фактически потерянные данные и не один фильтр их не додумает даже приблизительно правильно.

 

Какая-то у вас скорость АЦП нереальная. Есть ещё такая мысль: если помеха идет по всем каналам, то на один канал завести постоянный уровень и если там изменение - отбрасывать показания. Если помеха идет по одному каналу, то завести источник на несколько каналов и сравнивать показания. Если есть разница, то отбрасывать.

Нужны все восемь каналов на максимальной скорости АЦП по даташиту, т.е. 190кило семплов в сек.

 

 

Так ведь каналы преобразуются не одновременно, а последовательно. Я понимаю так, что там выскакивают одиночные ошибочные измерения.

 

да одиночные, в лучшем случае одна выборка раз 1000 выборок во всём диапазоне АЦП, в худшем каждая десятая выборка рандомом

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this