Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: LPC2478 не запускается ИНОГДА
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
ar__systems
Есть устройство на этом чипе, выпущено уже 600 плат. С десяток плат замечены в том, что чип ИНОГДА не запускается. Одно из первых вещей которые делается в майн это зажигание светодиода, чего не происходит. Проблема в том, что происходит это весьма редко,и пока я не понял от чего зависит. Я взял 4 платы у заказчика которые я видел, что они не запускаются несколько раз (но не подряд), но повторить у себя в лаборатории не могу. Пробовал их охлаждать, и блок питания тоже. Никакго эффекта.

Дергание ресета когда плата зависла в этот момент не помогает.
Подозрений у меня два:

1. Не запускается PLL по каким-то причинам и чип безнадежно его ожидает. Но почему ресет не помогает?
2. Блок питания каким-то образом вводит чип в неправильное состояние. Медленно напряжение нарастает? Может это быть причиной?

Какие могут быть еще варианты, и как можно проверить обе версии? Как можно увеличить вероятность незапуска?

Спасибо!
Nixon
Когда-то был такой вопрос уже на форуме по поводу подобных симптомов - посмотрите не выходите ли вы вы за диапазон допустимого для Fcco при конфигурировании PLL.
ar__systems
Цитата(Nixon @ Oct 9 2012, 15:17) *
Когда-то был такой вопрос уже на форуме по поводу подобных симптомов - посмотрите не выходите ли вы вы за диапазон допустимого для Fcco при конфигурировании PLL.


Mvalue - 45 (в регистр 44)
NValue - 1
резонатор - 12МГц, что дает частоту PLL 540МГц. Близко к пределу 550, но все-таки в пределах.
KRS
было подобное у LPC, обычно с питанием и ресетом связано. Внешний супервизор стоит?
(еще можно попробовать задержку перед включением PLL)
И обязательно проверить что бы код запуска PLL был корректный, например, для отладки вызвать функцию инициализации второй раз (при уже запущенном PLL) т.е. там нужно проверять запущен ли уже и т.п. отключать в нужной последовательности.
Nixon
Цитата(ar__systems @ Oct 9 2012, 23:03) *
Mvalue - 45 (в регистр 44)
NValue - 1
резонатор - 12МГц, что дает частоту PLL 540МГц. Близко к пределу 550, но все-таки в пределах.

При ваших значениях M = 45 и N = 1 мы получим Fcco = 2 * M * Fin / N = 90 * 12 = 1080 Mhz. Многовато будет. Стартовать может и будет, но неустойчиво очень. Пересчитывайте коэффициенты.

P.S. Я обычно, если есть какой-то ограничительный диапазон, стараюсь выбирать значения из его середины - спокойнее как-то sm.gif
ar__systems
Цитата(Nixon @ Oct 9 2012, 16:34) *
При ваших значениях M = 45 и N = 1 мы получим Fcco = 2 * M * Fin / N = 90 * 12 = 1080 Mhz. Многовато будет. Стартовать может и будет, но неустойчиво очень. Пересчитывайте коэффициенты.

P.S. Я обычно, если есть какой-то ограничительный диапазон, стараюсь выбирать значения из его середины - спокойнее как-то sm.gif


я неправильно написал, N = 2, (1 написано в регистре). CCLKSEL = 7, что дает CPU clock 67.5MHz.

Код инициализации PLL был взят целиком из Embedded Artists примеров, как и исходные параметры. только частоту я один раз менял с 72 на 67.5.

Смотря сейчас на этот код, я вижу там одну подозрительную строку:
Код
void ConfigurePLL ( void )
{
    unsigned int MValue, NValue;

    if ( PLLSTAT & (1 << 25) )
    {
        PLLCON = 1;            /* Enable PLL, disconnected */
        PLLFEED = 0xaa;
        PLLFEED = 0x55;
    }

    PLLCON = 0;                /* Disable PLL, disconnected */
    PLLFEED = 0xaa;
    PLLFEED = 0x55;
    
    SCS |= 0x20;            /* Enable main OSC */
    while( !(SCS & 0x40) );    /* Wait until main OSC is usable */

    CLKSRCSEL = 0x1;        /* select main OSC, 12MHz, as the PLL clock source */

    PLLCFG = PLL_MValue | (PLL_NValue << 16);
    PLLFEED = 0xaa;
    PLLFEED = 0x55;
      
    PLLCON = 1;                /* Enable PLL, disconnected */
    PLLFEED = 0xaa;
    PLLFEED = 0x55;

    CCLKCFG = CCLKDivValue;    /* Set clock divider */
#if USE_USB
    USBCLKCFG = USBCLKDivValue;        /* usbclk = 288 MHz/6 = 48 MHz */
#endif

    while ( ((PLLSTAT & (1 << 26)) == 0) );    /* Check lock bit status */
    
    MValue = PLLSTAT & 0x00007FFF;
    NValue = (PLLSTAT & 0x00FF0000) >> 16;
    while ((MValue != PLL_MValue) && ( NValue != PLL_NValue) );

    PLLCON = 3;                /* enable and connect */
    PLLFEED = 0xaa;
    PLLFEED = 0x55;
    while ( ((PLLSTAT & (1 << 25)) == 0) );    /* Check connect bit status */
}


Не нравится мне эта строка:
Код
    while ((MValue != PLL_MValue) && ( NValue != PLL_NValue) );

PLL_MValue и PLL_NValue это defines, две переменные в цикле не меняются. Понятно что этот цинл в теории не должен никогда срабатывать, но...


Цитата(KRS @ Oct 9 2012, 16:17) *
было подобное у LPC, обычно с питанием и ресетом связано. Внешний супервизор стоит?
(еще можно попробовать задержку перед включением PLL)
И обязательно проверить что бы код запуска PLL был корректный, например, для отладки вызвать функцию инициализации второй раз (при уже запущенном PLL) т.е. там нужно проверять запущен ли уже и т.п. отключать в нужной последовательности.

Супервизора нет. Питание нарастает до 3.3В за 4мс. Ресет просто подвязан к питанию через резистор. Думаю добавлю в процедуру инициализации PLL диагностической печати, чтобы если девайс не стартовал, можно было бы проверить, где он.
MBR
У меня было подобное на STM32, когда flash latency конфигурировалась слишком оптимистично. В итоге зависал конвеер и процессор не реагировал ни на одно из прерываний, включая ресет. Первый случай, при котором нужно увеличивать flash latency был, емнип, как раз 60 МГц. Так что, с 67 как раз может проскакивать в большинстве случаев.
haker_fox
Вот так мы инициализируем PLL на LPC24xx. Кореллирует с User Manual.
CODE
    uint32_t readback;

    /* Check if PLL is connected, disconnect if yes */
    if( PLLSTAT & PLLSTAT_PLLC )
    {
        PLLCON        = PLLCON_PLLE; // PLL enabled and disconnected
        PLLFEED        = 0xaa;
        PLLFEED        = 0x55;
    }

    PLLCON        = 0;                // PLL disabled
    PLLFEED        = 0xaa;
    PLLFEED        = 0x55;

    SCS|=            SCS_OSCEN;        // Enable main OSC

    while(!(SCS & SCS_OSCSTAT));    // Wait until OSC is usable

    CLKSRCSEL = CLKSRC_MAIN_OSC;    // Select main OSC as the PLL clock source

    /* Select PLL multiplier and devider */
    PLLCFG        = ( mainPLL_MUL | mainPLL_DIV );
    PLLFEED        = 0xaa;
    PLLFEED        = 0x55;

    PLLCON        = PLLCON_PLLE;        // Enable PLL, disconnected
    PLLFEED        = 0xaa;
    PLLFEED        = 0x55;

    /* Set clock devider */
    CCLKCFG        = mainCPU_CLK_DIV;

    //USBCLKCFG    = USBCLK_DIV_VALUE;

    /* Waiting for the PLL achieve lock */
    while(!(PLLSTAT & PLLSTAT_PLOCK));

    readback     = PLLSTAT & 0x00FF7FFF;
    /* stall - invalid readback */
    while (readback != (mainPLL_MUL | mainPLL_DIV));

    /* Enable and connect */
    PLLCON         = (PLLCON_PLLE | PLLCON_PLLC);
    PLLFEED     = 0xaa;
    PLLFEED     = 0x55;
    /* Check connect bit status, wait for connect */
    while(!(PLLSTAT & PLLSTAT_PLLC));
Lotor
Может банально кварц не заводится из-за технологической емкости платы?
MBR
Если бы кварц запускался через раз, висло бы на цикле ожидания запуска кварца и ресет бы работал.

