Contiki OS CC2538: снижение потребления тока/мощности

Я пытаюсь снизить текущее потребление ОС contiki, работающей на комплекте разработки CC2538.

Хотелось бы эксплуатировать аппарат от CR2032 со сроком службы 2 года. Для этого мне понадобится средний ток менее 100 мкА.

Однако, когда я запускаю следующее при 3 В, я получаю следующие результаты:

  • contiki/examples/hello-world = 0,4 мА - 2 мА
  • contiki/examples/er-rest-example/er-example-client = 27 мА
  • contiki/examples/er-rest-example/er-example-server = 27 мА
  • Пример веб-сокета Thingsquare = 4 мА

Я также разработал свою собственную целевую платформу на основе cc2538 и получил аналогичные результаты.

Я прочитал руководство по адресу https://github.com/contiki-os/contiki/blob/648d3576a081b84edd33da05a3a973e209835723/platform/cc2538dk/README.md и убедились, что в файле contiki-conf.h: - LPM_CONF_ENABLE 1 - LPM_CONF_MAX_PM 2

Может ли кто-нибудь дать мне несколько советов о том, как я могу снизить ток. Это было бы очень ценно.

С уважением, Шейн


person Shane    schedule 17.10.2014    source источник


Ответы (1)


Как вы измеряли ток?

Вы должны знать, что использование простого амперметра для измерения текущего потребления contiki-os не даст вам соответствующих результатов. Система включает/выключает радио с относительно высокой частотой (по умолчанию 8 Гц) для выполнения CCA. Это может быть не очень легко поймать для амперметра.

Чтобы иметь представление о потреблении тока, когда устройство находится в глубоком сне (а затем сделать расчет для определения усредненного потребления тока), я бы предпочел перевести устройство в состояние PM до того, как программа достигнет бесконечного цикла while. Для этого я использовал следующий код:

lpm_enter();
REG(SYS_CTRL_PMCTL) = SYS_CTRL_PMCTL_PM2;
do { asm("wfi"::); } while(0);
leds_on(LEDS_RED); // should not reach here
while(1){ 
 ...

На CC2538 проверка CCA потребляет около 10-15 мА и длится около 2 мс. Когда радио передает пакет, оно потребляет 25 мА. Взгляните на этот пост: длительность передачи пакетов Contiki UDP с CC2538.

Кроме того, чтобы сэкономить немного больше тока, отключите последовательный порт:

#define CC2538_CONF_QUIET 1  

Вы используете плату SmartRF? Если вы хотите правильно измерить ток с помощью этой платы, вам необходимо снять все перемычки: P486, P487, P411 и P408. Оставьте только перемычки BTN_SEL и сигналы RESET.

person Darko P.    schedule 20.10.2014
comment
Я попробовал ваше предложение, которое заставило устройство перейти в режим PM2. - person Shane; 21.11.2014
comment
Я пробую ваше предложение, которое принудительно перешло в режим PM2. Привет, мир = ~ 150 мкА. Обнаружено, что в LPM CC2538 устанавливает каждый ввод-вывод как ввод с подтяжкой. В итоге один из моих входов/выходов был привязан к 0В. После устранения этой проблемы ток уменьшился до 1,4 мкА. Спасибо за ваши предложения, которые помогут мне решить текущую проблему. - person Shane; 21.11.2014