реклама на сайте
подробности

 
 
> LPC288x power down, Проблемы с переходом в режим пониженного энергопотребления
IgorMarx
сообщение Sep 7 2009, 07:19
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 61
Регистрация: 5-10-05
Из: Зеленоград
Пользователь №: 9 268



Здравствуйте всем.

Делаю проект на LPC2888/01 (корпус BGA 180 с шагом 0.5). Пока было всё "хорошо", но настал момент, когда проц нужно положить спать. Процедура, описанная в юзер мануале, реализована; пины на вывод, внешних нагрузок нет, аналоговые цепи отключены через регистры, осциллятор остановлен, JTAG не подключен и т.п. Камень продолжает потреблять примерно 4 мА, из которых примерно 1,5 через стабилизатор уходит в шину 1.8V. Код, написанный в среде IAR Embedded Workbench, проверен на плате Olimex-H2888 и на плате разрабатываемого устройства, результат одинаковый. Мало того, взят пример из оригинального code bundle от NXP, разработанный для платы Nohau в Keil и доработанный, чтобы уходить в спячку на этих платах, даёт те же результаты.

Перерезание дорожек на плате показало, что ток течёт по шинам питания, кормящим встроенный USB. Мало того, подача разных уровней на аналоговые входы немного влияет на ток потребления в этом режиме.

Интересные факты:
1. В readme на code bundle написано, что данный проект сгенерирован, но НЕ ТЕСТИРОВАЛСЯ (Ого! Это что же помешало, интересно?)
2. В Интернете нигде нет упоминания о том, чтобы какое-либо батарейное устройство было успешно реализовано на этом чипе;
3. Звонок куратору и написание письма в NXP с просьбой предоставить образец реально работающего кода, уводящего камень в спячку пока остались без ответа.

Вопрос в следующем: есть ли кто-либо, имевший дело с процом и добившейся его нормального засыпания?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
IgorMarx
сообщение Sep 8 2009, 10:13
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 61
Регистрация: 5-10-05
Из: Зеленоград
Пользователь №: 9 268



Разобрался сам.
Код
    SetCoreMode(eMode60MHz);
    USBCLKEN = 1;
    USBLOCK = 0xAA37;
    USBTEST = (1 << 4);
    USBMODE = USBMODE & 0xfe;    //clear SOFTCT
    USBMODE = (USBMODE & 0xfe) | (1<<4); // issue soft reset
    USBMODE = USBMODE & (0xfe & ~(1<<4)); // remove soft reset
    for (volatile unsigned i=0; i<60000000UL / 100; i++);// wait at lest 3 ms (we wait more)
    USBTEST = 0;
    USBLOCK = 0xAA37;
    //Issue soft reset
    USBMODE = (USBMODE & 0xff) | (1<<4); // issue soft reset
    USBMODE = USBMODE & (0xff & ~(1<<4)); // remove soft reset
    // wait for suspend interrupt
    while ((USBINTSTAT & (1<<3)) == 0);

    USBMODE = (USBMODE & 0xfe) | (1<<5); // GOSUSP
    USBCLKEN = 0;

    SetCoreMode(eMode12MHz);


Плюс резистор с D- на землю.

P.S. Тут есть лишнее.

Сообщение отредактировал IgorMarx - Sep 8 2009, 10:17
Go to the top of the page
 
+Quote Post
shahr
сообщение Sep 8 2009, 11:15
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 128
Регистрация: 6-06-06
Из: Москва
Пользователь №: 17 793



Цитата(IgorMarx @ Sep 8 2009, 14:13) *
Разобрался сам.


То есть вопрос в NXP support мы закрываем?

Цитата(IgorMarx @ Sep 7 2009, 11:19) *
3. Звонок куратору и написание письма в NXP с просьбой предоставить образец реально работающего кода, уводящего камень в спячку пока остались без ответа.

Ответ из NXP предоставлен.


--------------------
wbw
shahr
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 06:38
Рейтинг@Mail.ru


Страница сгенерированна за 0.02698 секунд с 7
ELECTRONIX ©2004-2016