А если вызвать процедуру инициализации pll дважды, ошибка повторится?
Сергей Борщ
Предполагаю, что процессор сваливается во встроенный загрузчик из-за неправильного уровня на ноге P2.10
SanvaldYV
Цитата(Сергей Борщ @ Oct 10 2012, 11:31) *
Предполагаю, что процессор сваливается во встроенный загрузчик из-за неправильного уровня на ноге P2.10


У нас было так на плате с LPC2132, когда только начинали с ним работать. У LPC есть нога, нулевой уровень на которой в момент ресета запускает встроенный (заводской) загрузчик. У 2132 это была P0.14. У нас она использовалась еще для работы с внешним АЦП и при включении девайса иногда была ситуация что в момент запуска МК в момент поднятия ресета напряжение на этой ноге еще не установилось. Тоже долго не могли понять почему иногда некоторые платы не стартуют.
ar__systems
Цитата(Сергей Борщ @ Oct 10 2012, 04:31) *
Предполагаю, что процессор сваливается во встроенный загрузчик из-за неправильного уровня на ноге P2.10

О, вот это интересно. На ногу Р2.10 выведена схема от интерфеса программатора через последовательный порт (также скопирована с EA платы), и при отключенном программаторе там high-z. Попробовать туда поставить пулл-ап? Или без задержки отпускания ресета все равно не обойтись?

И ресет не действует на внутренний загрузчик?

Цитата(MBR @ Oct 10 2012, 00:44) *
У меня было подобное на STM32, когда flash latency конфигурировалась слишком оптимистично. В итоге зависал конвеер и процессор не реагировал ни на одно из прерываний, включая ресет. Первый случай, при котором нужно увеличивать flash latency был, емнип, как раз 60 МГц. Так что, с 67 как раз может проскакивать в большинстве случаев.

Мне интересно как вы в итоге пришли к такому диагнозу, что именно зависал конвеер? Так же мне не очень понятно почему ресет в этом случает не помогал? Ну это не обязательно имеет отношение к моей проблеме, а в общем.

Цитата(haker_fox @ Oct 10 2012, 01:37) *
Вот так мы инициализируем PLL на LPC24xx. Кореллирует с User Manual.

У вас в общем-то все тоже самое что и в нашем (EA) коде.
MBR
Цитата(ar__systems @ Oct 10 2012, 18:26) *
Мне интересно как вы в итоге пришли к такому диагнозу, что именно зависал конвеер? Так же мне не очень понятно почему ресет в этом случает не помогал? Ну это не обязательно имеет отношение к моей проблеме, а в общем.

Лишь мои домыслы, не более того. Ресет, если следовать армовской документации, это прерывание с наивысшим приоритетом. Если в процессе ресета процессор зависнет, скажем, на чтении инструкции из флеша, ресет не отработает. Именно это я и наблюдал.
aaarrr
Цитата(MBR @ Oct 10 2012, 18:37) *
Ресет, если следовать армовской документации, это прерывание с наивысшим приоритетом.

Это пишут в разделе Programmer's model. Прерыванием он является только с этой стороны.
ar__systems
Хм... не знаю не знаю насчет Р2.10. Для пробы поставил кондер 0.1uF между этим пином и землей. Разряжаю его перемычкой. Запускаю плату - висит. Но ресет при этом поиагает. Т.е. по симтомам не совсем совпадает. Плюс там еще экран есть, и там очень характерный паттерн появляется на экране, а в моем тесте просто черный.

При каких вообще обстоятельствах ресет может не действовать?
Andy Mozzhevilov
Вы где-нибудь на этапе до всякой инициализации в ПО на неиспользуемой внешней ноге установите уровень, по которому можно посмотреть скопом, проходит проц этот участок кода или нет. Если используете IAR, то лучше сделать в __low_level_init в самом начале, для других кросс-компиляторов должны быть подобные механизмы, или стартап поправить.
Вы таким образом практически однозначно определите, стартует у вас контроллер из флэш и выполняет ваше ПО, а потом виснет, или сваливается в бутлоадер.
Если вы используется C++, то проблема может заключаться в конструкторе глобальных объектов, которые вызываются при инициализации системы.
Да мало ли там еще может быть причин. По вашим постам не совсем понятно, как и где вы инициализируете систему и что у вас там наворочено.
ar__systems
Цитата(Andy Mozzhevilov @ Oct 10 2012, 13:17) *
Вы таким образом практически однозначно определите, стартует у вас контроллер из флэш и выполняет ваше ПО, а потом виснет, или сваливается в бутлоадер.

