makc 229 10 февраля, 2023 Опубликовано 10 февраля, 2023 · Жалоба Приветствую участников форума, В процессе изучения реального потребления в режиме Standby y HK32F030F4P6 на макетной плате собственной разработки обнаружилось, что вместо 1,64 мкА потребление составляет около 175 мкА. При этом все GPIO переключены в состояние входов, в цепи питания (где измеряется ток) есть только конденсаторы сам микроконтроллер. При старте никакие периферийные блоки, кроме GPIO, не настраиваются и не включаются. Для перехода в режим Standby используется следующий код: // Configure standby mode PWR->CR &= ~PWR_CR_LPDS; PWR->CR |= PWR_CR_PDDS | PWR_CR_CWUF | PWR_CR_CSBF; // PWR->CSR2 SHDS bit to 1 *((uint32_t*)(PWR_BASE + 0x30)) |= (1 << 7); // Set SLEEPDEEP in system control register SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk; while (1) { __WFE(); } Пин BOOT0 подтянут с помощью резистора 100 кОм к земле, NRST подтянут с помощью 100 кОм к питанию. Линии SWD и NRST на время измерения отключаются от кабеля программирования. Поскольку у меня ранее не было нужды и опыта работы с аналогичными STM32 в режиме Standby я возможно упускаю какую-то необходимую настройку? Хотя с точки зрения описания на HK32 я всё сделал правильно, даже взвёл в 1 бит SHDS, отсутствующий у аналогичного STM32. Но тем не менее это не помогает. Был ли у кого-нибудь опыт работы с этими МК в режимах пониженного энергопотребления? Какие есть подводные камни при настройке? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 10 февраля, 2023 Опубликовано 10 февраля, 2023 · Жалоба 2 minutes ago, makc said: все GPIO переключены в состояние входов Входов или выходов? На STM32F070, например, приходилось переключать на выход в т.ч. и не разваренные выводы, чтобы достичь минимального потребления. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 229 10 февраля, 2023 Опубликовано 10 февраля, 2023 · Жалоба 4 минуты назад, aaarrr сказал: Входов или выходов? На STM32F070, например, приходилось переключать на выход в т.ч. и не разваренные выводы, чтобы достичь минимального потребления. Пробовал и так, и так, потребление меняется на десяток микроампер, т.е. в пределах погрешности эксперимента. Правда настраивал только A, B и F, т.к. у него есть только они в этом корпусе. Дополнение: настроил все порты на выходы и перевёл их в 0 - ничего не изменилось. GPIOA->MODER = 0x55555555; GPIOB->MODER = 0x55555555; GPIOC->MODER = 0x55555555; GPIOD->MODER = 0x55555555; GPIOF->MODER = 0x55555555; GPIOA->PUPDR = 0; GPIOB->PUPDR = 0; GPIOC->PUPDR = 0; GPIOD->PUPDR = 0; GPIOF->PUPDR = 0; GPIOA->ODR = 0x00000000; GPIOB->ODR = 0x00000000; GPIOC->ODR = 0x00000000; GPIOD->ODR = 0x00000000; GPIOF->ODR = 0x00000000; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 38 10 февраля, 2023 Опубликовано 10 февраля, 2023 · Жалоба https://electronix.ru/forum/index.php?app=forums&module=forums&controller=topic&id=169702&do=findComment&comment=1843249 не поможет? А то там уж чуть ли не интегралы брать стали ;-) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 229 10 февраля, 2023 Опубликовано 10 февраля, 2023 · Жалоба 10 минут назад, Obam сказал: https://electronix.ru/forum/index.php?app=forums&module=forums&controller=topic&id=169702&do=findComment&comment=1843249 не поможет? А то там уж чуть ли не интегралы брать стали ;-) Это я видел, но ничего не смог найти на эту тему в китайском reference manual. Возможно, что они что-то недоговаривают и там есть какие-то неописанные регистры управления питанием, с них станется. Плохо, что у них нет ни одного примера кода для ухода в глубокий сон. Обычно китайцы грешат плохой документацией, но зато есть какие-никакие примеры. Но у этих примеров нет, зато есть практически 1в1 переведенный с английского на китайский reference manual от stm32f03x. 🤦♂️ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 143 11 февраля, 2023 Опубликовано 11 февраля, 2023 · Жалоба А каково перед уходом в сон состояние DBGMCU->CR? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 229 11 февраля, 2023 Опубликовано 11 февраля, 2023 · Жалоба Не смотрел, но при уходе в сон SWD отваливается намертво и для перепрошивки подключиться можно только с установленным в активный уровень ресетом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 143 11 февраля, 2023 Опубликовано 11 февраля, 2023 · Жалоба 21 минуту назад, makc сказал: но при уходе в сон SWD отваливается намертво Так вы же его ноги на выход перенастраиваете, вот он и отваливается. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 229 11 февраля, 2023 Опубликовано 11 февраля, 2023 · Жалоба 14 минут назад, Сергей Борщ сказал: Так вы же его ноги на выход перенастраиваете, вот он и отваливается. Точно. В данном случае это ни о чём не говорит. Доберусь до платы, проверю DBGMCU->CR. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
quark 48 11 февраля, 2023 Опубликовано 11 февраля, 2023 (изменено) · Жалоба 18 часов назад, makc сказал: При старте никакие периферийные блоки, кроме GPIO, не настраиваются и не включаются. Стандартный совет - проверить всю периферию еще раз: - Посмотреть, нет ли периферийных модулей, которые включаются при старте по-умолчанию, без вашего ведома. Выключить их вручную, если они не нужны. - Посмотреть, нет ли периферийных модулей, которые не включаются при старте по-умолчанию, но требуются для нормального перехода в спящий режим. Включить их вручную и настроить, если это необходимо. Изменено 11 февраля, 2023 пользователем quark Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 229 11 февраля, 2023 Опубликовано 11 февраля, 2023 · Жалоба 28 минут назад, quark сказал: Посмотреть, нет ли периферийных модулей, которые включаются при старте по-умолчанию, без вашего ведома. Выключить их вручную, если они не нужны Что значит "без моего ведома"? У меня мой чистый стартап + пустой main, я даже тактирование не настраиваю во избежание, так сказать (работаю на HSI). Или вы имеете в виду, что нужно проверить все регистры (сдампить, например) и если что-то включено, то отключить? 30 минут назад, quark сказал: Посмотреть, нет ли периферийных модулей, которые не включаются при старте по-умолчанию, но требуются для нормального перехода в спящий режим. Судя по китайскому описанию и его предтече от ST таких зависимостей я не нашёл. Для модулей SCB и PWR, непосредственно участвующих в переходе в состояние сна, битов управления их включением/выключением я вообще не нашёл. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
quark 48 11 февраля, 2023 Опубликовано 11 февраля, 2023 (изменено) · Жалоба 21 минуту назад, makc сказал: Что значит "без моего ведома"? Этот пример уже приводил в теме, на которую была ссылка выше. У PIC-ов, в младших моделях, по умолчанию, включается компаратор при старте. Без вашего ведома. Уверены, что в вашем МК нет чего-то подобного? 21 минуту назад, makc сказал: Судя по китайскому описанию и его предтече от ST таких зависимостей я не нашёл. Для модулей SCB и PWR, непосредственно участвующих в переходе в состояние сна, битов управления их включением/выключением я вообще не нашёл. Если полная и внятная документация отсутствует, то придется проверить все периферийные модули подряд. Вручную. P.S. Сочувствую... У Вас есть более конструктивный план? ))) Изменено 11 февраля, 2023 пользователем quark Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 187 11 февраля, 2023 Опубликовано 11 февраля, 2023 · Жалоба Может, еще биты FLITFEN и SRAMEN сбросить в 0 (они после сброса установлены)? Это в RCC->AHBENR. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 229 11 февраля, 2023 Опубликовано 11 февраля, 2023 · Жалоба 2 минуты назад, Arlleex сказал: Может, еще биты FLITFEN и SRAMEN сбросить в 0 (они после сброса установлены)? Это в RCC->AHBENR. Можно попробовать, но токи порядка 170 мкА не похожи на потребление неактивного (без тактирования) флеша или статической памяти. 21 минуту назад, quark сказал: Уверены, что в вашем МК нет чего-то подобного? Не уверен, но проверил по описанию, что аналоговые блоки должны быть выключены, хотя специально я их не отключал. 23 минуты назад, quark сказал: Если полная и внятная документация отсутствует, то придется проверить все периферийные модули подряд. Вручную. Я уже проходил через такое и второй раз не хочется, честно говоря. И, надеюсь, не придется. ;-) 24 минуты назад, quark сказал: P.S. Сочувствую... У Вас есть более конструктивный план? ))) Пока нет, собираю ваши предложения и думаю, что это ещё может быть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
quark 48 11 февраля, 2023 Опубликовано 11 февраля, 2023 · Жалоба 10 минут назад, makc сказал: Не уверен, но проверил по описанию, что аналоговые блоки должны быть выключены, хотя специально я их не отключал. В нормальной документации, обычно, приводится состояние управляющих регистров модуля при старте и после всяких сбросов. Нужно убедиться по состоянию этих регистров, что модуль действительно точно выключен. Если в документации этого нет, то после старта считайте состояние этих регистров и выведите куда-нибудь для просмотра. Наихудший вариант, когда состояние регистров неопределено. Через раз - то так, то этак. Но это редкость. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться