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

 
 
> STM32F4, Динамическое изменение частоты ядра, Можно ли так делать?
Integro
сообщение Jan 19 2015, 14:47
Сообщение #1


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

Группа: Свой
Сообщений: 167
Регистрация: 25-12-09
Из: Минск
Пользователь №: 54 460



Всем привет,
Задача: добится минимального потребления, одна из идей смена частоты проца в засимости от режима работы.
Возможно ли это? Пробовал кто нибуть подобное? Если да, и это возможно, на какие грабли могу наступить? Детерминировано ли время настройки клоков? Я так понимаю придется дожидаться завершения всех транзакций передачи данных (I2C, SPI, DMA и тд) и перенастраивать переферию с учетом новых клоков?
Поправте меня если в чемто ошибаюсь.

P.S
Проц спать тоже будет, но и нужен режим когда нужно обеспечить какойто минимальный обмен.

Сообщение отредактировал Integro - Jan 19 2015, 15:08
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
jcxz
сообщение Jan 20 2015, 04:01
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Integro @ Jan 19 2015, 20:47) *
Задача: добится минимального потребления, одна из идей смена частоты проца в засимости от режима работы.

"минимального" - нет такого числа. Сколько в мА нужно? Потом справляетесь с документацией и смотрите какой режим энергосбережения можно использовать
(учитывая режимы работы периферии, порядок входа и выхода из режима сбережения, какие функции должны продолжать выполняться в этом режиме и как в него входить и выходить).

Цитата(Aner @ Jan 20 2015, 04:06) *
F4xx для этих нельзя, да и не зачем. Есть развитый слип для этого, тот же стоп. Все остальное от лукавого.

Не надо людей в заблуждение вводить. Останов одного только ядра CPU (WFE/WFI) даёт очень маленькое снижение потребления.
Так как остальная периферия продолжает работать и тактироваться.

Я делал работу с переключением (снижением тактовой) в периоды простоя в одном проекте, где была куча параллельно работающих задач с периферией
(несколько SSP+DMA каналов, UART+DMA, ADC+DMA, DAC+DMA), uCOS на LPC1758.
Всё прекрасно работает. Но в изучение работы периферии и ядра надо погружаться подробно, чтобы такое реализовать.
С поверхностными знаниями и пользуясь библиотеками такое думаю не сделать.

После останова и выключения всей периферии, перевода всех пинов в GPIO и установку на них соотв. состояний, я переводил тактирование
МК на внутренний IRC-генератор, выключал PLL, далее - устанавливал максимальный делитель тактовой IRC (==256).
В таком состоянии у меня МК и находился (IRC=12МГц/256).
Какой либо из режимов глубого сна с отключением тактирования в проекте использовать было нельзя, так как кроме основного генератора, другого
никакого не было, а пробуждаться надо было по таймеру, а не по внешнему сигналу.
Но даже в таком режиме, так как тактовая составляла всего порядка 47кГц, а периферия вся выкл., то потребление МК было очень маленькое.

Для выхода из этого режима, проделывал всё в обратном порядке.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 20 2015, 07:15
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(jcxz @ Jan 20 2015, 06:01) *
"минимального" - нет такого числа. Сколько в мА нужно?
Чем вызван такой интересный подход? Часто нужно как можно меньше. Чем меньше получится - тем лучше. Получится N mA - напишем в описании "время непрерывной работы K часов", получится X ma - напишем "Y часов". Чем больше часов сможем вписать - тем шире можно раздувать щеки перед потенциальными покупателями, особенно если у конкурентов это время меньше. И лучше сразу делать отрыв максимально возможным, потому что этот параметр может не являться основным и на его вылизывание в дальнейшем просто не дадут времени. И чем больше будет изначальный отрыв, тем дольше будет преимущество.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jan 20 2015, 16:43
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Сергей Борщ @ Jan 20 2015, 13:15) *
Чем вызван такой интересный подход? Часто нужно как можно меньше. Чем меньше получится - тем лучше.

Тем, что всё чего-то стОит. Как правило: чем больше нужно получить эффект, тем больше нужно потратить усилий.
Внесение поддержки WFI/WFE даёт сколько-то процентов (скажем 20%) экономии энергии и сколько-то (немного)
усилий нужно потратить чтобы эту поддержку реализовать в фоновой задаче.
Алгоритм работы с каждым модулем периферии с отключением его в периоды бездействия - тоже траты на соотв.
организацию алгоритма, перепрограммирование периферии и т.п. Без этого ведь программа будет проще.
Ещё более глубокая экономия с использованием режимов всё более глубокого сна - всё больше и больше усилий и времени на разработку и отладку.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Integro   STM32F4, Динамическое изменение частоты ядра   Jan 19 2015, 14:47
- - ViKo   Можно. Есть же HSI генератор. Переключитесь на нег...   Jan 19 2015, 17:03
- - Aner   А вот и нельзя, так делать никогда. На мелких прос...   Jan 19 2015, 17:56
|- - ViKo   Цитата(Aner @ Jan 19 2015, 20:56) Не стои...   Jan 19 2015, 18:27
|- - Aner   QUOTE (ViKo @ Jan 19 2015, 22:27) А когда...   Jan 19 2015, 20:51
|- - ViKo   Цитата(Aner @ Jan 19 2015, 23:51) Не стра...   Jan 19 2015, 21:03
- - Golikov A.   не знаю как в этом конкретно, но в мануале на мног...   Jan 19 2015, 21:29
- - Aner   F4xx для этих нельзя, да и не зачем. Есть развитый...   Jan 19 2015, 22:06
|- - Aner   QUOTE (jcxz @ Jan 20 2015, 08:01) Не надо...   Jan 20 2015, 09:41
|- - jcxz   Цитата(Aner @ Jan 20 2015, 15:41) Как это...   Jan 20 2015, 17:06
- - SasaVitebsk   Исходя из описания видно, что можно значительно ме...   Jan 20 2015, 06:08
- - ViKo   Ситуация "спит - проснулся - быстро сделал де...   Jan 20 2015, 07:06
- - Golikov A.   Не обосновано грубо и ровно также не верно. Сертиф...   Jan 20 2015, 09:46
|- - Aner   QUOTE (Golikov A. @ Jan 20 2015, 13:46) Н...   Jan 20 2015, 10:18
- - SasaVitebsk   Я что-то с сертификацией тоже не понял. О чём речь...   Jan 20 2015, 10:08
- - Golikov A.   ЦитатаДа я смотрю, что вы новичёк в этой софтверно...   Jan 20 2015, 10:53
|- - SasaVitebsk   Цитата(Golikov A. @ Jan 20 2015, 13:53) А...   Jan 20 2015, 14:03
|- - ViKo   Цитата(SasaVitebsk @ Jan 20 2015, 17:03) ...   Jan 20 2015, 14:14
- - kan35   У меня для одного изделия быстродействия особо бол...   Jan 20 2015, 16:49
- - Integro   Всем спасибо за ответы. Если кому интересно, по те...   Jan 20 2015, 20:15
|- - jcxz   Цитата(Integro @ Jan 21 2015, 02:15) На р...   Jan 21 2015, 05:05
|- - Integro   Цитата(jcxz @ Jan 21 2015, 08:05) Интерес...   Jan 21 2015, 06:57
- - Golikov A.   что логично, SPI и I2C они же клоки выдают, это ту...   Jan 21 2015, 08:21


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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 01:09
Рейтинг@Mail.ru


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