Да, пожалуй так и сделаю. Использую GNU ARM, вся инфраструктура взята из кода EA.
MBR
Цитата(aaarrr @ Oct 10 2012, 18:56) *
Это пишут в разделе Programmer's model. Прерыванием он является только с этой стороны.

Где пишут иначе? И почему тогда до полного обесточивания чипа я наблюдаю отказ обработки ресета?
aaarrr
Цитата(MBR @ Oct 11 2012, 09:27) *
Где пишут иначе? И почему тогда до полного обесточивания чипа я наблюдаю отказ обработки ресета?

В других разделах. Неужели Вы действительно полагаете, что сигналы IRQn и RESETn чем-то похожи?
Конвеер, разумеется, по сбросу очищается.
MBR
Цитата(aaarrr @ Oct 11 2012, 16:42) *
Неужели Вы действительно полагаете, что сигналы IRQn и RESETn чем-то похожи?

А как тогда быть с soft-reset (armv7)?

Цитата(aaarrr @ Oct 11 2012, 16:42) *
Конвеер, разумеется, по сбросу очищается.

Если "разумеется", почему ресет не отрабатывает?

Цитата(aaarrr @ Oct 11 2012, 16:42) *
В других разделах.

А грубить-то зачем?
aaarrr
Цитата(MBR @ Oct 11 2012, 18:26) *
А как тогда быть с soft-reset (armv7)?

Сравните методы вызова "программного" сброса и честного исключения типа SVC. Разница заметна?
Первое - не более чем взвод битика в периферийном модуле (пусть и являющимся неотъемлемой частью ядра),
приводящий в результате к активации вполне себе "железных" цепей сброса, а не выполнению
некой программной последовательности.
RabidRabbit
Цитата(MBR @ Oct 11 2012, 18:26) *
А как тогда быть с soft-reset (armv7)?

Но всё же LPC2478 у ТС совсем не armv7, вроде нет там никакого soft-reset...
ar__systems
Про P2.10 -- у меня эта версия вызывает определенные сомнения, т.к. этот пин в момент включения подтянут к VDD (внутренниий пуллап)... Вот пин RTCK никуда не подтянут, проверяю эту версию с ним. Там симптомы более похожи.
toweroff
Цитата(ar__systems @ Oct 12 2012, 21:54) *
Про P2.10 -- у меня эта версия вызывает определенные сомнения, т.к. этот пин в момент включения подтянут к VDD (внутренниий пуллап)... Вот пин RTCK никуда не подтянут, проверяю эту версию с ним. Там симптомы более похожи.


UM10237 (Rev. 04 — 26 August 2009), page 676

Цитата
Pin P2.10 that is used as hardware request for ISP requires special attention. Since P2.10
is in high impedance mode after reset, it is important that the user provides external
hardware (a pull-up resistor or other device) to put the pin in a defined state. Otherwise
unintended entry into ISP mode may occur.
ar__systems
Цитата(toweroff @ Oct 12 2012, 19:51) *
UM10237 (Rev. 04 — 26 August 2009), page 676

Спасибо. Да, это полезная инфа, любопытно что этот косяк присутсвует на плате EA, которые официальные разработчики демок для LPC
toweroff
Цитата(ar__systems @ Oct 13 2012, 08:47) *
Спасибо. Да, это полезная инфа, любопытно что этот косяк присутсвует на плате EA, которые официальные разработчики демок для LPC

я на эти грабли наступал, тоже долго не мог понять, что происходит
а по поводу платы - возможно, у вас старая ревизия и артисты уже пофиксили в новых версиях... все бывает
ar__systems
Так, поставил пуллапы на П2.10 и на RTCK, эффекта никакого. Т.е. все продолжает виснуть как и раньше. Но, проявления теперь в точности как при подтяжке к нулю RTCK (пытался сам такое зависание каким-то образом воспроизвести). Ресет так же не помогает и в течении секунд 20-30 программа нормально стартует.

Пуллапы 11К. Еще странность на которую обратил внимание но не успел исследлвать, странный уровень напряжения на П2.10, около 2.5В (без пуллапа). Питание чипа 3.3В

