Conversation
| mcu_poweron_reason = MCU_POWERON_REASON_POWER_ON; | ||
| } | ||
|
|
||
| PWR->CR4 |= PWR_CR4_VBRS; // enable 1.5 kOhm internal resistor for charging over VBAT |
There was a problem hiding this comment.
Это же никак не связано с poweron_reason, давай алгоритм заряда в отдельный файл
| @@ -1,3 +1,9 @@ | |||
| wb-ec-firmware (2.1.2) stable; urgency=medium | |||
There was a problem hiding this comment.
2.2.0, плюс надо вытащить Vbat в карту регистров
| macro(ADC_VBAT, 7, GPIOA, 7, 10, 200.0 / 100.0 ) \ | ||
| macro(ADC_HW_VER, 17, GPIOA, 13, 50, 1 ) \ | ||
| macro(ADC_INT_VREF, 13, ADC_NO_GPIO_PIN, ADC_NO_GPIO_PIN, 50, 1 ) \ | ||
| macro(ADC_INT_VBAT, 14, ADC_NO_GPIO_PIN, ADC_NO_GPIO_PIN, 10, 3.0 ) \ |
There was a problem hiding this comment.
Надо хорошо подумать про спящие режимы. Измерение Vbat же подключает делитель, т.е. разряжает батарейку? В спящем режиме как это работает? По идее работать не должно. Актуально, только когда включено питание
There was a problem hiding this comment.
И кстати, можно ещё подумать над тем, чтобы измерение Vbat делать редко, чтобы не разряжать батарейку, посмотри MWAC для примера, там вроде было что-то такое
|
|
||
| void mcu_check_vbat_do_periodic_work(void) | ||
| { | ||
| if (PWR->CR4 & PWR_CR4_VBE) { |
There was a problem hiding this comment.
Статус алгоритма (идет/не идет заряд) тоже надо бы вытащить в карту регистров
Что происходит; кому и зачем нужно:
Согласно схеме у нас на диоде падает напряжение с 3,3 до 2,6В, это напряжение не может заряжать мелкий часовой аккум. Решили включать дополнительно зарядку с помощью VBAT с самой стмки. Заряжает через внутренний 1,5 кОм резистор (есть еще 5 кОм, но т.к. у нас последовательно стоит еще 3 кОм, то 1,5 оптимально). Алгоритм простой: проверяем напряжение на пине VBAT, если меньше 3В, то включаем зарядку на двое суток (ток мелкий + особенности аккума), периодически повторяем.
Что поменялось для пользователей:
часовой аккум будет подзаряжаться
Как проверял/а:
Проверка должна быть добавлена в таблицу Проверка устройств
на столе осциллом
Покрыл/а изменения юниттестом и если нет, то почему:
См. Юнит-тесты модулей прошивок микроконтроллеров
не требуется