Да, посмотрел еще на схематику демки олимекса. У них схема программатора джамперами отделена от чипа с пуллапом, и подтяжки стоят на всех линниях jTAG. Попробую тоже добавить...
Andy Mozzhevilov
Вы все же разобрались, стартует у вас бутлоадер, ваш код, или ни то и ни другое и контроллер находится в каком-то неопределенном вами состоянии?
Не понятна фраза "Ресет так же не помогает и в течении секунд 20-30 программа нормально стартует."
Может кратко в одном посте можете описать последовательность действий и состояний контроллера?
ar__systems
Цитата(Andy Mozzhevilov @ Oct 17 2012, 22:58) *
Не понятна фраза "Ресет так же не помогает и в течении секунд 20-30 программа нормально стартует."
Может кратко в одном посте можете описать последовательность действий и состояний контроллера?

Да немного приболел последние 3 дня так что не занимался проблемой.

Ресет не работает, т.е. никакого видимого эффекта на плату не производит. Если же ее не трогать, она через какое-то время начинает работать как и должна, это я имел ввиду под словами "в течении секунд 20-30 программа нормально стартует". Все тоже самое я наблюдаю если запускать плату с притянутым к нулю RTCK.

Lotor
Вам ранее советовали уже с помощью осцилла определить в каком месте затык. Почему Вы не следуете этому здравому совету? =)
Andy Mozzhevilov
Цитата(ar__systems @ Oct 18 2012, 15:50) *
Да немного приболел последние 3 дня так что не занимался проблемой.

Ресет не работает, т.е. никакого видимого эффекта на плату не производит. Если же ее не трогать, она через какое-то время начинает работать как и должна, это я имел ввиду под словами "в течении секунд 20-30 программа нормально стартует". Все тоже самое я наблюдаю если запускать плату с притянутым к нулю RTCK.


Как вы определяете факт старта платы?
У вас есть динамическая инициализация, т.е. вы используете С++ и глобальные объекты классов, или у вас чисто С код?
Те 20-30 секунд, когда плата находится в непонятном для вас состоянии, осциллятор запускается?
Все это происходит только по включению питания, или нормально заработавшая плата может в такое состояние переходить, если ей дернуть Reset?

AlexandrY
Цитата(ar__systems @ Oct 9 2012, 20:39) *
Есть устройство на этом чипе, выпущено уже 600 плат. С десяток плат замечены в том, что чип ИНОГДА не запускается.


Неплохой показатель для 600 плат проблемы иметь всего с десятком.
Вполне вписывается в процент брака. Я бы смело менял чипы и не копал бы дальше.
ar__systems
Цитата(Andy Mozzhevilov @ Oct 18 2012, 12:42) *
Как вы определяете факт старта платы?
У вас есть динамическая инициализация, т.е. вы используете С++ и глобальные объекты классов, или у вас чисто С код?
Те 20-30 секунд, когда плата находится в непонятном для вас состоянии, осциллятор запускается?
Все это происходит только по включению питания, или нормально заработавшая плата может в такое состояние переходить, если ей дернуть Reset?

Нету никой динамической инициализации и С++ тоже нету. После ресета плата ни разу ни была замечена в зависании. Я до сегодняшнего дня не имел возможности потыкать скопом в зависшую плату, поэтому про состояния кварца тоже не было ничего известно.
----------------------------------------------------------------------------------------------------
Короче я понял в чем дело. sm.gif *Всем большое спасибо за участие и советы!!!*

Плата питается 5В от внешнего БП. Если увеличить время нарастания питания с 0 до 5В до примерно 50 ms плата виснет 100% попыток.

После 5В стоит 3.3В регулятор LD1117. Вскоре после достижения VDD 3.0B чип включается и пытается запустить кварц. После примерно 10 колебаний кварца на VDD начинается что-то странное - толи у LD1117 ограничение по току включается, толи он при таком напряжении вообще себя неадекватно ведет, только VDD выше 3.0В так и не вырастает, начинается какая-то байда. далее на VDD наблюдаю что-то типа UUUUUUUU c верхними пиками на 3В и нижней кромкой около 2.1В. При этом потребление тока примерно на 500мА больше чем при нормально включившейся плате.

Если подаю 3.3В с таким же медленным рампом от другого регулятора непосредственно на VDD, все стартует нормально. Кстати, все обыскал, но спецификаций на то, как быстро должен нарастать VDD у этого CPU не нашел.

Т.е. сам по себе факт медленного нарастания VDD для чипа не проблема, главное чтобы регулятор не спотыкался при резком скачке тока в момент старта чипа.

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

Думаю в следуеще версии заменю нафиг этот регулятор.

Цитата(AlexandrY @ Oct 18 2012, 15:12) *
Неплохой показатель для 600 плат проблемы иметь всего с десятком.
Вполне вписывается в процент брака. Я бы смело менял чипы и не копал бы дальше.

Казалось бы да, но дефект проявляется крайне редко, и уже пару плат вернулось от заказчиков после тестирования, проверок итд. Т.е. не исключено, что они все такие.

Цитата(Lotor @ Oct 18 2012, 08:25) *
Вам ранее советовали уже с помощью осцилла определить в каком месте затык. Почему Вы не следуете этому здравому совету? =)

Написал же, болел sad.gif
Zwerg_nase
Цитата(ar__systems @ Oct 19 2012, 02:39) *
Плата питается 5В от внешнего БП. Если увеличить время нарастания питания с 0 до 5В до примерно 50 ms плата виснет 100% попыток.

После 5В стоит 3.3В регулятор LD1117. Вскоре после достижения VDD 3.0B чип включается и пытается запустить кварц. После примерно 10 колебаний кварца на VDD начинается что-то странное - толи у LD1117 ограничение по току включается, толи он при таком напряжении вообще себя неадекватно ведет, только VDD выше 3.0В так и не вырастает, начинается какая-то байда. далее на VDD наблюдаю что-то типа UUUUUUUU c верхними пиками на 3В и нижней кромкой около 2.1В. При этом потребление тока примерно на 500мА больше чем при нормально включившейся плате.


У вас LD1117 фиксированный на +3.3V или ADJ? Входное напряжение +5В как себя ведёт, когда VDD начинает дёргаться? А конденсатор на выходе LD1117 какой стоит? Если стоит 10 мкФ, то, возможно, вам надо его увеличить, хотя бы до 20 мкФ.
Altemir
А ещё большинство Low drop-ов очень не любят на выходе кондёры со сверхнизким ESR, т.е. керамику. В ряде даташитов об этом говорят, рекомендуя ставить танталы или электролиты, в противном случае имеет место быть самовозбуждение. По LD1117 же в даташите ни слова.
ar__systems
Цитата(Zwerg_nase @ Oct 19 2012, 05:17) *
У вас LD1117 фиксированный на +3.3V или ADJ? Входное напряжение +5В как себя ведёт, когда VDD начинает дёргаться? А конденсатор на выходе LD1117 какой стоит? Если стоит 10 мкФ, то, возможно, вам надо его увеличить, хотя бы до 20 мкФ.

Конденсатор стоит 22мкф электролит, даже два, но один на другом конце платы. 5В напряжение ведет себя прекрасно, спокойненько продолжает себе расти по прямой до 5В.

LD1117 фиксированый.
Zwerg_nase
Цитата(ar__systems @ Oct 19 2012, 18:12) *
Конденсатор стоит 22мкф электролит, даже два, но один на другом конце платы. 5В напряжение ведет себя прекрасно, спокойненько продолжает себе расти по прямой до 5В.

LD1117 фиксированый.


На мой взгляд, проблема в том, что при увеличении выходного тока, т.е. когда процессор включается при VDD = +3V, увеличивается Dropout Voltage регулятора (в даташите оно отличается на 0,1V при увеличении выходного тока со 100 мА до 800 мА), а так как на входе напряжение не успевает пропорционально вырасти, то регулятор перестаёт регулировать и на выходе получаются броски напряжения. Возможно, это получиться вылечить увеличением выходной ёмкости. В даташите у ST на выходе LD1117 нарисованы конденсаторы до 100 мкФ.
ar__systems
Цитата(Zwerg_nase @ Oct 22 2012, 09:52) *
На мой взгляд, проблема в том, что при увеличении выходного тока, т.е. когда процессор включается при VDD = +3V, увеличивается Dropout Voltage регулятора (в даташите оно отличается на 0,1V при увеличении выходного тока со 100 мА до 800 мА), а так как на входе напряжение не успевает пропорционально вырасти, то регулятор перестаёт регулировать и на выходе получаются броски напряжения. Возможно, это получиться вылечить увеличением выходной ёмкости. В даташите у ST на выходе LD1117 нарисованы конденсаторы до 100 мкФ.

Кстати, интересная версия. Не совсем правда объясняет почему VDD вообще не поднимается после этого выше 3В? Даже когда Vin доходит до 5В.

Да, про конденсатор я тоже подумал. Увеличим его тоже.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.